Merge remote-tracking branch 'upstream/master' into no-authority-header-in-cronet
diff --git a/Makefile b/Makefile
index 5805e57..5b0dc44 100644
--- a/Makefile
+++ b/Makefile
@@ -7015,6 +7015,7 @@
     test/core/end2end/tests/simple_request.c \
     test/core/end2end/tests/streaming_error_response.c \
     test/core/end2end/tests/trailing_metadata.c \
+    test/core/end2end/tests/authority_not_supported.c \
 
 PUBLIC_HEADERS_C += \
 
@@ -7099,6 +7100,7 @@
     test/core/end2end/tests/simple_request.c \
     test/core/end2end/tests/streaming_error_response.c \
     test/core/end2end/tests/trailing_metadata.c \
+    test/core/end2end/tests/authority_not_supported.c \
 
 PUBLIC_HEADERS_C += \
 
diff --git a/src/core/ext/transport/cronet/transport/cronet_transport.c b/src/core/ext/transport/cronet/transport/cronet_transport.c
index 1e5377c..2ab9a8c 100644
--- a/src/core/ext/transport/cronet/transport/cronet_transport.c
+++ b/src/core/ext/transport/cronet/transport/cronet_transport.c
@@ -610,6 +610,16 @@
   return length;
 }
 
+static bool header_has_authority(grpc_linked_mdelem *head) {
+  while (head != NULL) {
+    if (head->md->key == GRPC_MDSTR_AUTHORITY) {
+      return true;
+    }
+    head = head->next;
+  }
+  return false;
+}
+
 /*
   Op Execution: Decide if one of the actions contained in the stream op can be
   executed. This is the heart of the state machine.
@@ -981,11 +991,18 @@
   } else if (stream_op->on_complete &&
              op_can_be_run(stream_op, stream_state, &oas->state,
                            OP_ON_COMPLETE)) {
-    /* All actions in this stream_op are complete. Call the on_complete callback
-     */
     CRONET_LOG(GPR_DEBUG, "running: %p  OP_ON_COMPLETE", oas);
-    grpc_exec_ctx_sched(exec_ctx, stream_op->on_complete, GRPC_ERROR_NONE,
-                        NULL);
+    if (stream_state->state_op_done[OP_CANCEL_ERROR] ||
+        stream_state->state_callback_received[OP_FAILED]) {
+      grpc_exec_ctx_sched(exec_ctx, stream_op->on_complete,
+                          GRPC_ERROR_CANCELLED, NULL);
+    } else {
+      /* All actions in this stream_op are complete. Call the on_complete
+       * callback
+       */
+      grpc_exec_ctx_sched(exec_ctx, stream_op->on_complete, GRPC_ERROR_NONE,
+                          NULL);
+    }
     oas->state.state_op_done[OP_ON_COMPLETE] = true;
     oas->done = true;
     /* reset any send message state, only if this ON_COMPLETE is about a send.
@@ -1042,7 +1059,31 @@
   s->curr_gs = gs;
   memcpy(&s->curr_ct, gt, sizeof(grpc_cronet_transport));
   add_to_storage(s, op);
-  execute_from_storage(s);
+  if (op->send_initial_metadata &&
+      header_has_authority(op->send_initial_metadata->list.head)) {
+    /* Cronet does not support :authority header field. We cancel the call when
+       this field is present in metadata */
+    cronet_bidirectional_stream_header_array header_array;
+    cronet_bidirectional_stream_header *header;
+    cronet_bidirectional_stream cbs;
+    CRONET_LOG(GPR_DEBUG,
+               ":authority header is provided but not supported;"
+               " cancel operations");
+    /* Notify application that operation is cancelled by forging trailers */
+    header_array.count = 1;
+    header_array.capacity = 1;
+    header_array.headers =
+        gpr_malloc(sizeof(cronet_bidirectional_stream_header));
+    header = (cronet_bidirectional_stream_header *)header_array.headers;
+    header->key = "grpc-status";
+    header->value = "1"; /* Return status GRPC_STATUS_CANCELLED */
+    cbs.annotation = (void *)s;
+    s->state.state_op_done[OP_CANCEL_ERROR] = true;
+    on_response_trailers_received(&cbs, &header_array);
+    gpr_free(header_array.headers);
+  } else {
+    execute_from_storage(s);
+  }
 }
 
 static void destroy_stream(grpc_exec_ctx *exec_ctx, grpc_transport *gt,
diff --git a/test/core/end2end/end2end_nosec_tests.c b/test/core/end2end/end2end_nosec_tests.c
index caaa97c..892b2f0 100644
--- a/test/core/end2end/end2end_nosec_tests.c
+++ b/test/core/end2end/end2end_nosec_tests.c
@@ -131,6 +131,8 @@
 extern void streaming_error_response_pre_init(void);
 extern void trailing_metadata(grpc_end2end_test_config config);
 extern void trailing_metadata_pre_init(void);
+extern void authority_not_supported(grpc_end2end_test_config config);
+extern void authority_not_supported_pre_init(void);
 
 void grpc_end2end_tests_pre_init(void) {
   GPR_ASSERT(!g_pre_init_called);
@@ -179,6 +181,7 @@
   simple_request_pre_init();
   streaming_error_response_pre_init();
   trailing_metadata_pre_init();
+  authority_not_supported_pre_init();
 }
 
 void grpc_end2end_tests(int argc, char **argv,
@@ -232,6 +235,7 @@
     simple_request(config);
     streaming_error_response(config);
     trailing_metadata(config);
+    authority_not_supported(config);
     return;
   }
 
@@ -412,6 +416,10 @@
       trailing_metadata(config);
       continue;
     }
+    if (0 == strcmp("authority_not_supported", argv[i])) {
+      authority_not_supported(config);
+      continue;
+    }
     gpr_log(GPR_DEBUG, "not a test: '%s'", argv[i]);
     abort();
   }
diff --git a/test/core/end2end/end2end_tests.c b/test/core/end2end/end2end_tests.c
index 6d17e68..616bccf 100644
--- a/test/core/end2end/end2end_tests.c
+++ b/test/core/end2end/end2end_tests.c
@@ -133,6 +133,8 @@
 extern void streaming_error_response_pre_init(void);
 extern void trailing_metadata(grpc_end2end_test_config config);
 extern void trailing_metadata_pre_init(void);
+extern void authority_not_supported(grpc_end2end_test_config config);
+extern void authority_not_supported_pre_init(void);
 
 void grpc_end2end_tests_pre_init(void) {
   GPR_ASSERT(!g_pre_init_called);
@@ -182,6 +184,7 @@
   simple_request_pre_init();
   streaming_error_response_pre_init();
   trailing_metadata_pre_init();
+  authority_not_supported_pre_init();
 }
 
 void grpc_end2end_tests(int argc, char **argv,
@@ -236,6 +239,7 @@
     simple_request(config);
     streaming_error_response(config);
     trailing_metadata(config);
+    authority_not_supported(config);
     return;
   }
 
@@ -420,6 +424,10 @@
       trailing_metadata(config);
       continue;
     }
+    if (0 == strcmp("authority_not_supported", argv[i])) {
+      authority_not_supported(config);
+      continue;
+    }
     gpr_log(GPR_DEBUG, "not a test: '%s'", argv[i]);
     abort();
   }
diff --git a/test/core/end2end/gen_build_yaml.py b/test/core/end2end/gen_build_yaml.py
index 26eee93..5f54b82 100755
--- a/test/core/end2end/gen_build_yaml.py
+++ b/test/core/end2end/gen_build_yaml.py
@@ -141,6 +141,7 @@
     'simple_request': default_test_options,
     'streaming_error_response': default_test_options,
     'trailing_metadata': default_test_options,
+    'authority_not_supported': default_test_options,
 }
 
 
diff --git a/test/core/end2end/tests/authority_not_supported.c b/test/core/end2end/tests/authority_not_supported.c
new file mode 100644
index 0000000..632eaf8
--- /dev/null
+++ b/test/core/end2end/tests/authority_not_supported.c
@@ -0,0 +1,193 @@
+/*
+ *
+ * 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/end2end/end2end_tests.h"
+
+#include <stdio.h>
+#include <string.h>
+
+#include <grpc/byte_buffer.h>
+#include <grpc/support/alloc.h>
+#include <grpc/support/log.h>
+#include <grpc/support/time.h>
+#include <grpc/support/useful.h>
+#include "test/core/end2end/cq_verifier.h"
+
+static void *tag(intptr_t t) { return (void *)t; }
+
+static grpc_end2end_test_fixture begin_test(grpc_end2end_test_config config,
+                                            const char *test_name,
+                                            grpc_channel_args *client_args,
+                                            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);
+  config.init_server(&f, server_args);
+  config.init_client(&f, client_args);
+  return f;
+}
+
+static gpr_timespec n_seconds_time(int n) {
+  return GRPC_TIMEOUT_SECONDS_TO_DEADLINE(n);
+}
+
+static gpr_timespec five_seconds_time(void) { return n_seconds_time(5); }
+
+static void drain_cq(grpc_completion_queue *cq) {
+  grpc_event ev;
+  do {
+    ev = grpc_completion_queue_next(cq, five_seconds_time(), NULL);
+  } while (ev.type != GRPC_QUEUE_SHUTDOWN);
+}
+
+static void shutdown_server(grpc_end2end_test_fixture *f) {
+  if (!f->server) return;
+  grpc_server_shutdown_and_notify(f->server, f->cq, tag(1000));
+  GPR_ASSERT(grpc_completion_queue_pluck(
+                 f->cq, tag(1000), GRPC_TIMEOUT_SECONDS_TO_DEADLINE(5), NULL)
+                 .type == GRPC_OP_COMPLETE);
+  grpc_server_destroy(f->server);
+  f->server = NULL;
+}
+
+static void shutdown_client(grpc_end2end_test_fixture *f) {
+  if (!f->client) return;
+  grpc_channel_destroy(f->client);
+  f->client = NULL;
+}
+
+static void end_test(grpc_end2end_test_fixture *f) {
+  shutdown_server(f);
+  shutdown_client(f);
+
+  grpc_completion_queue_shutdown(f->cq);
+  drain_cq(f->cq);
+  grpc_completion_queue_destroy(f->cq);
+}
+
+/* Request/response with metadata and payload.*/
+static void test_with_authority_header(grpc_end2end_test_config config) {
+  grpc_call *c;
+  gpr_slice request_payload_slice = gpr_slice_from_copied_string("hello world");
+  grpc_byte_buffer *request_payload =
+      grpc_raw_byte_buffer_create(&request_payload_slice, 1);
+  gpr_timespec deadline = five_seconds_time();
+  grpc_metadata meta_c[2] = {
+      {"key1", "val1", 4, 0, {{NULL, NULL, NULL, NULL}}},
+      {"key2", "val2", 4, 0, {{NULL, NULL, NULL, NULL}}}};
+  grpc_end2end_test_fixture f =
+      begin_test(config, "test_with_authority_header", NULL, NULL);
+  cq_verifier *cqv = cq_verifier_create(f.cq);
+  grpc_op ops[6];
+  grpc_op *op;
+  grpc_metadata_array initial_metadata_recv;
+  grpc_metadata_array trailing_metadata_recv;
+  grpc_byte_buffer *response_payload_recv = NULL;
+  grpc_status_code status;
+  grpc_call_error error;
+  char *details = NULL;
+  size_t details_capacity = 0;
+
+  c = grpc_channel_create_call(f.client, NULL, GRPC_PROPAGATE_DEFAULTS, f.cq,
+                               "/foo", "foo.test.google.fr", deadline, NULL);
+  GPR_ASSERT(c);
+
+  grpc_metadata_array_init(&initial_metadata_recv);
+  grpc_metadata_array_init(&trailing_metadata_recv);
+
+  memset(ops, 0, sizeof(ops));
+  op = ops;
+  op->op = GRPC_OP_SEND_INITIAL_METADATA;
+  op->data.send_initial_metadata.count = 2;
+  op->data.send_initial_metadata.metadata = meta_c;
+  op->flags = 0;
+  op->reserved = NULL;
+  op++;
+  op->op = GRPC_OP_SEND_MESSAGE;
+  op->data.send_message = request_payload;
+  op->flags = 0;
+  op->reserved = NULL;
+  op++;
+  op->op = GRPC_OP_SEND_CLOSE_FROM_CLIENT;
+  op->flags = 0;
+  op->reserved = NULL;
+  op++;
+  op->op = GRPC_OP_RECV_INITIAL_METADATA;
+  op->data.recv_initial_metadata = &initial_metadata_recv;
+  op->flags = 0;
+  op->reserved = NULL;
+  op++;
+  op->op = GRPC_OP_RECV_MESSAGE;
+  op->data.recv_message = &response_payload_recv;
+  op->flags = 0;
+  op->reserved = NULL;
+  op++;
+  op->op = GRPC_OP_RECV_STATUS_ON_CLIENT;
+  op->data.recv_status_on_client.trailing_metadata = &trailing_metadata_recv;
+  op->data.recv_status_on_client.status = &status;
+  op->data.recv_status_on_client.status_details = &details;
+  op->data.recv_status_on_client.status_details_capacity = &details_capacity;
+  op->flags = 0;
+  op->reserved = NULL;
+  op++;
+  error = grpc_call_start_batch(c, ops, (size_t)(op - ops), tag(1), NULL);
+  GPR_ASSERT(GRPC_CALL_OK == error);
+
+  CQ_EXPECT_COMPLETION(cqv, tag(1), 1);
+  cq_verify(cqv);
+
+  GPR_ASSERT(status == GRPC_STATUS_CANCELLED);
+
+  gpr_free(details);
+  grpc_metadata_array_destroy(&initial_metadata_recv);
+  grpc_metadata_array_destroy(&trailing_metadata_recv);
+
+  grpc_call_destroy(c);
+
+  cq_verifier_destroy(cqv);
+
+  grpc_byte_buffer_destroy(request_payload);
+  grpc_byte_buffer_destroy(response_payload_recv);
+
+  end_test(&f);
+  config.tear_down_data(&f);
+}
+
+void authority_not_supported(grpc_end2end_test_config config) {
+  if (config.feature_mask & FEATURE_MASK_SUPPORTS_AUTHORITY_HEADER) {
+    return;
+  }
+  test_with_authority_header(config);
+}
+
+void authority_not_supported_pre_init(void) {}
diff --git a/tools/run_tests/tests.json b/tools/run_tests/tests.json
index e24c0b3..47df78e 100644
--- a/tools/run_tests/tests.json
+++ b/tools/run_tests/tests.json
@@ -6014,6 +6014,28 @@
   }, 
   {
     "args": [
+      "authority_not_supported"
+    ],    
+    "ci_platforms": [
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
+    ],    
+    "cpu_cost": 1.0,  
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c",  
+    "name": "h2_census_test", 
+    "platforms": [
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
+    ]
+  },
+  {
+    "args": [
       "bad_hostname"
     ], 
     "ci_platforms": [
@@ -7051,6 +7073,28 @@
   }, 
   {
     "args": [
+      "authority_not_supported"
+    ],
+    "ci_platforms": [
+      "windows",
+      "linux",
+      "mac",
+      "posix"
+    ],
+    "cpu_cost": 1.0,
+    "exclude_configs": [],
+    "flaky": false,
+    "language": "c",
+    "name": "h2_compress_test",
+    "platforms": [
+      "windows",
+      "linux",
+      "mac",
+      "posix"
+    ]
+  },
+  {
+    "args": [
       "bad_hostname"
     ], 
     "ci_platforms": [
@@ -8043,6 +8087,27 @@
   }, 
   {
     "args": [
+      "authority_not_supported"
+    ],
+    "ci_platforms": [
+      "windows",
+      "linux",
+      "posix"
+    ],
+    "cpu_cost": 1.0,
+    "exclude_configs": [],
+    "flaky": false,
+    "language": "c",
+    "name": "h2_fakesec_test",
+    "platforms": [
+      "windows",
+      "linux",
+      "mac",
+      "posix"
+    ]
+  },
+  {
+    "args": [
       "bad_hostname"
     ], 
     "ci_platforms": [
@@ -8963,6 +9028,26 @@
   }, 
   {
     "args": [
+      "authority_not_supported"
+    ],
+    "ci_platforms": [
+      "linux",
+      "mac",
+      "posix"
+    ],
+    "cpu_cost": 1.0,
+    "exclude_configs": [],
+    "flaky": false,
+    "language": "c",
+    "name": "h2_fd_test",
+    "platforms": [
+      "linux",
+      "mac",
+      "posix"
+    ]
+  },
+  {
+    "args": [
       "bad_hostname"
     ], 
     "ci_platforms": [
@@ -10000,6 +10085,28 @@
   }, 
   {
     "args": [
+      "authority_not_supported"
+    ],
+    "ci_platforms": [
+      "windows",
+      "linux",
+      "mac",
+      "posix"
+    ],
+    "cpu_cost": 1.0,
+    "exclude_configs": [],
+    "flaky": false,
+    "language": "c",
+    "name": "h2_full_test",
+    "platforms": [
+      "windows",
+      "linux",
+      "mac",
+      "posix"
+    ]
+  },
+  {
+    "args": [
       "bad_hostname"
     ], 
     "ci_platforms": [
@@ -10855,6 +10962,22 @@
   }, 
   {
     "args": [
+      "authority_not_supported"
+    ],
+    "ci_platforms": [
+      "linux"
+    ],
+    "cpu_cost": 1.0,
+    "exclude_configs": [],
+    "flaky": false,
+    "language": "c",
+    "name": "h2_full+pipe_test",
+    "platforms": [
+      "linux"
+    ]
+  },
+  {
+    "args": [
       "bad_hostname"
     ], 
     "ci_platforms": [
@@ -11846,6 +11969,28 @@
   }, 
   {
     "args": [
+      "authority_not_supported"
+    ],
+    "ci_platforms": [
+      "windows",
+      "linux",
+      "mac",
+      "posix"
+    ],
+    "cpu_cost": 1.0,
+    "exclude_configs": [],
+    "flaky": false,
+    "language": "c",
+    "name": "h2_full+trace_test",
+    "platforms": [
+      "windows",
+      "linux",
+      "mac",
+      "posix"
+    ]
+  },
+  {
+    "args": [
       "bad_hostname"
     ], 
     "ci_platforms": [
@@ -12926,6 +13071,27 @@
   }, 
   {
     "args": [
+      "authority_not_supported"
+    ],
+    "ci_platforms": [
+      "windows",
+      "linux",
+      "posix"
+    ],
+    "cpu_cost": 1.0,
+    "exclude_configs": [],
+    "flaky": false,
+    "language": "c",
+    "name": "h2_http_proxy_test",
+    "platforms": [
+      "windows",
+      "linux",
+      "mac",
+      "posix"
+    ]
+  },
+  {
+    "args": [
       "bad_hostname"
     ], 
     "ci_platforms": [
@@ -13963,6 +14129,28 @@
   }, 
   {
     "args": [
+      "authority_not_supported"
+    ],
+    "ci_platforms": [
+      "windows",
+      "linux",
+      "mac",
+      "posix"
+    ],
+    "cpu_cost": 1.0,
+    "exclude_configs": [],
+    "flaky": false,
+    "language": "c",
+    "name": "h2_load_reporting_test",
+    "platforms": [
+      "windows",
+      "linux",
+      "mac",
+      "posix"
+    ]
+  },
+  {
+    "args": [
       "bad_hostname"
     ], 
     "ci_platforms": [
@@ -15043,6 +15231,27 @@
   }, 
   {
     "args": [
+      "authority_not_supported"
+    ],
+    "ci_platforms": [
+      "windows",
+      "linux",
+      "posix"
+    ],
+    "cpu_cost": 1.0,
+    "exclude_configs": [],
+    "flaky": false,
+    "language": "c",
+    "name": "h2_oauth2_test",
+    "platforms": [
+      "windows",
+      "linux",
+      "mac",
+      "posix"
+    ]
+  },
+  {
+    "args": [
       "bad_hostname"
     ], 
     "ci_platforms": [
@@ -15955,6 +16164,27 @@
   }, 
   {
     "args": [
+      "authority_not_supported"
+    ],
+    "ci_platforms": [
+      "windows",
+      "linux",
+      "posix"
+    ],
+    "cpu_cost": 1.0,
+    "exclude_configs": [],
+    "flaky": false,
+    "language": "c",
+    "name": "h2_proxy_test",
+    "platforms": [
+      "windows",
+      "linux",
+      "mac",
+      "posix"
+    ]
+  },
+  {
+    "args": [
       "bad_hostname"
     ], 
     "ci_platforms": [
@@ -16915,6 +17145,27 @@
   }, 
   {
     "args": [
+      "authority_not_supported"
+    ],
+    "ci_platforms": [
+      "windows",
+      "linux",
+      "posix"
+    ],
+    "cpu_cost": 1.0,
+    "exclude_configs": [],
+    "flaky": false,
+    "language": "c",
+    "name": "h2_sockpair_test",
+    "platforms": [
+      "windows",
+      "linux",
+      "mac",
+      "posix"
+    ]
+  },
+  {
+    "args": [
       "bad_hostname"
     ], 
     "ci_platforms": [
@@ -17803,6 +18054,27 @@
   }, 
   {
     "args": [
+      "authority_not_supported"
+    ],
+    "ci_platforms": [
+      "windows",
+      "linux",
+      "posix"
+    ],
+    "cpu_cost": 1.0,
+    "exclude_configs": [],
+    "flaky": false,
+    "language": "c",
+    "name": "h2_sockpair+trace_test",
+    "platforms": [
+      "windows",
+      "linux",
+      "mac",
+      "posix"
+    ]
+  },
+  {
+    "args": [
       "bad_hostname"
     ], 
     "ci_platforms": [
@@ -18817,6 +19089,27 @@
   }, 
   {
     "args": [
+      "authority_not_supported"
+    ],
+    "ci_platforms": [
+      "windows",
+      "linux",
+      "posix"
+    ],
+    "cpu_cost": 1.0,
+    "exclude_configs": [],
+    "flaky": false,
+    "language": "c",
+    "name": "h2_sockpair_1byte_test",
+    "platforms": [
+      "windows",
+      "linux",
+      "mac",
+      "posix"
+    ]
+  },
+  {
+    "args": [
       "bad_hostname"
     ], 
     "ci_platforms": [
@@ -19854,6 +20147,28 @@
   }, 
   {
     "args": [
+      "authority_not_supported"
+    ],
+    "ci_platforms": [
+      "windows",
+      "linux",
+      "mac",
+      "posix"
+    ],
+    "cpu_cost": 1.0,
+    "exclude_configs": [],
+    "flaky": false,
+    "language": "c",
+    "name": "h2_ssl_test",
+    "platforms": [
+      "windows",
+      "linux",
+      "mac",
+      "posix"
+    ]
+  },
+  {
+    "args": [
       "bad_hostname"
     ], 
     "ci_platforms": [
@@ -20891,6 +21206,28 @@
   }, 
   {
     "args": [
+      "authority_not_supported"
+    ],
+    "ci_platforms": [
+      "windows",
+      "linux",
+      "mac",
+      "posix"
+    ],
+    "cpu_cost": 1.0,
+    "exclude_configs": [],
+    "flaky": false,
+    "language": "c",
+    "name": "h2_ssl_cert_test",
+    "platforms": [
+      "windows",
+      "linux",
+      "mac",
+      "posix"
+    ]
+  },
+  {
+    "args": [
       "bad_hostname"
     ], 
     "ci_platforms": [
@@ -21803,6 +22140,27 @@
   }, 
   {
     "args": [
+      "authority_not_supported"
+    ],
+    "ci_platforms": [
+      "windows",
+      "linux",
+      "posix"
+    ],
+    "cpu_cost": 1.0,
+    "exclude_configs": [],
+    "flaky": false,
+    "language": "c",
+    "name": "h2_ssl_proxy_test",
+    "platforms": [
+      "windows",
+      "linux",
+      "mac",
+      "posix"
+    ]
+  },
+  {
+    "args": [
       "bad_hostname"
     ], 
     "ci_platforms": [
@@ -22815,6 +23173,26 @@
   }, 
   {
     "args": [
+      "authority_not_supported"
+    ],
+    "ci_platforms": [
+      "linux",
+      "mac",
+      "posix"
+    ],
+    "cpu_cost": 1.0,
+    "exclude_configs": [],
+    "flaky": false,
+    "language": "c",
+    "name": "h2_uds_test",
+    "platforms": [
+      "linux",
+      "mac",
+      "posix"
+    ]
+  },
+  {
+    "args": [
       "bad_hostname"
     ], 
     "ci_platforms": [
@@ -23829,6 +24207,28 @@
   }, 
   {
     "args": [
+      "authority_not_supported"
+    ],
+    "ci_platforms": [
+      "windows",
+      "linux",
+      "mac",
+      "posix"
+    ],
+    "cpu_cost": 1.0,
+    "exclude_configs": [],
+    "flaky": false,
+    "language": "c",
+    "name": "h2_census_nosec_test",
+    "platforms": [
+      "windows",
+      "linux",
+      "mac",
+      "posix"
+    ]
+  },
+  {
+    "args": [
       "bad_hostname"
     ], 
     "ci_platforms": [
@@ -24843,6 +25243,28 @@
   }, 
   {
     "args": [
+      "authority_not_supported"
+    ],
+    "ci_platforms": [
+      "windows",
+      "linux",
+      "mac",
+      "posix"
+    ],
+    "cpu_cost": 1.0,
+    "exclude_configs": [],
+    "flaky": false,
+    "language": "c",
+    "name": "h2_compress_nosec_test",
+    "platforms": [
+      "windows",
+      "linux",
+      "mac",
+      "posix"
+    ]
+  },
+  {
+    "args": [
       "bad_hostname"
     ], 
     "ci_platforms": [
@@ -25740,6 +26162,26 @@
   }, 
   {
     "args": [
+      "authority_not_supported"
+    ],
+    "ci_platforms": [
+      "linux",
+      "mac",
+      "posix"
+    ],
+    "cpu_cost": 1.0,
+    "exclude_configs": [],
+    "flaky": false,
+    "language": "c",
+    "name": "h2_fd_nosec_test",
+    "platforms": [
+      "linux",
+      "mac",
+      "posix"
+    ]
+  },
+  {
+    "args": [
       "bad_hostname"
     ], 
     "ci_platforms": [
@@ -26754,6 +27196,28 @@
   }, 
   {
     "args": [
+      "authority_not_supported"
+    ],
+    "ci_platforms": [
+      "windows",
+      "linux",
+      "mac",
+      "posix"
+    ],
+    "cpu_cost": 1.0,
+    "exclude_configs": [],
+    "flaky": false,
+    "language": "c",
+    "name": "h2_full_nosec_test",
+    "platforms": [
+      "windows",
+      "linux",
+      "mac",
+      "posix"
+    ]
+  },
+  {
+    "args": [
       "bad_hostname"
     ], 
     "ci_platforms": [
@@ -27590,6 +28054,22 @@
   }, 
   {
     "args": [
+      "authority_not_supported"
+    ],
+    "ci_platforms": [
+      "linux"
+    ],
+    "cpu_cost": 1.0,
+    "exclude_configs": [],
+    "flaky": false,
+    "language": "c",
+    "name": "h2_full+pipe_nosec_test",
+    "platforms": [
+      "linux"
+    ]
+  },
+  {
+    "args": [
       "bad_hostname"
     ], 
     "ci_platforms": [
@@ -28558,6 +29038,28 @@
   }, 
   {
     "args": [
+      "authority_not_supported"
+    ],
+    "ci_platforms": [
+      "windows",
+      "linux",
+      "mac",
+      "posix"
+    ],
+    "cpu_cost": 1.0,
+    "exclude_configs": [],
+    "flaky": false,
+    "language": "c",
+    "name": "h2_full+trace_nosec_test",
+    "platforms": [
+      "windows",
+      "linux",
+      "mac",
+      "posix"
+    ]
+  },
+  {
+    "args": [
       "bad_hostname"
     ], 
     "ci_platforms": [
@@ -29614,6 +30116,27 @@
   }, 
   {
     "args": [
+      "authority_not_supported"
+    ],
+    "ci_platforms": [
+      "windows",
+      "linux",
+      "posix"
+    ],
+    "cpu_cost": 1.0,
+    "exclude_configs": [],
+    "flaky": false,
+    "language": "c",
+    "name": "h2_http_proxy_nosec_test",
+    "platforms": [
+      "windows",
+      "linux",
+      "mac",
+      "posix"
+    ]
+  },
+  {
+    "args": [
       "bad_hostname"
     ], 
     "ci_platforms": [
@@ -30628,6 +31151,28 @@
   }, 
   {
     "args": [
+      "authority_not_supported"
+    ],
+    "ci_platforms": [
+      "windows",
+      "linux",
+      "mac",
+      "posix"
+    ],
+    "cpu_cost": 1.0,
+    "exclude_configs": [],
+    "flaky": false,
+    "language": "c",
+    "name": "h2_load_reporting_nosec_test",
+    "platforms": [
+      "windows",
+      "linux",
+      "mac",
+      "posix"
+    ]
+  },
+  {
+    "args": [
       "bad_hostname"
     ], 
     "ci_platforms": [
@@ -31516,6 +32061,27 @@
   }, 
   {
     "args": [
+      "authority_not_supported"
+    ],
+    "ci_platforms": [
+      "windows",
+      "linux",
+      "posix"
+    ],
+    "cpu_cost": 1.0,
+    "exclude_configs": [],
+    "flaky": false,
+    "language": "c",
+    "name": "h2_proxy_nosec_test",
+    "platforms": [
+      "windows",
+      "linux",
+      "mac",
+      "posix"
+    ]
+  },
+  {
+    "args": [
       "bad_hostname"
     ], 
     "ci_platforms": [
@@ -32452,6 +33018,27 @@
   }, 
   {
     "args": [
+      "authority_not_supported"
+    ],
+    "ci_platforms": [
+      "windows",
+      "linux",
+      "posix"
+    ],
+    "cpu_cost": 1.0,
+    "exclude_configs": [],
+    "flaky": false,
+    "language": "c",
+    "name": "h2_sockpair_nosec_test",
+    "platforms": [
+      "windows",
+      "linux",
+      "mac",
+      "posix"
+    ]
+  },
+  {
+    "args": [
       "bad_hostname"
     ], 
     "ci_platforms": [
@@ -33316,6 +33903,27 @@
   }, 
   {
     "args": [
+      "authority_not_supported"
+    ],
+    "ci_platforms": [
+      "windows",
+      "linux",
+      "posix"
+    ],
+    "cpu_cost": 1.0,
+    "exclude_configs": [],
+    "flaky": false,
+    "language": "c",
+    "name": "h2_sockpair+trace_nosec_test",
+    "platforms": [
+      "windows",
+      "linux",
+      "mac",
+      "posix"
+    ]
+  },
+  {
+    "args": [
       "bad_hostname"
     ], 
     "ci_platforms": [
@@ -34304,6 +34912,29 @@
   }, 
   {
     "args": [
+      "authority_not_supported"
+    ],
+    "ci_platforms": [
+      "windows",
+      "linux",
+      "posix"
+    ],
+    "cpu_cost": 1.0,
+    "exclude_configs": [
+      "msan"
+    ],
+    "flaky": false,
+    "language": "c",
+    "name": "h2_sockpair_1byte_nosec_test",
+    "platforms": [
+      "windows",
+      "linux",
+      "mac",
+      "posix"
+    ]
+  },
+  {
+    "args": [
       "bad_hostname"
     ], 
     "ci_platforms": [
@@ -35293,6 +35924,26 @@
   }, 
   {
     "args": [
+      "authority_not_supported"
+    ],
+    "ci_platforms": [
+      "linux",
+      "mac",
+      "posix"
+    ],
+    "cpu_cost": 1.0,
+    "exclude_configs": [],
+    "flaky": false,
+    "language": "c",
+    "name": "h2_uds_nosec_test",
+    "platforms": [
+      "linux",
+      "mac",
+      "posix"
+    ]
+  },
+  {
+    "args": [
       "--scenarios_json", 
       "{\"scenarios\": [{\"name\": \"cpp_generic_async_streaming_ping_pong_secure\", \"warmup_seconds\": 0, \"benchmark_seconds\": 1, \"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\": 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}]}"
     ],