diff options
38 files changed, 5021 insertions, 203 deletions
diff --git a/include/grpc++/channel_interface.h b/include/grpc++/channel_interface.h index 10fb9538bc..4176cded7b 100644 --- a/include/grpc++/channel_interface.h +++ b/include/grpc++/channel_interface.h @@ -36,6 +36,7 @@ #include <memory> +#include <grpc/grpc.h> #include <grpc++/status.h> #include <grpc++/impl/call.h> @@ -47,7 +48,6 @@ class CallOpBuffer; class ClientContext; class CompletionQueue; class RpcMethod; -class CallInterface; class ChannelInterface : public CallHook, public std::enable_shared_from_this<ChannelInterface> { @@ -57,6 +57,34 @@ class ChannelInterface : public CallHook, virtual void* RegisterMethod(const char* method_name) = 0; virtual Call CreateCall(const RpcMethod& method, ClientContext* context, CompletionQueue* cq) = 0; + + // Get the current channel state. If the channel is in IDLE and try_to_connect + // is set to true, try to connect. + virtual grpc_connectivity_state GetState(bool try_to_connect) = 0; + + // Return the tag on cq when the channel state is changed or deadline expires. + // GetState needs to called to get the current state. + template <typename T> + void NotifyOnStateChange(grpc_connectivity_state last_observed, T deadline, + CompletionQueue* cq, void* tag) { + TimePoint<T> deadline_tp(deadline); + NotifyOnStateChangeImpl(last_observed, deadline_tp.raw_time(), cq, tag); + } + + // Blocking wait for channel state change or deadline expiration. + // GetState needs to called to get the current state. + template <typename T> + bool WaitForStateChange(grpc_connectivity_state last_observed, T deadline) { + TimePoint<T> deadline_tp(deadline); + return WaitForStateChangeImpl(last_observed, deadline_tp.raw_time()); + } + + private: + virtual void NotifyOnStateChangeImpl(grpc_connectivity_state last_observed, + gpr_timespec deadline, + CompletionQueue* cq, void* tag) = 0; + virtual bool WaitForStateChangeImpl(grpc_connectivity_state last_observed, + gpr_timespec deadline) = 0; }; } // namespace grpc diff --git a/include/grpc++/stream.h b/include/grpc++/stream.h index 3903f2ec06..bc0c3c0f3b 100644 --- a/include/grpc++/stream.h +++ b/include/grpc++/stream.h @@ -54,7 +54,11 @@ class ClientStreamingInterface { // client side declares it has no more message to send, either implicitly or // by calling WritesDone, it needs to make sure there is no more message to // be received from the server, either implicitly or by getting a false from - // a Read(). Otherwise, this implicitly cancels the stream. + // a Read(). + // This function will return either: + // - when all incoming messages have been read and the server has returned + // status + // - OR when the server has returned a non-OK status virtual Status Finish() = 0; }; diff --git a/include/grpc/grpc_security.h b/include/grpc/grpc_security.h index ff84050c6d..640c1fda98 100644 --- a/include/grpc/grpc_security.h +++ b/include/grpc/grpc_security.h @@ -199,8 +199,6 @@ grpc_call_error grpc_call_set_credentials(grpc_call *call, /* --- Authentication Context. --- */ -/* TODO(jboeuf): Define some well-known property names. */ - #define GRPC_TRANSPORT_SECURITY_TYPE_PROPERTY_NAME "transport_security_type" #define GRPC_SSL_TRANSPORT_SECURITY_TYPE "ssl" @@ -255,6 +253,49 @@ grpc_auth_context *grpc_call_auth_context(grpc_call *call); /* Releases the auth context returned from grpc_call_auth_context. */ void grpc_auth_context_release(grpc_auth_context *context); +/* -- + The following auth context methods should only be called by a server metadata + processor to set properties extracted from auth metadata. + -- */ + +/* Add a property. */ +void grpc_auth_context_add_property(grpc_auth_context *ctx, const char *name, + const char *value, size_t value_length); + +/* Add a C string property. */ +void grpc_auth_context_add_cstring_property(grpc_auth_context *ctx, + const char *name, + const char *value); + +/* Sets the property name. Returns 1 if successful or 0 in case of failure + (which means that no property with this name exists). */ +int grpc_auth_context_set_peer_identity_property_name(grpc_auth_context *ctx, + const char *name); + +/* --- Auth Metadata Processing --- */ + +/* Callback function that is called when the metadata processing is done. + success is 1 if processing succeeded, 0 otherwise. + Consumed metadata will be removed from the set of metadata available on the + call. */ +typedef void (*grpc_process_auth_metadata_done_cb)( + void *user_data, const grpc_metadata *consumed_md, size_t num_consumed_md, + int success); + +/* Pluggable server-side metadata processor object. */ +typedef struct { + /* The context object is read/write: it contains the properties of the + channel peer and it is the job of the process function to augment it with + properties derived from the passed-in metadata. */ + void (*process)(void *state, grpc_auth_context *context, + const grpc_metadata *md, size_t md_count, + grpc_process_auth_metadata_done_cb cb, void *user_data); + void *state; +} grpc_auth_metadata_processor; + +void grpc_server_credentials_set_auth_metadata_processor( + grpc_server_credentials *creds, grpc_auth_metadata_processor processor); + #ifdef __cplusplus } #endif diff --git a/src/core/channel/compress_filter.c b/src/core/channel/compress_filter.c index 9fc8589fbb..8963c13b0f 100644 --- a/src/core/channel/compress_filter.c +++ b/src/core/channel/compress_filter.c @@ -204,7 +204,7 @@ static void process_send_ops(grpc_call_element *elem, } grpc_metadata_batch_add_tail( &(sop->data.metadata), &calld->compression_algorithm_storage, - grpc_mdelem_ref(channeld->mdelem_compression_algorithms + GRPC_MDELEM_REF(channeld->mdelem_compression_algorithms [calld->compression_algorithm])); calld->written_initial_metadata = 1; /* GPR_TRUE */ } @@ -295,7 +295,7 @@ static void init_channel_elem(grpc_channel_element *elem, grpc_channel *master, channeld->mdelem_compression_algorithms[algo_idx] = grpc_mdelem_from_metadata_strings( mdctx, - grpc_mdstr_ref(channeld->mdstr_outgoing_compression_algorithm_key), + GRPC_MDSTR_REF(channeld->mdstr_outgoing_compression_algorithm_key), grpc_mdstr_from_string(mdctx, algorithm_name, 0)); } @@ -307,11 +307,11 @@ static void destroy_channel_elem(grpc_channel_element *elem) { channel_data *channeld = elem->channel_data; grpc_compression_algorithm algo_idx; - grpc_mdstr_unref(channeld->mdstr_request_compression_algorithm_key); - grpc_mdstr_unref(channeld->mdstr_outgoing_compression_algorithm_key); + GRPC_MDSTR_UNREF(channeld->mdstr_request_compression_algorithm_key); + GRPC_MDSTR_UNREF(channeld->mdstr_outgoing_compression_algorithm_key); for (algo_idx = 0; algo_idx < GRPC_COMPRESS_ALGORITHMS_COUNT; ++algo_idx) { - grpc_mdelem_unref(channeld->mdelem_compression_algorithms[algo_idx]); + GRPC_MDELEM_UNREF(channeld->mdelem_compression_algorithms[algo_idx]); } } diff --git a/src/core/security/client_auth_filter.c b/src/core/security/client_auth_filter.c index e86b5430b2..e2d1b6fce9 100644 --- a/src/core/security/client_auth_filter.c +++ b/src/core/security/client_auth_filter.c @@ -77,10 +77,8 @@ typedef struct { static void bubble_up_error(grpc_call_element *elem, const char *error_msg) { call_data *calld = elem->call_data; - channel_data *chand = elem->channel_data; - grpc_transport_stream_op_add_cancellation( - &calld->op, GRPC_STATUS_UNAUTHENTICATED, - grpc_mdstr_from_string(chand->md_ctx, error_msg, 0)); + grpc_transport_stream_op_add_cancellation(&calld->op, + GRPC_STATUS_UNAUTHENTICATED); grpc_call_next_op(elem, &calld->op); } diff --git a/src/core/security/credentials.c b/src/core/security/credentials.c index 15268cefbe..2239f57378 100644 --- a/src/core/security/credentials.c +++ b/src/core/security/credentials.c @@ -149,6 +149,12 @@ grpc_security_status grpc_server_credentials_create_security_connector( return creds->vtable->create_security_connector(creds, sc); } +void grpc_server_credentials_set_auth_metadata_processor( + grpc_server_credentials *creds, grpc_auth_metadata_processor processor) { + if (creds == NULL) return; + creds->processor = processor; +} + /* -- Ssl credentials. -- */ static void ssl_destroy(grpc_credentials *creds) { @@ -765,19 +771,19 @@ grpc_credentials *grpc_refresh_token_credentials_create( grpc_auth_refresh_token_create_from_string(json_refresh_token)); } -/* -- Fake Oauth2 credentials. -- */ +/* -- Metadata-only credentials. -- */ -static void fake_oauth2_destroy(grpc_credentials *creds) { - grpc_fake_oauth2_credentials *c = (grpc_fake_oauth2_credentials *)creds; - grpc_credentials_md_store_unref(c->access_token_md); +static void md_only_test_destroy(grpc_credentials *creds) { + grpc_md_only_test_credentials *c = (grpc_md_only_test_credentials *)creds; + grpc_credentials_md_store_unref(c->md_store); gpr_free(c); } -static int fake_oauth2_has_request_metadata(const grpc_credentials *creds) { +static int md_only_test_has_request_metadata(const grpc_credentials *creds) { return 1; } -static int fake_oauth2_has_request_metadata_only( +static int md_only_test_has_request_metadata_only( const grpc_credentials *creds) { return 1; } @@ -785,19 +791,19 @@ static int fake_oauth2_has_request_metadata_only( void on_simulated_token_fetch_done(void *user_data, int success) { grpc_credentials_metadata_request *r = (grpc_credentials_metadata_request *)user_data; - grpc_fake_oauth2_credentials *c = (grpc_fake_oauth2_credentials *)r->creds; + grpc_md_only_test_credentials *c = (grpc_md_only_test_credentials *)r->creds; GPR_ASSERT(success); - r->cb(r->user_data, c->access_token_md->entries, - c->access_token_md->num_entries, GRPC_CREDENTIALS_OK); + r->cb(r->user_data, c->md_store->entries, + c->md_store->num_entries, GRPC_CREDENTIALS_OK); grpc_credentials_metadata_request_destroy(r); } -static void fake_oauth2_get_request_metadata(grpc_credentials *creds, +static void md_only_test_get_request_metadata(grpc_credentials *creds, grpc_pollset *pollset, const char *service_url, grpc_credentials_metadata_cb cb, void *user_data) { - grpc_fake_oauth2_credentials *c = (grpc_fake_oauth2_credentials *)creds; + grpc_md_only_test_credentials *c = (grpc_md_only_test_credentials *)creds; if (c->is_async) { grpc_credentials_metadata_request *cb_arg = @@ -806,26 +812,26 @@ static void fake_oauth2_get_request_metadata(grpc_credentials *creds, on_simulated_token_fetch_done, cb_arg); grpc_iomgr_add_callback(cb_arg->on_simulated_token_fetch_done_closure); } else { - cb(user_data, c->access_token_md->entries, 1, GRPC_CREDENTIALS_OK); + cb(user_data, c->md_store->entries, 1, GRPC_CREDENTIALS_OK); } } -static grpc_credentials_vtable fake_oauth2_vtable = { - fake_oauth2_destroy, fake_oauth2_has_request_metadata, - fake_oauth2_has_request_metadata_only, fake_oauth2_get_request_metadata, +static grpc_credentials_vtable md_only_test_vtable = { + md_only_test_destroy, md_only_test_has_request_metadata, + md_only_test_has_request_metadata_only, md_only_test_get_request_metadata, NULL}; -grpc_credentials *grpc_fake_oauth2_credentials_create( - const char *token_md_value, int is_async) { - grpc_fake_oauth2_credentials *c = - gpr_malloc(sizeof(grpc_fake_oauth2_credentials)); - memset(c, 0, sizeof(grpc_fake_oauth2_credentials)); +grpc_credentials *grpc_md_only_test_credentials_create(const char *md_key, + const char *md_value, + int is_async) { + grpc_md_only_test_credentials *c = + gpr_malloc(sizeof(grpc_md_only_test_credentials)); + memset(c, 0, sizeof(grpc_md_only_test_credentials)); c->base.type = GRPC_CREDENTIALS_TYPE_OAUTH2; - c->base.vtable = &fake_oauth2_vtable; + c->base.vtable = &md_only_test_vtable; gpr_ref_init(&c->base.refcount, 1); - c->access_token_md = grpc_credentials_md_store_create(1); - grpc_credentials_md_store_add_cstrings( - c->access_token_md, GRPC_AUTHORIZATION_METADATA_KEY, token_md_value); + c->md_store = grpc_credentials_md_store_create(1); + grpc_credentials_md_store_add_cstrings(c->md_store, md_key, md_value); c->is_async = is_async; return &c->base; } diff --git a/src/core/security/credentials.h b/src/core/security/credentials.h index 8d40da47c1..04736525dc 100644 --- a/src/core/security/credentials.h +++ b/src/core/security/credentials.h @@ -190,9 +190,10 @@ grpc_oauth2_token_fetcher_credentials_parse_server_response( grpc_credentials_md_store **token_md, gpr_timespec *token_lifetime); void grpc_flush_cached_google_default_credentials(void); -/* Simulates an oauth2 token fetch with the specified value for testing. */ -grpc_credentials *grpc_fake_oauth2_credentials_create( - const char *token_md_value, int is_async); +/* Metadata-only credentials with the specified key and value where + asynchronicity can be simulated for testing. */ +grpc_credentials *grpc_md_only_test_credentials_create( + const char *md_key, const char *md_value, int is_async); /* Private constructor for jwt credentials from an already parsed json key. Takes ownership of the key. */ @@ -216,6 +217,7 @@ typedef struct { struct grpc_server_credentials { const grpc_server_credentials_vtable *vtable; const char *type; + grpc_auth_metadata_processor processor; }; grpc_security_status grpc_server_credentials_create_security_connector( @@ -297,13 +299,13 @@ typedef struct { grpc_credentials_md_store *access_token_md; } grpc_access_token_credentials; -/* -- Fake Oauth2 credentials. -- */ +/* -- Metadata-only Test credentials. -- */ typedef struct { grpc_credentials base; - grpc_credentials_md_store *access_token_md; + grpc_credentials_md_store *md_store; int is_async; -} grpc_fake_oauth2_credentials; +} grpc_md_only_test_credentials; /* -- IAM credentials. -- */ diff --git a/src/core/security/security_connector.c b/src/core/security/security_connector.c index 726b4c1e12..a354536dcd 100644 --- a/src/core/security/security_connector.c +++ b/src/core/security/security_connector.c @@ -263,9 +263,9 @@ static grpc_security_status fake_check_peer(grpc_security_connector *sc, goto end; } GRPC_AUTH_CONTEXT_UNREF(sc->auth_context, "connector"); - sc->auth_context = grpc_auth_context_create(NULL, 1); - sc->auth_context->properties[0] = grpc_auth_property_init_from_cstring( - GRPC_TRANSPORT_SECURITY_TYPE_PROPERTY_NAME, + sc->auth_context = grpc_auth_context_create(NULL); + grpc_auth_context_add_cstring_property( + sc->auth_context, GRPC_TRANSPORT_SECURITY_TYPE_PROPERTY_NAME, GRPC_FAKE_TRANSPORT_SECURITY_TYPE); end: @@ -409,31 +409,35 @@ static int ssl_host_matches_name(const tsi_peer *peer, const char *peer_name) { grpc_auth_context *tsi_ssl_peer_to_auth_context(const tsi_peer *peer) { size_t i; grpc_auth_context *ctx = NULL; + const char *peer_identity_property_name = NULL; /* The caller has checked the certificate type property. */ GPR_ASSERT(peer->property_count >= 1); - ctx = grpc_auth_context_create(NULL, peer->property_count); - ctx->properties[0] = grpc_auth_property_init_from_cstring( - GRPC_TRANSPORT_SECURITY_TYPE_PROPERTY_NAME, + ctx = grpc_auth_context_create(NULL); + grpc_auth_context_add_cstring_property( + ctx, GRPC_TRANSPORT_SECURITY_TYPE_PROPERTY_NAME, GRPC_SSL_TRANSPORT_SECURITY_TYPE); - ctx->property_count = 1; for (i = 0; i < peer->property_count; i++) { const tsi_peer_property *prop = &peer->properties[i]; if (prop->name == NULL) continue; if (strcmp(prop->name, TSI_X509_SUBJECT_COMMON_NAME_PEER_PROPERTY) == 0) { /* If there is no subject alt name, have the CN as the identity. */ - if (ctx->peer_identity_property_name == NULL) { - ctx->peer_identity_property_name = GRPC_X509_CN_PROPERTY_NAME; + if (peer_identity_property_name == NULL) { + peer_identity_property_name = GRPC_X509_CN_PROPERTY_NAME; } - ctx->properties[ctx->property_count++] = grpc_auth_property_init( - GRPC_X509_CN_PROPERTY_NAME, prop->value.data, prop->value.length); + grpc_auth_context_add_property(ctx, GRPC_X509_CN_PROPERTY_NAME, + prop->value.data, prop->value.length); } else if (strcmp(prop->name, TSI_X509_SUBJECT_ALTERNATIVE_NAME_PEER_PROPERTY) == 0) { - ctx->peer_identity_property_name = GRPC_X509_SAN_PROPERTY_NAME; - ctx->properties[ctx->property_count++] = grpc_auth_property_init( - GRPC_X509_SAN_PROPERTY_NAME, prop->value.data, prop->value.length); + peer_identity_property_name = GRPC_X509_SAN_PROPERTY_NAME; + grpc_auth_context_add_property(ctx, GRPC_X509_SAN_PROPERTY_NAME, + prop->value.data, prop->value.length); } } + if (peer_identity_property_name != NULL) { + GPR_ASSERT(grpc_auth_context_set_peer_identity_property_name( + ctx, peer_identity_property_name) == 1); + } return ctx; } diff --git a/src/core/security/security_context.c b/src/core/security/security_context.c index 8ce7876bd8..1ef0fc9255 100644 --- a/src/core/security/security_context.c +++ b/src/core/security/security_context.c @@ -42,6 +42,19 @@ #include <grpc/support/log.h> #include <grpc/support/string_util.h> +/* --- grpc_process_auth_metadata_func --- */ + +static grpc_auth_metadata_processor server_processor = {NULL, NULL}; + +grpc_auth_metadata_processor grpc_server_get_auth_metadata_processor(void) { + return server_processor; +} + +void grpc_server_register_auth_metadata_processor( + grpc_auth_metadata_processor processor) { + server_processor = processor; +} + /* --- grpc_call --- */ grpc_call_error grpc_call_set_credentials(grpc_call *call, @@ -120,15 +133,15 @@ void grpc_server_security_context_destroy(void *ctx) { static grpc_auth_property_iterator empty_iterator = {NULL, 0, NULL}; -grpc_auth_context *grpc_auth_context_create(grpc_auth_context *chained, - size_t property_count) { +grpc_auth_context *grpc_auth_context_create(grpc_auth_context *chained) { grpc_auth_context *ctx = gpr_malloc(sizeof(grpc_auth_context)); memset(ctx, 0, sizeof(grpc_auth_context)); - ctx->properties = gpr_malloc(property_count * sizeof(grpc_auth_property)); - memset(ctx->properties, 0, property_count * sizeof(grpc_auth_property)); - ctx->property_count = property_count; gpr_ref_init(&ctx->refcount, 1); - if (chained != NULL) ctx->chained = GRPC_AUTH_CONTEXT_REF(chained, "chained"); + if (chained != NULL) { + ctx->chained = GRPC_AUTH_CONTEXT_REF(chained, "chained"); + ctx->peer_identity_property_name = + ctx->chained->peer_identity_property_name; + } return ctx; } @@ -162,11 +175,11 @@ void grpc_auth_context_unref(grpc_auth_context *ctx) { if (gpr_unref(&ctx->refcount)) { size_t i; GRPC_AUTH_CONTEXT_UNREF(ctx->chained, "chained"); - if (ctx->properties != NULL) { - for (i = 0; i < ctx->property_count; i++) { - grpc_auth_property_reset(&ctx->properties[i]); + if (ctx->properties.array != NULL) { + for (i = 0; i < ctx->properties.count; i++) { + grpc_auth_property_reset(&ctx->properties.array[i]); } - gpr_free(ctx->properties); + gpr_free(ctx->properties.array); } gpr_free(ctx); } @@ -177,6 +190,20 @@ const char *grpc_auth_context_peer_identity_property_name( return ctx->peer_identity_property_name; } +int grpc_auth_context_set_peer_identity_property_name(grpc_auth_context *ctx, + const char *name) { + grpc_auth_property_iterator it = + grpc_auth_context_find_properties_by_name(ctx, name); + const grpc_auth_property *prop = grpc_auth_property_iterator_next(&it); + if (prop == NULL) { + gpr_log(GPR_ERROR, "Property name %s not found in auth context.", + name != NULL ? name : "NULL"); + return 0; + } + ctx->peer_identity_property_name = prop->name; + return 1; +} + int grpc_auth_context_peer_is_authenticated( const grpc_auth_context *ctx) { return ctx->peer_identity_property_name == NULL ? 0 : 1; @@ -193,16 +220,16 @@ grpc_auth_property_iterator grpc_auth_context_property_iterator( const grpc_auth_property *grpc_auth_property_iterator_next( grpc_auth_property_iterator *it) { if (it == NULL || it->ctx == NULL) return NULL; - while (it->index == it->ctx->property_count) { + while (it->index == it->ctx->properties.count) { if (it->ctx->chained == NULL) return NULL; it->ctx = it->ctx->chained; it->index = 0; } if (it->name == NULL) { - return &it->ctx->properties[it->index++]; + return &it->ctx->properties.array[it->index++]; } else { - while (it->index < it->ctx->property_count) { - const grpc_auth_property *prop = &it->ctx->properties[it->index++]; + while (it->index < it->ctx->properties.count) { + const grpc_auth_property *prop = &it->ctx->properties.array[it->index++]; GPR_ASSERT(prop->name != NULL); if (strcmp(it->name, prop->name) == 0) { return prop; @@ -229,24 +256,37 @@ grpc_auth_property_iterator grpc_auth_context_peer_identity( ctx, ctx->peer_identity_property_name); } -grpc_auth_property grpc_auth_property_init_from_cstring(const char *name, - const char *value) { - grpc_auth_property prop; - prop.name = gpr_strdup(name); - prop.value = gpr_strdup(value); - prop.value_length = strlen(value); - return prop; +static void ensure_auth_context_capacity(grpc_auth_context *ctx) { + if (ctx->properties.count == ctx->properties.capacity) { + ctx->properties.capacity = + GPR_MAX(ctx->properties.capacity + 8, ctx->properties.capacity * 2); + ctx->properties.array = + gpr_realloc(ctx->properties.array, + ctx->properties.capacity * sizeof(grpc_auth_property)); + } } -grpc_auth_property grpc_auth_property_init(const char *name, const char *value, - size_t value_length) { - grpc_auth_property prop; - prop.name = gpr_strdup(name); - prop.value = gpr_malloc(value_length + 1); - memcpy(prop.value, value, value_length); - prop.value[value_length] = '\0'; - prop.value_length = value_length; - return prop; +void grpc_auth_context_add_property(grpc_auth_context *ctx, const char *name, + const char *value, size_t value_length) { + grpc_auth_property *prop; + ensure_auth_context_capacity(ctx); + prop = &ctx->properties.array[ctx->properties.count++]; + prop->name = gpr_strdup(name); + prop->value = gpr_malloc(value_length + 1); + memcpy(prop->value, value, value_length); + prop->value[value_length] = '\0'; + prop->value_length = value_length; +} + +void grpc_auth_context_add_cstring_property(grpc_auth_context *ctx, + const char *name, + const char *value) { + grpc_auth_property *prop; + ensure_auth_context_capacity(ctx); + prop = &ctx->properties.array[ctx->properties.count++]; + prop->name = gpr_strdup(name); + prop->value = gpr_strdup(value); + prop->value_length = strlen(value); } void grpc_auth_property_reset(grpc_auth_property *property) { @@ -255,3 +295,35 @@ void grpc_auth_property_reset(grpc_auth_property *property) { memset(property, 0, sizeof(grpc_auth_property)); } +grpc_arg grpc_auth_metadata_processor_to_arg(grpc_auth_metadata_processor *p) { + grpc_arg arg; + memset(&arg, 0, sizeof(grpc_arg)); + arg.type = GRPC_ARG_POINTER; + arg.key = GRPC_AUTH_METADATA_PROCESSOR_ARG; + arg.value.pointer.p = p; + return arg; +} + +grpc_auth_metadata_processor *grpc_auth_metadata_processor_from_arg( + const grpc_arg *arg) { + if (strcmp(arg->key, GRPC_AUTH_METADATA_PROCESSOR_ARG) != 0) return NULL; + if (arg->type != GRPC_ARG_POINTER) { + gpr_log(GPR_ERROR, "Invalid type %d for arg %s", arg->type, + GRPC_AUTH_METADATA_PROCESSOR_ARG); + return NULL; + } + return arg->value.pointer.p; +} + +grpc_auth_metadata_processor *grpc_find_auth_metadata_processor_in_args( + const grpc_channel_args *args) { + size_t i; + if (args == NULL) return NULL; + for (i = 0; i < args->num_args; i++) { + grpc_auth_metadata_processor *p = + grpc_auth_metadata_processor_from_arg(&args->args[i]); + if (p != NULL) return p; + } + return NULL; +} + diff --git a/src/core/security/security_context.h b/src/core/security/security_context.h index 76a45910bb..7fcd438cf6 100644 --- a/src/core/security/security_context.h +++ b/src/core/security/security_context.h @@ -34,29 +34,31 @@ #ifndef GRPC_INTERNAL_CORE_SECURITY_SECURITY_CONTEXT_H #define GRPC_INTERNAL_CORE_SECURITY_SECURITY_CONTEXT_H +#include "src/core/iomgr/pollset.h" #include "src/core/security/credentials.h" -#ifdef __cplusplus -extern "C" { -#endif - /* --- grpc_auth_context --- High level authentication context object. Can optionally be chained. */ /* Property names are always NULL terminated. */ +typedef struct { + grpc_auth_property *array; + size_t count; + size_t capacity; +} grpc_auth_property_array; + struct grpc_auth_context { struct grpc_auth_context *chained; - grpc_auth_property *properties; - size_t property_count; + grpc_auth_property_array properties; gpr_refcount refcount; const char *peer_identity_property_name; + grpc_pollset *pollset; }; -/* Constructor. */ -grpc_auth_context *grpc_auth_context_create(grpc_auth_context *chained, - size_t property_count); +/* Creation. */ +grpc_auth_context *grpc_auth_context_create(grpc_auth_context *chained); /* Refcounting. */ #ifdef GRPC_AUTH_CONTEXT_REFCOUNT_DEBUG @@ -76,12 +78,6 @@ grpc_auth_context *grpc_auth_context_ref(grpc_auth_context *policy); void grpc_auth_context_unref(grpc_auth_context *policy); #endif -grpc_auth_property grpc_auth_property_init_from_cstring(const char *name, - const char *value); - -grpc_auth_property grpc_auth_property_init(const char *name, const char *value, - size_t value_length); - void grpc_auth_property_reset(grpc_auth_property *property); /* --- grpc_client_security_context --- @@ -107,9 +103,14 @@ typedef struct { grpc_server_security_context *grpc_server_security_context_create(void); void grpc_server_security_context_destroy(void *ctx); -#ifdef __cplusplus -} -#endif +/* --- Auth metadata processing. --- */ +#define GRPC_AUTH_METADATA_PROCESSOR_ARG "grpc.auth_metadata_processor" + +grpc_arg grpc_auth_metadata_processor_to_arg(grpc_auth_metadata_processor *p); +grpc_auth_metadata_processor *grpc_auth_metadata_processor_from_arg( + const grpc_arg *arg); +grpc_auth_metadata_processor *grpc_find_auth_metadata_processor_in_args( + const grpc_channel_args *args); #endif /* GRPC_INTERNAL_CORE_SECURITY_SECURITY_CONTEXT_H */ diff --git a/src/core/security/server_auth_filter.c b/src/core/security/server_auth_filter.c index 69789c2f0d..2fc689caec 100644 --- a/src/core/security/server_auth_filter.c +++ b/src/core/security/server_auth_filter.c @@ -31,20 +31,140 @@ * */ +#include <string.h> + #include "src/core/security/auth_filters.h" #include "src/core/security/security_connector.h" #include "src/core/security/security_context.h" +#include <grpc/support/alloc.h> #include <grpc/support/log.h> typedef struct call_data { - int unused; /* C89 requires at least one struct element */ + gpr_uint8 got_client_metadata; + grpc_stream_op_buffer *recv_ops; + /* Closure to call when finished with the auth_on_recv hook. */ + grpc_iomgr_closure *on_done_recv; + /* Receive closures are chained: we inject this closure as the on_done_recv + up-call on transport_op, and remember to call our on_done_recv member after + handling it. */ + grpc_iomgr_closure auth_on_recv; + grpc_transport_stream_op transport_op; + const grpc_metadata *consumed_md; + size_t num_consumed_md; + grpc_stream_op *md_op; + grpc_auth_context *auth_context; } call_data; typedef struct channel_data { grpc_security_connector *security_connector; + grpc_auth_metadata_processor processor; + grpc_mdctx *mdctx; } channel_data; +static grpc_metadata_array metadata_batch_to_md_array( + const grpc_metadata_batch *batch) { + grpc_linked_mdelem *l; + grpc_metadata_array result; + grpc_metadata_array_init(&result); + for (l = batch->list.head; l != NULL; l = l->next) { + grpc_metadata *usr_md = NULL; + grpc_mdelem *md = l->md; + grpc_mdstr *key = md->key; + grpc_mdstr *value = md->value; + if (result.count == result.capacity) { + result.capacity = GPR_MAX(result.capacity + 8, result.capacity * 2); + result.metadata = + gpr_realloc(result.metadata, result.capacity * sizeof(grpc_metadata)); + } + usr_md = &result.metadata[result.count++]; + usr_md->key = grpc_mdstr_as_c_string(key); + usr_md->value = grpc_mdstr_as_c_string(value); + usr_md->value_length = GPR_SLICE_LENGTH(value->slice); + } + return result; +} + +static grpc_mdelem *remove_consumed_md(void *user_data, grpc_mdelem *md) { + grpc_call_element *elem = user_data; + call_data *calld = elem->call_data; + size_t i; + for (i = 0; i < calld->num_consumed_md; i++) { + /* Maybe we could do a pointer comparison but we do not have any guarantee + that the metadata processor used the same pointers for consumed_md in the + callback. */ + if (memcmp(GPR_SLICE_START_PTR(md->key->slice), calld->consumed_md[i].key, + GPR_SLICE_LENGTH(md->key->slice)) == 0 && + memcmp(GPR_SLICE_START_PTR(md->value->slice), + calld->consumed_md[i].value, + GPR_SLICE_LENGTH(md->value->slice)) == 0) { + return NULL; /* Delete. */ + } + } + return md; +} + +static void on_md_processing_done(void *user_data, + const grpc_metadata *consumed_md, + size_t num_consumed_md, int success) { + grpc_call_element *elem = user_data; + call_data *calld = elem->call_data; + + if (success) { + calld->consumed_md = consumed_md; + calld->num_consumed_md = num_consumed_md; + grpc_metadata_batch_filter(&calld->md_op->data.metadata, remove_consumed_md, + elem); + calld->on_done_recv->cb(calld->on_done_recv->cb_arg, success); + } else { + gpr_slice message = gpr_slice_from_copied_string( + "Authentication metadata processing failed."); + grpc_sopb_reset(calld->recv_ops); + grpc_transport_stream_op_add_close(&calld->transport_op, + GRPC_STATUS_UNAUTHENTICATED, &message); + grpc_call_next_op(elem, &calld->transport_op); + } +} + +static void auth_on_recv(void *user_data, int success) { + grpc_call_element *elem = user_data; + call_data *calld = elem->call_data; + channel_data *chand = elem->channel_data; + if (success) { + size_t i; + size_t nops = calld->recv_ops->nops; + grpc_stream_op *ops = calld->recv_ops->ops; + for (i = 0; i < nops; i++) { + grpc_metadata_array md_array; + grpc_stream_op *op = &ops[i]; + if (op->type != GRPC_OP_METADATA || calld->got_client_metadata) continue; + calld->got_client_metadata = 1; + if (chand->processor.process == NULL) continue; + calld->md_op = op; + md_array = metadata_batch_to_md_array(&op->data.metadata); + chand->processor.process(chand->processor.state, calld->auth_context, + md_array.metadata, md_array.count, + on_md_processing_done, elem); + grpc_metadata_array_destroy(&md_array); + return; + } + } + calld->on_done_recv->cb(calld->on_done_recv->cb_arg, success); +} + +static void set_recv_ops_md_callbacks(grpc_call_element *elem, + grpc_transport_stream_op *op) { + call_data *calld = elem->call_data; + + if (op->recv_ops && !calld->got_client_metadata) { + /* substitute our callback for the higher callback */ + calld->recv_ops = op->recv_ops; + calld->on_done_recv = op->on_done_recv; + op->on_done_recv = &calld->auth_on_recv; + calld->transport_op = *op; + } +} + /* Called either: - in response to an API call (or similar) from above, to send something - a network event (or similar) from below, to receive something @@ -52,9 +172,7 @@ typedef struct channel_data { that is being sent or received. */ static void auth_start_transport_op(grpc_call_element *elem, grpc_transport_stream_op *op) { - /* TODO(jboeuf): Get the metadata and get a new context from it. */ - - /* pass control down the stack */ + set_recv_ops_md_callbacks(elem, op); grpc_call_next_op(elem, op); } @@ -68,7 +186,8 @@ static void init_call_elem(grpc_call_element *elem, grpc_server_security_context *server_ctx = NULL; /* initialize members */ - calld->unused = 0; + memset(calld, 0, sizeof(*calld)); + grpc_iomgr_closure_init(&calld->auth_on_recv, auth_on_recv, elem); GPR_ASSERT(initial_op && initial_op->context != NULL && initial_op->context[GRPC_CONTEXT_SECURITY].value == NULL); @@ -80,21 +199,29 @@ static void init_call_elem(grpc_call_element *elem, initial_op->context[GRPC_CONTEXT_SECURITY].value); } server_ctx = grpc_server_security_context_create(); - server_ctx->auth_context = GRPC_AUTH_CONTEXT_REF( - chand->security_connector->auth_context, "server_security_context"); + server_ctx->auth_context = + grpc_auth_context_create(chand->security_connector->auth_context); + server_ctx->auth_context->pollset = initial_op->bind_pollset; initial_op->context[GRPC_CONTEXT_SECURITY].value = server_ctx; initial_op->context[GRPC_CONTEXT_SECURITY].destroy = grpc_server_security_context_destroy; + calld->auth_context = server_ctx->auth_context; + + /* Set the metadata callbacks. */ + set_recv_ops_md_callbacks(elem, initial_op); } /* Destructor for call_data */ -static void destroy_call_elem(grpc_call_element *elem) {} +static void destroy_call_elem(grpc_call_element *elem) { +} /* Constructor for channel_data */ static void init_channel_elem(grpc_channel_element *elem, grpc_channel *master, const grpc_channel_args *args, grpc_mdctx *mdctx, int is_first, int is_last) { grpc_security_connector *sc = grpc_find_security_connector_in_args(args); + grpc_auth_metadata_processor *processor = + grpc_find_auth_metadata_processor_in_args(args); /* grab pointers to our data from the channel element */ channel_data *chand = elem->channel_data; @@ -104,11 +231,14 @@ static void init_channel_elem(grpc_channel_element *elem, grpc_channel *master, GPR_ASSERT(!is_first); GPR_ASSERT(!is_last); GPR_ASSERT(sc != NULL); + GPR_ASSERT(processor != NULL); /* initialize members */ GPR_ASSERT(!sc->is_client_side); chand->security_connector = GRPC_SECURITY_CONNECTOR_REF(sc, "server_auth_filter"); + chand->mdctx = mdctx; + chand->processor = *processor; } /* Destructor for channel data */ diff --git a/src/core/security/server_secure_chttp2.c b/src/core/security/server_secure_chttp2.c index 3717b8989f..8d9d036d80 100644 --- a/src/core/security/server_secure_chttp2.c +++ b/src/core/security/server_secure_chttp2.c @@ -43,6 +43,7 @@ #include "src/core/security/auth_filters.h" #include "src/core/security/credentials.h" #include "src/core/security/security_connector.h" +#include "src/core/security/security_context.h" #include "src/core/security/secure_transport_setup.h" #include "src/core/surface/server.h" #include "src/core/transport/chttp2_transport.h" @@ -60,6 +61,7 @@ typedef struct grpc_server_secure_state { grpc_server *server; grpc_tcp_server *tcp; grpc_security_connector *sc; + grpc_auth_metadata_processor processor; tcp_endpoint_list *handshaking_tcp_endpoints; int is_shutdown; gpr_mu mu; @@ -86,9 +88,13 @@ static void setup_transport(void *statep, grpc_transport *transport, static grpc_channel_filter const *extra_filters[] = { &grpc_server_auth_filter, &grpc_http_server_filter}; grpc_server_secure_state *state = statep; - grpc_arg connector_arg = grpc_security_connector_to_arg(state->sc); - grpc_channel_args *args_copy = grpc_channel_args_copy_and_add( - grpc_server_get_channel_args(state->server), &connector_arg, 1); + grpc_channel_args *args_copy; + grpc_arg args_to_add[2]; + args_to_add[0] = grpc_security_connector_to_arg(state->sc); + args_to_add[1] = grpc_auth_metadata_processor_to_arg(&state->processor); + args_copy = grpc_channel_args_copy_and_add( + grpc_server_get_channel_args(state->server), args_to_add, + GPR_ARRAY_SIZE(args_to_add)); grpc_server_setup_transport(state->server, transport, extra_filters, GPR_ARRAY_SIZE(extra_filters), mdctx, args_copy); grpc_channel_args_destroy(args_copy); @@ -252,9 +258,11 @@ int grpc_server_add_secure_http2_port(grpc_server *server, const char *addr, grpc_resolved_addresses_destroy(resolved); state = gpr_malloc(sizeof(*state)); + memset(state, 0, sizeof(*state)); state->server = server; state->tcp = tcp; state->sc = sc; + state->processor = creds->processor; state->handshaking_tcp_endpoints = NULL; state->is_shutdown = 0; gpr_mu_init(&state->mu); diff --git a/src/core/transport/chttp2/internal.h b/src/core/transport/chttp2/internal.h index cb428f8e3c..42cf0ecd5b 100644 --- a/src/core/transport/chttp2/internal.h +++ b/src/core/transport/chttp2/internal.h @@ -388,6 +388,8 @@ typedef struct { gpr_uint8 in_stream_map; /** bitmask of GRPC_CHTTP2_WRITING_xxx above */ gpr_uint8 writing_now; + /** has anything been written to this stream? */ + gpr_uint8 written_anything; /** stream state already published to the upper layer */ grpc_stream_state published_state; diff --git a/src/core/transport/chttp2_transport.c b/src/core/transport/chttp2_transport.c index 6ba144faa4..a9f91b64d5 100644 --- a/src/core/transport/chttp2_transport.c +++ b/src/core/transport/chttp2_transport.c @@ -107,6 +107,11 @@ static void cancel_from_api(grpc_chttp2_transport_global *transport_global, grpc_chttp2_stream_global *stream_global, grpc_status_code status); +static void close_from_api(grpc_chttp2_transport_global *transport_global, + grpc_chttp2_stream_global *stream_global, + grpc_status_code status, + gpr_slice *optional_message); + /** Add endpoint from this transport to pollset */ static void add_to_pollset_locked(grpc_chttp2_transport *t, grpc_pollset *pollset); @@ -602,10 +607,16 @@ static void perform_stream_op_locked( cancel_from_api(transport_global, stream_global, op->cancel_with_status); } + if (op->close_with_status != GRPC_STATUS_OK) { + close_from_api(transport_global, stream_global, op->close_with_status, + op->optional_close_message); + } + if (op->send_ops) { GPR_ASSERT(stream_global->outgoing_sopb == NULL); stream_global->send_done_closure = op->on_done_send; if (!stream_global->cancelled) { + stream_global->written_anything = 1; stream_global->outgoing_sopb = op->send_ops; if (op->is_last_send && stream_global->write_state == GRPC_WRITE_STATE_OPEN) { @@ -900,6 +911,108 @@ static void cancel_from_api(grpc_chttp2_transport_global *transport_global, stream_global); } +static void close_from_api(grpc_chttp2_transport_global *transport_global, + grpc_chttp2_stream_global *stream_global, + grpc_status_code status, + gpr_slice *optional_message) { + gpr_slice hdr; + gpr_slice status_hdr; + gpr_slice message_pfx; + gpr_uint8 *p; + gpr_uint32 len = 0; + + GPR_ASSERT(status >= 0 && (int)status < 100); + + stream_global->cancelled = 1; + stream_global->cancelled_status = status; + GPR_ASSERT(stream_global->id != 0); + GPR_ASSERT(!stream_global->written_anything); + + /* Hand roll a header block. + This is unnecessarily ugly - at some point we should find a more elegant + solution. + It's complicated by the fact that our send machinery would be dead by the + time we got around to sending this, so instead we ignore HPACK compression + and just write the uncompressed bytes onto the wire. */ + status_hdr = gpr_slice_malloc(15 + (status >= 10)); + p = GPR_SLICE_START_PTR(status_hdr); + *p++ = 0x40; /* literal header */ + *p++ = 11; /* len(grpc-status) */ + *p++ = 'g'; + *p++ = 'r'; + *p++ = 'p'; + *p++ = 'c'; + *p++ = '-'; + *p++ = 's'; + *p++ = 't'; + *p++ = 'a'; + *p++ = 't'; + *p++ = 'u'; + *p++ = 's'; + if (status < 10) { + *p++ = 1; + *p++ = '0' + status; + } else { + *p++ = 2; + *p++ = '0' + (status / 10); + *p++ = '0' + (status % 10); + } + GPR_ASSERT(p == GPR_SLICE_END_PTR(status_hdr)); + len += GPR_SLICE_LENGTH(status_hdr); + + if (optional_message) { + GPR_ASSERT(GPR_SLICE_LENGTH(*optional_message) < 127); + message_pfx = gpr_slice_malloc(15); + p = GPR_SLICE_START_PTR(message_pfx); + *p++ = 0x40; + *p++ = 12; /* len(grpc-message) */ + *p++ = 'g'; + *p++ = 'r'; + *p++ = 'p'; + *p++ = 'c'; + *p++ = '-'; + *p++ = 'm'; + *p++ = 'e'; + *p++ = 's'; + *p++ = 's'; + *p++ = 'a'; + *p++ = 'g'; + *p++ = 'e'; + *p++ = GPR_SLICE_LENGTH(*optional_message); + GPR_ASSERT(p == GPR_SLICE_END_PTR(message_pfx)); + len += GPR_SLICE_LENGTH(message_pfx); + len += GPR_SLICE_LENGTH(*optional_message); + } + + hdr = gpr_slice_malloc(9); + p = GPR_SLICE_START_PTR(hdr); + *p++ = len >> 16; + *p++ = len >> 8; + *p++ = len; + *p++ = GRPC_CHTTP2_FRAME_HEADER; + *p++ = GRPC_CHTTP2_DATA_FLAG_END_STREAM | GRPC_CHTTP2_DATA_FLAG_END_HEADERS; + *p++ = stream_global->id >> 24; + *p++ = stream_global->id >> 16; + *p++ = stream_global->id >> 8; + *p++ = stream_global->id; + GPR_ASSERT(p == GPR_SLICE_END_PTR(hdr)); + + gpr_slice_buffer_add(&transport_global->qbuf, hdr); + gpr_slice_buffer_add(&transport_global->qbuf, status_hdr); + if (optional_message) { + gpr_slice_buffer_add(&transport_global->qbuf, message_pfx); + gpr_slice_buffer_add(&transport_global->qbuf, + gpr_slice_ref(*optional_message)); + } + + gpr_slice_buffer_add( + &transport_global->qbuf, + grpc_chttp2_rst_stream_create(stream_global->id, GRPC_CHTTP2_NO_ERROR)); + + grpc_chttp2_list_add_read_write_state_changed(transport_global, + stream_global); +} + static void cancel_stream_cb(grpc_chttp2_transport_global *transport_global, void *user_data, grpc_chttp2_stream_global *stream_global) { diff --git a/src/core/transport/metadata.c b/src/core/transport/metadata.c index 967fd4898c..44d32b6cb2 100644 --- a/src/core/transport/metadata.c +++ b/src/core/transport/metadata.c @@ -135,7 +135,9 @@ static void unlock(grpc_mdctx *ctx) { if (ctx->refs == 0) { /* uncomment if you're having trouble diagnosing an mdelem leak to make things clearer (slows down destruction a lot, however) */ +#ifdef GRPC_METADATA_REFCOUNT_DEBUG gc_mdtab(ctx); +#endif if (ctx->mdtab_count && ctx->mdtab_count == ctx->mdtab_free) { discard_metadata(ctx); } diff --git a/src/core/transport/stream_op.h b/src/core/transport/stream_op.h index f27ef1b66b..227320cf2a 100644 --- a/src/core/transport/stream_op.h +++ b/src/core/transport/stream_op.h @@ -108,7 +108,7 @@ void grpc_metadata_batch_move(grpc_metadata_batch *dst, grpc_metadata_batch *src); /** Add \a storage to the beginning of \a batch. storage->md is - assumed to be valid. + assumed to be valid. \a storage is owned by the caller and must survive for the lifetime of batch. This usually means it should be around for the lifetime of the call. */ diff --git a/src/core/transport/transport.c b/src/core/transport/transport.c index 69c00b6a4f..c0d92cf93f 100644 --- a/src/core/transport/transport.c +++ b/src/core/transport/transport.c @@ -32,6 +32,8 @@ */ #include "src/core/transport/transport.h" +#include <grpc/support/alloc.h> +#include <grpc/support/log.h> #include "src/core/transport/transport_impl.h" size_t grpc_transport_stream_size(grpc_transport *transport) { @@ -83,12 +85,54 @@ void grpc_transport_stream_op_finish_with_failure( } void grpc_transport_stream_op_add_cancellation(grpc_transport_stream_op *op, - grpc_status_code status, - grpc_mdstr *message) { + grpc_status_code status) { + GPR_ASSERT(status != GRPC_STATUS_OK); if (op->cancel_with_status == GRPC_STATUS_OK) { op->cancel_with_status = status; } - if (message) { - GRPC_MDSTR_UNREF(message); + if (op->close_with_status != GRPC_STATUS_OK) { + op->close_with_status = GRPC_STATUS_OK; + if (op->optional_close_message != NULL) { + gpr_slice_unref(*op->optional_close_message); + op->optional_close_message = NULL; + } } } + +typedef struct { + gpr_slice message; + grpc_iomgr_closure *then_call; + grpc_iomgr_closure closure; +} close_message_data; + +static void free_message(void *p, int iomgr_success) { + close_message_data *cmd = p; + gpr_slice_unref(cmd->message); + if (cmd->then_call != NULL) { + cmd->then_call->cb(cmd->then_call->cb_arg, iomgr_success); + } + gpr_free(cmd); +} + +void grpc_transport_stream_op_add_close(grpc_transport_stream_op *op, + grpc_status_code status, + gpr_slice *optional_message) { + close_message_data *cmd; + GPR_ASSERT(status != GRPC_STATUS_OK); + if (op->cancel_with_status != GRPC_STATUS_OK || + op->close_with_status != GRPC_STATUS_OK) { + if (optional_message) { + gpr_slice_unref(*optional_message); + } + return; + } + if (optional_message) { + cmd = gpr_malloc(sizeof(*cmd)); + cmd->message = *optional_message; + cmd->then_call = op->on_consumed; + grpc_iomgr_closure_init(&cmd->closure, free_message, cmd); + op->on_consumed = &cmd->closure; + op->optional_close_message = &cmd->message; + } + op->close_with_status = status; +} diff --git a/src/core/transport/transport.h b/src/core/transport/transport.h index 7efcfcf970..92c1f38c5e 100644 --- a/src/core/transport/transport.h +++ b/src/core/transport/transport.h @@ -80,8 +80,14 @@ typedef struct grpc_transport_stream_op { grpc_pollset *bind_pollset; + /** If != GRPC_STATUS_OK, cancel this stream */ grpc_status_code cancel_with_status; + /** If != GRPC_STATUS_OK, send grpc-status, grpc-message, and close this + stream for both reading and writing */ + grpc_status_code close_with_status; + gpr_slice *optional_close_message; + /* Indexes correspond to grpc_context_index enum values */ grpc_call_context_element *context; } grpc_transport_stream_op; @@ -148,8 +154,11 @@ void grpc_transport_destroy_stream(grpc_transport *transport, void grpc_transport_stream_op_finish_with_failure(grpc_transport_stream_op *op); void grpc_transport_stream_op_add_cancellation(grpc_transport_stream_op *op, - grpc_status_code status, - grpc_mdstr *message); + grpc_status_code status); + +void grpc_transport_stream_op_add_close(grpc_transport_stream_op *op, + grpc_status_code status, + gpr_slice *optional_message); char *grpc_transport_stream_op_string(grpc_transport_stream_op *op); diff --git a/src/cpp/client/channel.cc b/src/cpp/client/channel.cc index 5f54e7fcc1..af7366eb01 100644 --- a/src/cpp/client/channel.cc +++ b/src/cpp/client/channel.cc @@ -48,6 +48,7 @@ #include <grpc++/impl/call.h> #include <grpc++/impl/rpc_method.h> #include <grpc++/status.h> +#include <grpc++/time.h> namespace grpc { @@ -95,4 +96,43 @@ void* Channel::RegisterMethod(const char* method) { host_.empty() ? NULL : host_.c_str()); } +grpc_connectivity_state Channel::GetState(bool try_to_connect) { + return grpc_channel_check_connectivity_state(c_channel_, try_to_connect); +} + +namespace { +class TagSaver GRPC_FINAL : public CompletionQueueTag { + public: + explicit TagSaver(void* tag) : tag_(tag) {} + ~TagSaver() GRPC_OVERRIDE {} + bool FinalizeResult(void** tag, bool* status) GRPC_OVERRIDE { + *tag = tag_; + delete this; + return true; + } + private: + void* tag_; +}; + +} // namespace + +void Channel::NotifyOnStateChangeImpl(grpc_connectivity_state last_observed, + gpr_timespec deadline, + CompletionQueue* cq, void* tag) { + TagSaver* tag_saver = new TagSaver(tag); + grpc_channel_watch_connectivity_state(c_channel_, last_observed, deadline, + cq->cq(), tag_saver); +} + +bool Channel::WaitForStateChangeImpl(grpc_connectivity_state last_observed, + gpr_timespec deadline) { + CompletionQueue cq; + bool ok = false; + void* tag = NULL; + NotifyOnStateChangeImpl(last_observed, deadline, &cq, NULL); + cq.Next(&tag, &ok); + GPR_ASSERT(tag == NULL); + return ok; +} + } // namespace grpc diff --git a/src/cpp/client/channel.h b/src/cpp/client/channel.h index 8660146856..cb8e8d98d2 100644 --- a/src/cpp/client/channel.h +++ b/src/cpp/client/channel.h @@ -56,13 +56,22 @@ class Channel GRPC_FINAL : public GrpcLibrary, public ChannelInterface { Channel(const grpc::string& host, grpc_channel* c_channel); ~Channel() GRPC_OVERRIDE; - virtual void* RegisterMethod(const char* method) GRPC_OVERRIDE; - virtual Call CreateCall(const RpcMethod& method, ClientContext* context, + void* RegisterMethod(const char* method) GRPC_OVERRIDE; + Call CreateCall(const RpcMethod& method, ClientContext* context, CompletionQueue* cq) GRPC_OVERRIDE; - virtual void PerformOpsOnCall(CallOpSetInterface* ops, + void PerformOpsOnCall(CallOpSetInterface* ops, Call* call) GRPC_OVERRIDE; + grpc_connectivity_state GetState(bool try_to_connect) GRPC_OVERRIDE; + private: + void NotifyOnStateChangeImpl(grpc_connectivity_state last_observed, + gpr_timespec deadline, CompletionQueue* cq, + void* tag) GRPC_OVERRIDE; + + bool WaitForStateChangeImpl(grpc_connectivity_state last_observed, + gpr_timespec deadline) GRPC_OVERRIDE; + const grpc::string host_; grpc_channel* const c_channel_; // owned }; diff --git a/templates/tools/run_tests/tests.json.template b/templates/tools/run_tests/tests.json.template index d1ba5ed43c..ffbf843235 100644 --- a/templates/tools/run_tests/tests.json.template +++ b/templates/tools/run_tests/tests.json.template @@ -5,8 +5,8 @@ import json ${json.dumps([{"name": tgt.name, "language": tgt.language, "platforms": tgt.platforms, + "ci_platforms": tgt.ci_platforms, "flaky": tgt.flaky} for tgt in targets if tgt.get('run', True) and tgt.build == 'test'], sort_keys=True, indent=2)} - diff --git a/test/core/end2end/end2end_tests.h b/test/core/end2end/end2end_tests.h index a18c702951..3f1665613c 100644 --- a/test/core/end2end/end2end_tests.h +++ b/test/core/end2end/end2end_tests.h @@ -43,6 +43,8 @@ typedef struct grpc_end2end_test_config grpc_end2end_test_config; #define FEATURE_MASK_SUPPORTS_HOSTNAME_VERIFICATION 2 #define FEATURE_MASK_SUPPORTS_PER_CALL_CREDENTIALS 4 +#define FAIL_AUTH_CHECK_SERVER_ARG_NAME "fail_auth_check" + struct grpc_end2end_test_fixture { grpc_completion_queue *cq; grpc_server *server; diff --git a/test/core/end2end/fixtures/chttp2_fake_security.c b/test/core/end2end/fixtures/chttp2_fake_security.c index f879b43f79..78b692a45d 100644 --- a/test/core/end2end/fixtures/chttp2_fake_security.c +++ b/test/core/end2end/fixtures/chttp2_fake_security.c @@ -65,6 +65,14 @@ static grpc_end2end_test_fixture chttp2_create_fixture_secure_fullstack( return f; } +static void process_auth_failure(void *state, grpc_auth_context *ctx, + const grpc_metadata *md, size_t md_count, + grpc_process_auth_metadata_done_cb cb, + void *user_data) { + GPR_ASSERT(state == NULL); + cb(user_data, NULL, 0, 0); +} + static void chttp2_init_client_secure_fullstack(grpc_end2end_test_fixture *f, grpc_channel_args *client_args, grpc_credentials *creds) { @@ -102,10 +110,27 @@ static void chttp2_init_client_fake_secure_fullstack( chttp2_init_client_secure_fullstack(f, client_args, fake_ts_creds); } +static int fail_server_auth_check(grpc_channel_args *server_args) { + size_t i; + if (server_args == NULL) return 0; + for (i = 0; i < server_args->num_args; i++) { + if (strcmp(server_args->args[i].key, FAIL_AUTH_CHECK_SERVER_ARG_NAME) == + 0) { + return 1; + } + } + return 0; +} + static void chttp2_init_server_fake_secure_fullstack( grpc_end2end_test_fixture *f, grpc_channel_args *server_args) { grpc_server_credentials *fake_ts_creds = grpc_fake_transport_security_server_credentials_create(); + if (fail_server_auth_check(server_args)) { + grpc_auth_metadata_processor processor = {process_auth_failure, NULL}; + grpc_server_credentials_set_auth_metadata_processor(fake_ts_creds, + processor); + } chttp2_init_server_secure_fullstack(f, server_args, fake_ts_creds); } diff --git a/test/core/end2end/fixtures/chttp2_simple_ssl_fullstack.c b/test/core/end2end/fixtures/chttp2_simple_ssl_fullstack.c index 6d5669d05a..9850aac69b 100644 --- a/test/core/end2end/fixtures/chttp2_simple_ssl_fullstack.c +++ b/test/core/end2end/fixtures/chttp2_simple_ssl_fullstack.c @@ -68,6 +68,14 @@ static grpc_end2end_test_fixture chttp2_create_fixture_secure_fullstack( return f; } +static void process_auth_failure(void *state, grpc_auth_context *ctx, + const grpc_metadata *md, size_t md_count, + grpc_process_auth_metadata_done_cb cb, + void *user_data) { + GPR_ASSERT(state == NULL); + cb(user_data, NULL, 0, 0); +} + static void chttp2_init_client_secure_fullstack(grpc_end2end_test_fixture *f, grpc_channel_args *client_args, grpc_credentials *creds) { @@ -110,12 +118,28 @@ static void chttp2_init_client_simple_ssl_secure_fullstack( grpc_channel_args_destroy(new_client_args); } +static int fail_server_auth_check(grpc_channel_args *server_args) { + size_t i; + if (server_args == NULL) return 0; + for (i = 0; i < server_args->num_args; i++) { + if (strcmp(server_args->args[i].key, FAIL_AUTH_CHECK_SERVER_ARG_NAME) == + 0) { + return 1; + } + } + return 0; +} + static void chttp2_init_server_simple_ssl_secure_fullstack( grpc_end2end_test_fixture *f, grpc_channel_args *server_args) { grpc_ssl_pem_key_cert_pair pem_cert_key_pair = {test_server1_key, test_server1_cert}; grpc_server_credentials *ssl_creds = grpc_ssl_server_credentials_create(NULL, &pem_cert_key_pair, 1, 0); + if (fail_server_auth_check(server_args)) { + grpc_auth_metadata_processor processor = {process_auth_failure, NULL}; + grpc_server_credentials_set_auth_metadata_processor(ssl_creds, processor); + } chttp2_init_server_secure_fullstack(f, server_args, ssl_creds); } diff --git a/test/core/end2end/fixtures/chttp2_simple_ssl_fullstack_with_poll.c b/test/core/end2end/fixtures/chttp2_simple_ssl_fullstack_with_poll.c index d0cc3dd74a..3df2acd296 100644 --- a/test/core/end2end/fixtures/chttp2_simple_ssl_fullstack_with_poll.c +++ b/test/core/end2end/fixtures/chttp2_simple_ssl_fullstack_with_poll.c @@ -68,6 +68,14 @@ static grpc_end2end_test_fixture chttp2_create_fixture_secure_fullstack( return f; } +static void process_auth_failure(void *state, grpc_auth_context *ctx, + const grpc_metadata *md, size_t md_count, + grpc_process_auth_metadata_done_cb cb, + void *user_data) { + GPR_ASSERT(state == NULL); + cb(user_data, NULL, 0, 0); +} + static void chttp2_init_client_secure_fullstack(grpc_end2end_test_fixture *f, grpc_channel_args *client_args, grpc_credentials *creds) { @@ -110,12 +118,28 @@ static void chttp2_init_client_simple_ssl_secure_fullstack( grpc_channel_args_destroy(new_client_args); } +static int fail_server_auth_check(grpc_channel_args *server_args) { + size_t i; + if (server_args == NULL) return 0; + for (i = 0; i < server_args->num_args; i++) { + if (strcmp(server_args->args[i].key, FAIL_AUTH_CHECK_SERVER_ARG_NAME) == + 0) { + return 1; + } + } + return 0; +} + static void chttp2_init_server_simple_ssl_secure_fullstack( grpc_end2end_test_fixture *f, grpc_channel_args *server_args) { grpc_ssl_pem_key_cert_pair pem_cert_key_pair = {test_server1_key, test_server1_cert}; grpc_server_credentials *ssl_creds = grpc_ssl_server_credentials_create(NULL, &pem_cert_key_pair, 1, 0); + if (fail_server_auth_check(server_args)) { + grpc_auth_metadata_processor processor = {process_auth_failure, NULL}; + grpc_server_credentials_set_auth_metadata_processor(ssl_creds, processor); + } chttp2_init_server_secure_fullstack(f, server_args, ssl_creds); } diff --git a/test/core/end2end/fixtures/chttp2_simple_ssl_fullstack_with_proxy.c b/test/core/end2end/fixtures/chttp2_simple_ssl_fullstack_with_proxy.c index 46a64de6c5..4d77039cac 100644 --- a/test/core/end2end/fixtures/chttp2_simple_ssl_fullstack_with_proxy.c +++ b/test/core/end2end/fixtures/chttp2_simple_ssl_fullstack_with_proxy.c @@ -96,6 +96,14 @@ static grpc_end2end_test_fixture chttp2_create_fixture_secure_fullstack( return f; } +static void process_auth_failure(void *state, grpc_auth_context *ctx, + const grpc_metadata *md, size_t md_count, + grpc_process_auth_metadata_done_cb cb, + void *user_data) { + GPR_ASSERT(state == NULL); + cb(user_data, NULL, 0, 0); +} + static void chttp2_init_client_secure_fullstack(grpc_end2end_test_fixture *f, grpc_channel_args *client_args, grpc_credentials *creds) { @@ -139,12 +147,28 @@ static void chttp2_init_client_simple_ssl_secure_fullstack( grpc_channel_args_destroy(new_client_args); } +static int fail_server_auth_check(grpc_channel_args *server_args) { + size_t i; + if (server_args == NULL) return 0; + for (i = 0; i < server_args->num_args; i++) { + if (strcmp(server_args->args[i].key, FAIL_AUTH_CHECK_SERVER_ARG_NAME) == + 0) { + return 1; + } + } + return 0; +} + static void chttp2_init_server_simple_ssl_secure_fullstack( grpc_end2end_test_fixture *f, grpc_channel_args *server_args) { grpc_ssl_pem_key_cert_pair pem_cert_key_pair = {test_server1_key, test_server1_cert}; grpc_server_credentials *ssl_creds = grpc_ssl_server_credentials_create(NULL, &pem_cert_key_pair, 1, 0); + if (fail_server_auth_check(server_args)) { + grpc_auth_metadata_processor processor = {process_auth_failure, NULL}; + grpc_server_credentials_set_auth_metadata_processor(ssl_creds, processor); + } chttp2_init_server_secure_fullstack(f, server_args, ssl_creds); } diff --git a/test/core/end2end/fixtures/chttp2_simple_ssl_with_oauth2_fullstack.c b/test/core/end2end/fixtures/chttp2_simple_ssl_with_oauth2_fullstack.c index f74ed9365f..284d5f07ae 100644 --- a/test/core/end2end/fixtures/chttp2_simple_ssl_with_oauth2_fullstack.c +++ b/test/core/end2end/fixtures/chttp2_simple_ssl_with_oauth2_fullstack.c @@ -46,10 +46,54 @@ #include "test/core/util/port.h" #include "test/core/end2end/data/ssl_test_data.h" +static const char oauth2_md[] = "Bearer aaslkfjs424535asdf"; +static const char *client_identity_property_name = "smurf_name"; +static const char *client_identity = "Brainy Smurf"; + typedef struct fullstack_secure_fixture_data { char *localaddr; } fullstack_secure_fixture_data; +static const grpc_metadata *find_metadata(const grpc_metadata *md, + size_t md_count, + const char *key, + const char *value) { + size_t i; + for (i = 0; i < md_count; i++) { + if (strcmp(key, md[i].key) == 0 && strlen(value) == md[i].value_length && + memcmp(md[i].value, value, md[i].value_length) == 0) { + return &md[i]; + } + } + return NULL; +} + +static void process_oauth2_success(void *state, grpc_auth_context *ctx, + const grpc_metadata *md, size_t md_count, + grpc_process_auth_metadata_done_cb cb, + void *user_data) { + const grpc_metadata *oauth2 = + find_metadata(md, md_count, "Authorization", oauth2_md); + GPR_ASSERT(state == NULL); + GPR_ASSERT(oauth2 != NULL); + grpc_auth_context_add_cstring_property(ctx, client_identity_property_name, + client_identity); + GPR_ASSERT(grpc_auth_context_set_peer_identity_property_name( + ctx, client_identity_property_name) == 1); + cb(user_data, oauth2, 1, 1); +} + +static void process_oauth2_failure(void *state, grpc_auth_context *ctx, + const grpc_metadata *md, size_t md_count, + grpc_process_auth_metadata_done_cb cb, + void *user_data) { + const grpc_metadata *oauth2 = + find_metadata(md, md_count, "Authorization", oauth2_md); + GPR_ASSERT(state == NULL); + GPR_ASSERT(oauth2 != NULL); + cb(user_data, oauth2, 1, 0); +} + static grpc_end2end_test_fixture chttp2_create_fixture_secure_fullstack( grpc_channel_args *client_args, grpc_channel_args *server_args) { grpc_end2end_test_fixture f; @@ -101,7 +145,7 @@ static void chttp2_init_client_simple_ssl_with_oauth2_secure_fullstack( grpc_credentials *ssl_creds = grpc_ssl_credentials_create(test_root_cert, NULL); grpc_credentials *oauth2_creds = - grpc_fake_oauth2_credentials_create("Bearer aaslkfjs424535asdf", 1); + grpc_md_only_test_credentials_create("Authorization", oauth2_md, 1); grpc_credentials *ssl_oauth2_creds = grpc_composite_credentials_create(ssl_creds, oauth2_creds); grpc_arg ssl_name_override = {GRPC_ARG_STRING, @@ -115,12 +159,32 @@ static void chttp2_init_client_simple_ssl_with_oauth2_secure_fullstack( grpc_credentials_release(oauth2_creds); } +static int fail_server_auth_check(grpc_channel_args *server_args) { + size_t i; + if (server_args == NULL) return 0; + for (i = 0; i < server_args->num_args; i++) { + if (strcmp(server_args->args[i].key, FAIL_AUTH_CHECK_SERVER_ARG_NAME) == + 0) { + return 1; + } + } + return 0; +} + static void chttp2_init_server_simple_ssl_secure_fullstack( grpc_end2end_test_fixture *f, grpc_channel_args *server_args) { grpc_ssl_pem_key_cert_pair pem_key_cert_pair = {test_server1_key, test_server1_cert}; grpc_server_credentials *ssl_creds = grpc_ssl_server_credentials_create(NULL, &pem_key_cert_pair, 1, 0); + grpc_auth_metadata_processor processor; + processor.state = NULL; + if (fail_server_auth_check(server_args)) { + processor.process = process_oauth2_failure; + } else { + processor.process = process_oauth2_success; + } + grpc_server_credentials_set_auth_metadata_processor(ssl_creds, processor); chttp2_init_server_secure_fullstack(f, server_args, ssl_creds); } diff --git a/test/core/end2end/fixtures/chttp2_socket_pair_with_grpc_trace.c b/test/core/end2end/fixtures/chttp2_socket_pair_with_grpc_trace.c index 6d2361b783..9d798ad1d2 100644 --- a/test/core/end2end/fixtures/chttp2_socket_pair_with_grpc_trace.c +++ b/test/core/end2end/fixtures/chttp2_socket_pair_with_grpc_trace.c @@ -148,7 +148,11 @@ int main(int argc, char **argv) { /* force tracing on, with a value to force many code paths in trace.c to be taken */ gpr_setenv("GRPC_TRACE", "doesnt-exist,http,all"); +#ifdef GPR_POSIX_SOCKET + g_fixture_slowdown_factor = isatty(STDOUT_FILENO) ? 10.0 : 1.0; +#else g_fixture_slowdown_factor = 10.0; +#endif grpc_test_init(argc, argv); grpc_init(); diff --git a/test/core/end2end/gen_build_json.py b/test/core/end2end/gen_build_json.py index d1138abd78..6f10b78dad 100755 --- a/test/core/end2end/gen_build_json.py +++ b/test/core/end2end/gen_build_json.py @@ -36,27 +36,27 @@ import simplejson import collections -FixtureOptions = collections.namedtuple('FixtureOptions', 'fullstack includes_proxy dns_resolver secure platforms') -default_unsecure_fixture_options = FixtureOptions(True, False, True, False, ['windows', 'linux', 'mac', 'posix']) +FixtureOptions = collections.namedtuple('FixtureOptions', 'fullstack includes_proxy dns_resolver secure platforms ci_mac') +default_unsecure_fixture_options = FixtureOptions(True, False, True, False, ['windows', 'linux', 'mac', 'posix'], True) 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']) # maps fixture name to whether it requires the security library END2END_FIXTURES = { - 'chttp2_fake_security': default_secure_fixture_options, + 'chttp2_fake_security': default_secure_fixture_options._replace(ci_mac=False), 'chttp2_fullstack': default_unsecure_fixture_options, 'chttp2_fullstack_compression': default_unsecure_fixture_options, 'chttp2_fullstack_uds_posix': uds_fixture_options, 'chttp2_fullstack_uds_posix_with_poll': uds_fixture_options._replace(platforms=['linux']), 'chttp2_fullstack_with_poll': default_unsecure_fixture_options._replace(platforms=['linux']), - 'chttp2_fullstack_with_proxy': default_unsecure_fixture_options._replace(includes_proxy=True), + 'chttp2_fullstack_with_proxy': default_unsecure_fixture_options._replace(includes_proxy=True, ci_mac=False), 'chttp2_simple_ssl_fullstack': default_secure_fixture_options, 'chttp2_simple_ssl_fullstack_with_poll': default_secure_fixture_options._replace(platforms=['linux']), - 'chttp2_simple_ssl_fullstack_with_proxy': default_secure_fixture_options._replace(includes_proxy=True), - 'chttp2_simple_ssl_with_oauth2_fullstack': default_secure_fixture_options, - 'chttp2_socket_pair': socketpair_unsecure_fixture_options, - 'chttp2_socket_pair_one_byte_at_a_time': socketpair_unsecure_fixture_options, + 'chttp2_simple_ssl_fullstack_with_proxy': default_secure_fixture_options._replace(includes_proxy=True, ci_mac=False), + 'chttp2_simple_ssl_with_oauth2_fullstack': default_secure_fixture_options._replace(ci_mac=False), + 'chttp2_socket_pair': socketpair_unsecure_fixture_options._replace(ci_mac=False), + 'chttp2_socket_pair_one_byte_at_a_time': socketpair_unsecure_fixture_options._replace(ci_mac=False), 'chttp2_socket_pair_with_grpc_trace': socketpair_unsecure_fixture_options, } @@ -115,6 +115,12 @@ def compatible(f, t): return True +def without(l, e): + l = l[:] + l.remove(e) + return l + + def main(): sec_deps = [ 'end2end_certs', @@ -173,6 +179,9 @@ def main(): 'src': [], 'flaky': END2END_TESTS[t].flaky, 'platforms': END2END_FIXTURES[f].platforms, + 'ci_platforms': (END2END_FIXTURES[f].platforms + if END2END_FIXTURES[f].ci_mac + else without(END2END_FIXTURES[f].platforms, 'mac')), 'deps': [ 'end2end_fixture_%s' % f, 'end2end_test_%s' % t] + sec_deps @@ -188,6 +197,9 @@ def main(): 'src': [], 'flaky': END2END_TESTS[t].flaky, 'platforms': END2END_FIXTURES[f].platforms, + 'ci_platforms': (END2END_FIXTURES[f].platforms + if END2END_FIXTURES[f].ci_mac + else without(END2END_FIXTURES[f].platforms, 'mac')), 'deps': [ 'end2end_fixture_%s' % f, 'end2end_test_%s' % t] + unsec_deps diff --git a/test/core/end2end/tests/request_response_with_payload_and_call_creds.c b/test/core/end2end/tests/request_response_with_payload_and_call_creds.c index ba312d0d5c..342dfa03f6 100644 --- a/test/core/end2end/tests/request_response_with_payload_and_call_creds.c +++ b/test/core/end2end/tests/request_response_with_payload_and_call_creds.c @@ -59,13 +59,21 @@ static void *tag(gpr_intptr 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) { + int fail_server_auth_check) { 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_client(&f, client_args); - config.init_server(&f, server_args); + f = config.create_fixture(NULL, NULL); + config.init_client(&f, NULL); + if (fail_server_auth_check) { + grpc_arg fail_auth_arg = { + GRPC_ARG_STRING, FAIL_AUTH_CHECK_SERVER_ARG_NAME, {NULL}}; + grpc_channel_args args; + args.num_args= 1; + args.args = &fail_auth_arg; + config.init_server(&f, &args); + } else { + config.init_server(&f, NULL); + } return f; } @@ -128,7 +136,7 @@ static void test_call_creds_failure(grpc_end2end_test_config config) { grpc_call *c; grpc_credentials *creds = NULL; grpc_end2end_test_fixture f = - begin_test(config, "test_call_creds_failure", NULL, NULL); + begin_test(config, "test_call_creds_failure", 0); gpr_timespec deadline = five_seconds_time(); c = grpc_channel_create_call(f.client, NULL, GRPC_PROPAGATE_DEFAULTS, f.cq, "/foo", "foo.test.google.fr", deadline); @@ -157,9 +165,8 @@ static void request_response_with_payload_and_call_creds( grpc_byte_buffer *response_payload = grpc_raw_byte_buffer_create(&response_payload_slice, 1); gpr_timespec deadline = five_seconds_time(); - - grpc_end2end_test_fixture f = begin_test(config, test_name, NULL, NULL); - cq_verifier *cqv = cq_verifier_create(f.cq); + grpc_end2end_test_fixture f; + cq_verifier *cqv; grpc_op ops[6]; grpc_op *op; grpc_metadata_array initial_metadata_recv; @@ -174,6 +181,10 @@ static void request_response_with_payload_and_call_creds( int was_cancelled = 2; grpc_credentials *creds = NULL; grpc_auth_context *s_auth_context = NULL; + grpc_auth_context *c_auth_context = NULL; + + f = begin_test(config, test_name, 0); + cqv = cq_verifier_create(f.cq); c = grpc_channel_create_call(f.client, NULL, GRPC_PROPAGATE_DEFAULTS, f.cq, "/foo", "foo.test.google.fr", deadline); @@ -241,6 +252,11 @@ static void request_response_with_payload_and_call_creds( print_auth_context(0, s_auth_context); grpc_auth_context_release(s_auth_context); + c_auth_context = grpc_call_auth_context(c); + GPR_ASSERT(c_auth_context != NULL); + print_auth_context(1, c_auth_context); + grpc_auth_context_release(c_auth_context); + /* Cannot set creds on the server call object. */ GPR_ASSERT(grpc_call_set_credentials(s, NULL) != GRPC_CALL_OK); @@ -340,31 +356,120 @@ static void request_response_with_payload_and_call_creds( config.tear_down_data(&f); } -void test_request_response_with_payload_and_call_creds( +static void test_request_response_with_payload_and_call_creds( grpc_end2end_test_config config) { request_response_with_payload_and_call_creds( "test_request_response_with_payload_and_call_creds", config, NONE); } -void test_request_response_with_payload_and_overridden_call_creds( +static void test_request_response_with_payload_and_overridden_call_creds( grpc_end2end_test_config config) { request_response_with_payload_and_call_creds( "test_request_response_with_payload_and_overridden_call_creds", config, OVERRIDE); } -void test_request_response_with_payload_and_deleted_call_creds( +static void test_request_response_with_payload_and_deleted_call_creds( grpc_end2end_test_config config) { request_response_with_payload_and_call_creds( "test_request_response_with_payload_and_deleted_call_creds", config, DESTROY); } +static void test_request_with_server_rejecting_client_creds( + grpc_end2end_test_config config) { + grpc_op ops[6]; + grpc_op *op; + grpc_call *c; + grpc_end2end_test_fixture f; + gpr_timespec deadline = five_seconds_time(); + cq_verifier *cqv; + grpc_metadata_array initial_metadata_recv; + grpc_metadata_array trailing_metadata_recv; + grpc_metadata_array request_metadata_recv; + grpc_call_details call_details; + grpc_status_code status; + char *details = NULL; + size_t details_capacity = 0; + grpc_byte_buffer *response_payload_recv = NULL; + 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); + grpc_credentials *creds; + + f = begin_test(config, "test_request_with_server_rejecting_client_creds", 1); + cqv = cq_verifier_create(f.cq); + + c = grpc_channel_create_call(f.client, NULL, GRPC_PROPAGATE_DEFAULTS, f.cq, + "/foo", "foo.test.google.fr", deadline); + GPR_ASSERT(c); + + creds = grpc_iam_credentials_create(iam_token, iam_selector); + GPR_ASSERT(creds != NULL); + GPR_ASSERT(grpc_call_set_credentials(c, creds) == GRPC_CALL_OK); + grpc_credentials_release(creds); + + grpc_metadata_array_init(&initial_metadata_recv); + grpc_metadata_array_init(&trailing_metadata_recv); + grpc_metadata_array_init(&request_metadata_recv); + grpc_call_details_init(&call_details); + + op = ops; + 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++; + op->op = GRPC_OP_SEND_INITIAL_METADATA; + op->data.send_initial_metadata.count = 0; + op->flags = 0; + op++; + op->op = GRPC_OP_SEND_MESSAGE; + op->data.send_message = request_payload; + op->flags = 0; + op++; + op->op = GRPC_OP_SEND_CLOSE_FROM_CLIENT; + op->flags = 0; + op++; + op->op = GRPC_OP_RECV_INITIAL_METADATA; + op->data.recv_initial_metadata = &initial_metadata_recv; + op->flags = 0; + op++; + op->op = GRPC_OP_RECV_MESSAGE; + op->data.recv_message = &response_payload_recv; + op->flags = 0; + op++; + GPR_ASSERT(GRPC_CALL_OK == grpc_call_start_batch(c, ops, op - ops, tag(1))); + + cq_expect_completion(cqv, tag(1), 1); + cq_verify(cqv); + + GPR_ASSERT(status == GRPC_STATUS_UNAUTHENTICATED); + + grpc_metadata_array_destroy(&initial_metadata_recv); + grpc_metadata_array_destroy(&trailing_metadata_recv); + grpc_metadata_array_destroy(&request_metadata_recv); + grpc_call_details_destroy(&call_details); + + grpc_byte_buffer_destroy(request_payload); + grpc_byte_buffer_destroy(response_payload_recv); + gpr_free(details); + + grpc_call_destroy(c); + + cq_verifier_destroy(cqv); + end_test(&f); + config.tear_down_data(&f); +} + void grpc_end2end_tests(grpc_end2end_test_config config) { if (config.feature_mask & FEATURE_MASK_SUPPORTS_PER_CALL_CREDENTIALS) { test_call_creds_failure(config); test_request_response_with_payload_and_call_creds(config); test_request_response_with_payload_and_overridden_call_creds(config); test_request_response_with_payload_and_deleted_call_creds(config); + test_request_with_server_rejecting_client_creds(config); } } diff --git a/test/core/security/auth_context_test.c b/test/core/security/auth_context_test.c index a30505a63b..d785eb6064 100644 --- a/test/core/security/auth_context_test.c +++ b/test/core/security/auth_context_test.c @@ -40,7 +40,7 @@ #include <grpc/support/log.h> static void test_empty_context(void) { - grpc_auth_context *ctx = grpc_auth_context_create(NULL, 0); + grpc_auth_context *ctx = grpc_auth_context_create(NULL); grpc_auth_property_iterator it; gpr_log(GPR_INFO, "test_empty_context"); @@ -52,87 +52,98 @@ static void test_empty_context(void) { GPR_ASSERT(grpc_auth_property_iterator_next(&it) == NULL); it = grpc_auth_context_find_properties_by_name(ctx, "foo"); GPR_ASSERT(grpc_auth_property_iterator_next(&it) == NULL); + GPR_ASSERT(grpc_auth_context_set_peer_identity_property_name(ctx, "bar") == + 0); + GPR_ASSERT(grpc_auth_context_peer_identity_property_name(ctx) == NULL); GRPC_AUTH_CONTEXT_UNREF(ctx, "test"); } static void test_simple_context(void) { - grpc_auth_context *ctx = grpc_auth_context_create(NULL, 3); + grpc_auth_context *ctx = grpc_auth_context_create(NULL); grpc_auth_property_iterator it; size_t i; gpr_log(GPR_INFO, "test_simple_context"); GPR_ASSERT(ctx != NULL); - GPR_ASSERT(ctx->property_count == 3); - ctx->properties[0] = grpc_auth_property_init_from_cstring("name", "chapi"); - ctx->properties[1] = grpc_auth_property_init_from_cstring("name", "chapo"); - ctx->properties[2] = grpc_auth_property_init_from_cstring("foo", "bar"); - ctx->peer_identity_property_name = ctx->properties[0].name; + grpc_auth_context_add_cstring_property(ctx, "name", "chapi"); + grpc_auth_context_add_cstring_property(ctx, "name", "chapo"); + grpc_auth_context_add_cstring_property(ctx, "foo", "bar"); + GPR_ASSERT(ctx->properties.count == 3); + GPR_ASSERT(grpc_auth_context_set_peer_identity_property_name(ctx, "name") == + 1); GPR_ASSERT( strcmp(grpc_auth_context_peer_identity_property_name(ctx), "name") == 0); it = grpc_auth_context_property_iterator(ctx); - for (i = 0; i < ctx->property_count; i++) { + for (i = 0; i < ctx->properties.count; i++) { const grpc_auth_property *p = grpc_auth_property_iterator_next(&it); - GPR_ASSERT(p == &ctx->properties[i]); + GPR_ASSERT(p == &ctx->properties.array[i]); } GPR_ASSERT(grpc_auth_property_iterator_next(&it) == NULL); it = grpc_auth_context_find_properties_by_name(ctx, "foo"); - GPR_ASSERT(grpc_auth_property_iterator_next(&it) == &ctx->properties[2]); + GPR_ASSERT(grpc_auth_property_iterator_next(&it) == + &ctx->properties.array[2]); GPR_ASSERT(grpc_auth_property_iterator_next(&it) == NULL); it = grpc_auth_context_peer_identity(ctx); - GPR_ASSERT(grpc_auth_property_iterator_next(&it) == &ctx->properties[0]); - GPR_ASSERT(grpc_auth_property_iterator_next(&it) == &ctx->properties[1]); + GPR_ASSERT(grpc_auth_property_iterator_next(&it) == + &ctx->properties.array[0]); + GPR_ASSERT(grpc_auth_property_iterator_next(&it) == + &ctx->properties.array[1]); GPR_ASSERT(grpc_auth_property_iterator_next(&it) == NULL); GRPC_AUTH_CONTEXT_UNREF(ctx, "test"); } static void test_chained_context(void) { - grpc_auth_context *chained = grpc_auth_context_create(NULL, 2); - grpc_auth_context *ctx = grpc_auth_context_create(chained, 3); + grpc_auth_context *chained = grpc_auth_context_create(NULL); + grpc_auth_context *ctx = grpc_auth_context_create(chained); grpc_auth_property_iterator it; size_t i; gpr_log(GPR_INFO, "test_chained_context"); GRPC_AUTH_CONTEXT_UNREF(chained, "chained"); - chained->properties[0] = - grpc_auth_property_init_from_cstring("name", "padapo"); - chained->properties[1] = grpc_auth_property_init_from_cstring("foo", "baz"); - ctx->properties[0] = grpc_auth_property_init_from_cstring("name", "chapi"); - ctx->properties[1] = grpc_auth_property_init_from_cstring("name", "chapo"); - ctx->properties[2] = grpc_auth_property_init_from_cstring("foo", "bar"); - ctx->peer_identity_property_name = ctx->properties[0].name; + grpc_auth_context_add_cstring_property(chained, "name", "padapo"); + grpc_auth_context_add_cstring_property(chained, "foo", "baz"); + grpc_auth_context_add_cstring_property(ctx, "name", "chapi"); + grpc_auth_context_add_cstring_property(ctx, "name", "chap0"); + grpc_auth_context_add_cstring_property(ctx, "foo", "bar"); + GPR_ASSERT(grpc_auth_context_set_peer_identity_property_name(ctx, "name") == + 1); GPR_ASSERT( strcmp(grpc_auth_context_peer_identity_property_name(ctx), "name") == 0); it = grpc_auth_context_property_iterator(ctx); - for (i = 0; i < ctx->property_count; i++) { + for (i = 0; i < ctx->properties.count; i++) { const grpc_auth_property *p = grpc_auth_property_iterator_next(&it); - GPR_ASSERT(p == &ctx->properties[i]); + GPR_ASSERT(p == &ctx->properties.array[i]); } - for (i = 0; i < chained->property_count; i++) { + for (i = 0; i < chained->properties.count; i++) { const grpc_auth_property *p = grpc_auth_property_iterator_next(&it); - GPR_ASSERT(p == &chained->properties[i]); + GPR_ASSERT(p == &chained->properties.array[i]); } GPR_ASSERT(grpc_auth_property_iterator_next(&it) == NULL); it = grpc_auth_context_find_properties_by_name(ctx, "foo"); - GPR_ASSERT(grpc_auth_property_iterator_next(&it) == &ctx->properties[2]); - GPR_ASSERT(grpc_auth_property_iterator_next(&it) == &chained->properties[1]); + GPR_ASSERT(grpc_auth_property_iterator_next(&it) == + &ctx->properties.array[2]); + GPR_ASSERT(grpc_auth_property_iterator_next(&it) == + &chained->properties.array[1]); GPR_ASSERT(grpc_auth_property_iterator_next(&it) == NULL); it = grpc_auth_context_peer_identity(ctx); - GPR_ASSERT(grpc_auth_property_iterator_next(&it) == &ctx->properties[0]); - GPR_ASSERT(grpc_auth_property_iterator_next(&it) == &ctx->properties[1]); - GPR_ASSERT(grpc_auth_property_iterator_next(&it) == &chained->properties[0]); + GPR_ASSERT(grpc_auth_property_iterator_next(&it) == + &ctx->properties.array[0]); + GPR_ASSERT(grpc_auth_property_iterator_next(&it) == + &ctx->properties.array[1]); + GPR_ASSERT(grpc_auth_property_iterator_next(&it) == + &chained->properties.array[0]); GPR_ASSERT(grpc_auth_property_iterator_next(&it) == NULL); GRPC_AUTH_CONTEXT_UNREF(ctx, "test"); } - int main(int argc, char **argv) { grpc_test_init(argc, argv); test_empty_context(); diff --git a/test/core/security/credentials_test.c b/test/core/security/credentials_test.c index dd6e0d7bb3..ecbff75de7 100644 --- a/test/core/security/credentials_test.c +++ b/test/core/security/credentials_test.c @@ -373,8 +373,8 @@ static void test_ssl_oauth2_composite_creds(void) { grpc_credentials *ssl_creds = grpc_ssl_credentials_create(test_root_cert, NULL); const grpc_credentials_array *creds_array; - grpc_credentials *oauth2_creds = - grpc_fake_oauth2_credentials_create(test_oauth2_bearer_token, 0); + grpc_credentials *oauth2_creds = grpc_md_only_test_credentials_create( + "Authorization", test_oauth2_bearer_token, 0); grpc_credentials *composite_creds = grpc_composite_credentials_create(ssl_creds, oauth2_creds); grpc_credentials_unref(ssl_creds); @@ -424,8 +424,8 @@ static void test_ssl_oauth2_iam_composite_creds(void) { grpc_credentials *ssl_creds = grpc_ssl_credentials_create(test_root_cert, NULL); const grpc_credentials_array *creds_array; - grpc_credentials *oauth2_creds = - grpc_fake_oauth2_credentials_create(test_oauth2_bearer_token, 0); + grpc_credentials *oauth2_creds = grpc_md_only_test_credentials_create( + "Authorization", test_oauth2_bearer_token, 0); grpc_credentials *aux_creds = grpc_composite_credentials_create(ssl_creds, oauth2_creds); grpc_credentials *iam_creds = grpc_iam_credentials_create( diff --git a/test/cpp/common/auth_property_iterator_test.cc b/test/cpp/common/auth_property_iterator_test.cc index 3d983fa310..74b18ced0d 100644 --- a/test/cpp/common/auth_property_iterator_test.cc +++ b/test/cpp/common/auth_property_iterator_test.cc @@ -31,10 +31,14 @@ * */ +#include <grpc/grpc_security.h> #include <grpc++/auth_context.h> #include <gtest/gtest.h> #include "src/cpp/common/secure_auth_context.h" + +extern "C" { #include "src/core/security/security_context.h" +} namespace grpc { namespace { @@ -50,14 +54,15 @@ class TestAuthPropertyIterator : public AuthPropertyIterator { class AuthPropertyIteratorTest : public ::testing::Test { protected: void SetUp() GRPC_OVERRIDE { - ctx_ = grpc_auth_context_create(NULL, 3); - ctx_->properties[0] = grpc_auth_property_init_from_cstring("name", "chapi"); - ctx_->properties[1] = grpc_auth_property_init_from_cstring("name", "chapo"); - ctx_->properties[2] = grpc_auth_property_init_from_cstring("foo", "bar"); - ctx_->peer_identity_property_name = ctx_->properties[0].name; + ctx_ = grpc_auth_context_create(NULL); + grpc_auth_context_add_cstring_property(ctx_, "name", "chapi"); + grpc_auth_context_add_cstring_property(ctx_, "name", "chapo"); + grpc_auth_context_add_cstring_property(ctx_, "foo", "bar"); + EXPECT_EQ(1, + grpc_auth_context_set_peer_identity_property_name(ctx_, "name")); } void TearDown() GRPC_OVERRIDE { - GRPC_AUTH_CONTEXT_UNREF(ctx_, "AuthPropertyIteratorTest"); + grpc_auth_context_release(ctx_); } grpc_auth_context* ctx_; diff --git a/test/cpp/common/secure_auth_context_test.cc b/test/cpp/common/secure_auth_context_test.cc index d0243a5432..075d4ce8c9 100644 --- a/test/cpp/common/secure_auth_context_test.cc +++ b/test/cpp/common/secure_auth_context_test.cc @@ -31,10 +31,14 @@ * */ +#include <grpc/grpc_security.h> #include <grpc++/auth_context.h> #include <gtest/gtest.h> #include "src/cpp/common/secure_auth_context.h" + +extern "C" { #include "src/core/security/security_context.h" +} namespace grpc { namespace { @@ -52,11 +56,11 @@ TEST_F(SecureAuthContextTest, EmptyContext) { } TEST_F(SecureAuthContextTest, Properties) { - grpc_auth_context* ctx = grpc_auth_context_create(NULL, 3); - ctx->properties[0] = grpc_auth_property_init_from_cstring("name", "chapi"); - ctx->properties[1] = grpc_auth_property_init_from_cstring("name", "chapo"); - ctx->properties[2] = grpc_auth_property_init_from_cstring("foo", "bar"); - ctx->peer_identity_property_name = ctx->properties[0].name; + grpc_auth_context* ctx = grpc_auth_context_create(NULL); + grpc_auth_context_add_cstring_property(ctx, "name", "chapi"); + grpc_auth_context_add_cstring_property(ctx, "name", "chapo"); + grpc_auth_context_add_cstring_property(ctx, "foo", "bar"); + EXPECT_EQ(1, grpc_auth_context_set_peer_identity_property_name(ctx, "name")); SecureAuthContext context(ctx); std::vector<grpc::string> peer_identity = context.GetPeerIdentity(); @@ -70,11 +74,11 @@ TEST_F(SecureAuthContextTest, Properties) { } TEST_F(SecureAuthContextTest, Iterators) { - grpc_auth_context* ctx = grpc_auth_context_create(NULL, 3); - ctx->properties[0] = grpc_auth_property_init_from_cstring("name", "chapi"); - ctx->properties[1] = grpc_auth_property_init_from_cstring("name", "chapo"); - ctx->properties[2] = grpc_auth_property_init_from_cstring("foo", "bar"); - ctx->peer_identity_property_name = ctx->properties[0].name; + grpc_auth_context* ctx = grpc_auth_context_create(NULL); + grpc_auth_context_add_cstring_property(ctx, "name", "chapi"); + grpc_auth_context_add_cstring_property(ctx, "name", "chapo"); + grpc_auth_context_add_cstring_property(ctx, "foo", "bar"); + EXPECT_EQ(1, grpc_auth_context_set_peer_identity_property_name(ctx, "name")); SecureAuthContext context(ctx); AuthPropertyIterator iter = context.begin(); diff --git a/test/cpp/end2end/end2end_test.cc b/test/cpp/end2end/end2end_test.cc index 24d417d9e6..5f0749daa5 100644 --- a/test/cpp/end2end/end2end_test.cc +++ b/test/cpp/end2end/end2end_test.cc @@ -869,7 +869,8 @@ TEST_P(End2endTest, HugeResponse) { } namespace { -void ReaderThreadFunc(ClientReaderWriter<EchoRequest, EchoResponse>* stream, gpr_event *ev) { +void ReaderThreadFunc(ClientReaderWriter<EchoRequest, EchoResponse>* stream, + gpr_event *ev) { EchoResponse resp; gpr_event_set(ev, (void*)1); while (stream->Read(&resp)) { @@ -908,6 +909,27 @@ TEST_P(End2endTest, Peer) { EXPECT_TRUE(CheckIsLocalhost(context.peer())); } +TEST_F(End2endTest, ChannelState) { + ResetStub(false); + // Start IDLE + EXPECT_EQ(GRPC_CHANNEL_IDLE, channel_->GetState(false)); + + // Did not ask to connect, no state change. + CompletionQueue cq; + std::chrono::system_clock::time_point deadline = + std::chrono::system_clock::now() + std::chrono::milliseconds(10); + channel_->NotifyOnStateChange(GRPC_CHANNEL_IDLE, deadline, &cq, NULL); + void* tag; + bool ok = true; + cq.Next(&tag, &ok); + EXPECT_FALSE(ok); + + EXPECT_EQ(GRPC_CHANNEL_IDLE, channel_->GetState(true)); + EXPECT_TRUE(channel_->WaitForStateChange( + GRPC_CHANNEL_IDLE, gpr_inf_future(GPR_CLOCK_REALTIME))); + EXPECT_EQ(GRPC_CHANNEL_CONNECTING, channel_->GetState(false)); +} + INSTANTIATE_TEST_CASE_P(End2end, End2endTest, ::testing::Values(false, true)); } // namespace testing diff --git a/tools/buildgen/plugins/expand_bin_attrs.py b/tools/buildgen/plugins/expand_bin_attrs.py index e35b9fe740..d221b3a325 100755 --- a/tools/buildgen/plugins/expand_bin_attrs.py +++ b/tools/buildgen/plugins/expand_bin_attrs.py @@ -49,4 +49,4 @@ def mako_plugin(dictionary): for tgt in targets: tgt['flaky'] = tgt.get('flaky', False) tgt['platforms'] = sorted(tgt.get('platforms', default_platforms)) - + tgt['ci_platforms'] = sorted(tgt.get('ci_platforms', tgt['platforms'])) diff --git a/tools/run_tests/run_tests.py b/tools/run_tests/run_tests.py index 482ffcc435..0d4caa66aa 100755 --- a/tools/run_tests/run_tests.py +++ b/tools/run_tests/run_tests.py @@ -127,10 +127,14 @@ class CLanguage(object): for tgt in js if tgt['language'] == test_lang and platform_string() in tgt['platforms']] + self.ci_binaries = [tgt + for tgt in js + if tgt['language'] == test_lang and + platform_string() in tgt['ci_platforms']] def test_specs(self, config, travis): out = [] - for target in self.binaries: + for target in (self.ci_binaries if travis else self.binaries): if travis and target['flaky']: continue if self.platform == 'windows': diff --git a/tools/run_tests/tests.json b/tools/run_tests/tests.json index f2fbc92e93..471dae0efa 100644 --- a/tools/run_tests/tests.json +++ b/tools/run_tests/tests.json @@ -2,6 +2,12 @@ [ { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "alarm_heap_test", @@ -13,6 +19,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "alarm_list_test", @@ -24,6 +36,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "alarm_test", @@ -35,6 +53,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "alpn_test", @@ -46,6 +70,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "bin_encoder_test", @@ -57,6 +87,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_status_conversion_test", @@ -68,6 +104,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_stream_encoder_test", @@ -79,6 +121,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_stream_map_test", @@ -90,6 +138,11 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix" + ], "flaky": false, "language": "c", "name": "dualstack_socket_test", @@ -100,6 +153,11 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix" + ], "flaky": false, "language": "c", "name": "fd_conservation_posix_test", @@ -110,6 +168,11 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix" + ], "flaky": false, "language": "c", "name": "fd_posix_test", @@ -120,6 +183,11 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix" + ], "flaky": false, "language": "c", "name": "fling_stream_test", @@ -130,6 +198,11 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix" + ], "flaky": false, "language": "c", "name": "fling_test", @@ -140,6 +213,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "gpr_cancellable_test", @@ -151,6 +230,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "gpr_cmdline_test", @@ -162,6 +247,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "gpr_env_test", @@ -173,6 +264,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "gpr_file_test", @@ -184,6 +281,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "gpr_histogram_test", @@ -195,6 +298,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "gpr_host_port_test", @@ -206,6 +315,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "gpr_log_test", @@ -217,6 +332,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "gpr_slice_buffer_test", @@ -228,6 +349,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "gpr_slice_test", @@ -239,6 +366,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "gpr_stack_lockfree_test", @@ -250,6 +383,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "gpr_string_test", @@ -261,6 +400,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "gpr_sync_test", @@ -272,6 +417,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "gpr_thd_test", @@ -283,6 +434,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "gpr_time_test", @@ -294,6 +451,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "gpr_tls_test", @@ -305,6 +468,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "gpr_useful_test", @@ -316,6 +485,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "grpc_auth_context_test", @@ -327,6 +502,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "grpc_base64_test", @@ -338,6 +519,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "grpc_byte_buffer_reader_test", @@ -349,6 +536,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "grpc_channel_stack_test", @@ -360,6 +553,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "grpc_completion_queue_test", @@ -371,6 +570,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "grpc_credentials_test", @@ -382,6 +587,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "grpc_json_token_test", @@ -393,6 +604,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "grpc_jwt_verifier_test", @@ -404,6 +621,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "grpc_security_connector_test", @@ -415,6 +638,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "grpc_stream_op_test", @@ -426,6 +655,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "hpack_parser_test", @@ -437,6 +672,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "hpack_table_test", @@ -448,6 +689,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "httpcli_format_request_test", @@ -459,6 +706,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "httpcli_parser_test", @@ -470,6 +723,11 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix" + ], "flaky": false, "language": "c", "name": "httpcli_test", @@ -480,6 +738,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "json_rewrite_test", @@ -491,6 +755,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "json_test", @@ -502,6 +772,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "lame_client_test", @@ -513,6 +789,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "message_compress_test", @@ -524,6 +806,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "multi_init_test", @@ -535,6 +823,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "multiple_server_queues_test", @@ -546,6 +840,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "murmur_hash_test", @@ -557,6 +857,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "no_server_test", @@ -568,6 +874,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "resolve_address_test", @@ -579,6 +891,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "secure_endpoint_test", @@ -590,6 +908,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "sockaddr_utils_test", @@ -601,6 +925,11 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix" + ], "flaky": false, "language": "c", "name": "tcp_client_posix_test", @@ -611,6 +940,11 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix" + ], "flaky": false, "language": "c", "name": "tcp_posix_test", @@ -621,6 +955,11 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix" + ], "flaky": false, "language": "c", "name": "tcp_server_posix_test", @@ -631,6 +970,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "time_averaged_stats_test", @@ -642,6 +987,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "timeout_encoding_test", @@ -653,6 +1004,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "timers_test", @@ -664,6 +1021,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "transport_metadata_test", @@ -675,6 +1038,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "transport_security_test", @@ -686,6 +1055,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "uri_parser_test", @@ -697,6 +1072,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c++", "name": "async_end2end_test", @@ -708,6 +1089,11 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix" + ], "flaky": false, "language": "c++", "name": "async_streaming_ping_pong_test", @@ -718,6 +1104,11 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix" + ], "flaky": false, "language": "c++", "name": "async_unary_ping_pong_test", @@ -728,6 +1119,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c++", "name": "auth_property_iterator_test", @@ -739,6 +1136,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c++", "name": "channel_arguments_test", @@ -750,6 +1153,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c++", "name": "cli_call_test", @@ -761,6 +1170,11 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix" + ], "flaky": false, "language": "c++", "name": "client_crash_test", @@ -771,6 +1185,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c++", "name": "credentials_test", @@ -782,6 +1202,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c++", "name": "cxx_byte_buffer_test", @@ -793,6 +1219,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c++", "name": "cxx_slice_test", @@ -804,6 +1236,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c++", "name": "cxx_time_test", @@ -815,6 +1253,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c++", "name": "dynamic_thread_pool_test", @@ -826,6 +1270,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c++", "name": "end2end_test", @@ -837,6 +1287,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c++", "name": "fixed_size_thread_pool_test", @@ -848,6 +1304,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c++", "name": "generic_end2end_test", @@ -859,6 +1321,11 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix" + ], "flaky": false, "language": "c++", "name": "interop_test", @@ -869,6 +1336,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c++", "name": "mock_test", @@ -880,6 +1353,11 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix" + ], "flaky": false, "language": "c++", "name": "qps_openloop_test", @@ -890,6 +1368,11 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix" + ], "flaky": false, "language": "c++", "name": "qps_test", @@ -900,6 +1383,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c++", "name": "secure_auth_context_test", @@ -911,6 +1400,11 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix" + ], "flaky": false, "language": "c++", "name": "server_crash_test", @@ -921,6 +1415,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c++", "name": "status_test", @@ -932,6 +1432,11 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix" + ], "flaky": false, "language": "c++", "name": "sync_streaming_ping_pong_test", @@ -942,6 +1447,11 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix" + ], "flaky": false, "language": "c++", "name": "sync_unary_ping_pong_test", @@ -952,6 +1462,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c++", "name": "thread_stress_test", @@ -963,6 +1479,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fake_security_bad_hostname_test", @@ -974,6 +1495,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fake_security_cancel_after_accept_test", @@ -985,6 +1511,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fake_security_cancel_after_accept_and_writes_closed_test", @@ -996,6 +1527,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fake_security_cancel_after_invoke_test", @@ -1007,6 +1543,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fake_security_cancel_before_invoke_test", @@ -1018,6 +1559,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fake_security_cancel_in_a_vacuum_test", @@ -1029,6 +1575,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fake_security_census_simple_request_test", @@ -1040,6 +1591,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fake_security_channel_connectivity_test", @@ -1051,6 +1607,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fake_security_default_host_test", @@ -1062,6 +1623,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fake_security_disappearing_server_test", @@ -1073,6 +1639,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fake_security_early_server_shutdown_finishes_inflight_calls_test", @@ -1084,6 +1655,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fake_security_early_server_shutdown_finishes_tags_test", @@ -1095,6 +1671,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fake_security_empty_batch_test", @@ -1106,6 +1687,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fake_security_graceful_server_shutdown_test", @@ -1117,6 +1703,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fake_security_invoke_large_request_test", @@ -1128,6 +1719,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fake_security_max_concurrent_streams_test", @@ -1139,6 +1735,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fake_security_max_message_length_test", @@ -1150,6 +1751,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fake_security_no_op_test", @@ -1161,6 +1767,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fake_security_ping_pong_streaming_test", @@ -1172,6 +1783,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fake_security_registered_call_test", @@ -1183,6 +1799,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fake_security_request_response_with_binary_metadata_and_payload_test", @@ -1194,6 +1815,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fake_security_request_response_with_metadata_and_payload_test", @@ -1205,6 +1831,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fake_security_request_response_with_payload_test", @@ -1216,6 +1847,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fake_security_request_response_with_payload_and_call_creds_test", @@ -1227,6 +1863,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fake_security_request_response_with_trailing_metadata_and_payload_test", @@ -1238,6 +1879,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fake_security_request_with_compressed_payload_test", @@ -1249,6 +1895,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fake_security_request_with_flags_test", @@ -1260,6 +1911,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fake_security_request_with_large_metadata_test", @@ -1271,6 +1927,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fake_security_request_with_payload_test", @@ -1282,6 +1943,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fake_security_server_finishes_request_test", @@ -1293,6 +1959,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fake_security_simple_delayed_request_test", @@ -1304,6 +1975,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fake_security_simple_request_test", @@ -1315,6 +1991,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fake_security_simple_request_with_high_initial_sequence_number_test", @@ -1326,6 +2007,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_bad_hostname_test", @@ -1337,6 +2024,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_cancel_after_accept_test", @@ -1348,6 +2041,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_cancel_after_accept_and_writes_closed_test", @@ -1359,6 +2058,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_cancel_after_invoke_test", @@ -1370,6 +2075,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_cancel_before_invoke_test", @@ -1381,6 +2092,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_cancel_in_a_vacuum_test", @@ -1392,6 +2109,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_census_simple_request_test", @@ -1403,6 +2126,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_channel_connectivity_test", @@ -1414,6 +2143,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_default_host_test", @@ -1425,6 +2160,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_disappearing_server_test", @@ -1436,6 +2177,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_early_server_shutdown_finishes_inflight_calls_test", @@ -1447,6 +2194,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_early_server_shutdown_finishes_tags_test", @@ -1458,6 +2211,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_empty_batch_test", @@ -1469,6 +2228,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_graceful_server_shutdown_test", @@ -1480,6 +2245,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_invoke_large_request_test", @@ -1491,6 +2262,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_max_concurrent_streams_test", @@ -1502,6 +2279,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_max_message_length_test", @@ -1513,6 +2296,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_no_op_test", @@ -1524,6 +2313,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_ping_pong_streaming_test", @@ -1535,6 +2330,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_registered_call_test", @@ -1546,6 +2347,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_request_response_with_binary_metadata_and_payload_test", @@ -1557,6 +2364,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_request_response_with_metadata_and_payload_test", @@ -1568,6 +2381,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_request_response_with_payload_test", @@ -1579,6 +2398,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_request_response_with_payload_and_call_creds_test", @@ -1590,6 +2415,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_request_response_with_trailing_metadata_and_payload_test", @@ -1601,6 +2432,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_request_with_compressed_payload_test", @@ -1612,6 +2449,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_request_with_flags_test", @@ -1623,6 +2466,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_request_with_large_metadata_test", @@ -1634,6 +2483,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_request_with_payload_test", @@ -1645,6 +2500,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_server_finishes_request_test", @@ -1656,6 +2517,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_simple_delayed_request_test", @@ -1667,6 +2534,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_simple_request_test", @@ -1678,6 +2551,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_simple_request_with_high_initial_sequence_number_test", @@ -1689,6 +2568,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_compression_bad_hostname_test", @@ -1700,6 +2585,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_compression_cancel_after_accept_test", @@ -1711,6 +2602,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_compression_cancel_after_accept_and_writes_closed_test", @@ -1722,6 +2619,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_compression_cancel_after_invoke_test", @@ -1733,6 +2636,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_compression_cancel_before_invoke_test", @@ -1744,6 +2653,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_compression_cancel_in_a_vacuum_test", @@ -1755,6 +2670,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_compression_census_simple_request_test", @@ -1766,6 +2687,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_compression_channel_connectivity_test", @@ -1777,6 +2704,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_compression_default_host_test", @@ -1788,6 +2721,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_compression_disappearing_server_test", @@ -1799,6 +2738,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_compression_early_server_shutdown_finishes_inflight_calls_test", @@ -1810,6 +2755,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_compression_early_server_shutdown_finishes_tags_test", @@ -1821,6 +2772,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_compression_empty_batch_test", @@ -1832,6 +2789,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_compression_graceful_server_shutdown_test", @@ -1843,6 +2806,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_compression_invoke_large_request_test", @@ -1854,6 +2823,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_compression_max_concurrent_streams_test", @@ -1865,6 +2840,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_compression_max_message_length_test", @@ -1876,6 +2857,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_compression_no_op_test", @@ -1887,6 +2874,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_compression_ping_pong_streaming_test", @@ -1898,6 +2891,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_compression_registered_call_test", @@ -1909,6 +2908,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_compression_request_response_with_binary_metadata_and_payload_test", @@ -1920,6 +2925,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_compression_request_response_with_metadata_and_payload_test", @@ -1931,6 +2942,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_compression_request_response_with_payload_test", @@ -1942,6 +2959,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_compression_request_response_with_payload_and_call_creds_test", @@ -1953,6 +2976,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_compression_request_response_with_trailing_metadata_and_payload_test", @@ -1964,6 +2993,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_compression_request_with_compressed_payload_test", @@ -1975,6 +3010,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_compression_request_with_flags_test", @@ -1986,6 +3027,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_compression_request_with_large_metadata_test", @@ -1997,6 +3044,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_compression_request_with_payload_test", @@ -2008,6 +3061,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_compression_server_finishes_request_test", @@ -2019,6 +3078,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_compression_simple_delayed_request_test", @@ -2030,6 +3095,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_compression_simple_request_test", @@ -2041,6 +3112,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_compression_simple_request_with_high_initial_sequence_number_test", @@ -2052,6 +3129,11 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_bad_hostname_test", @@ -2062,6 +3144,11 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_cancel_after_accept_test", @@ -2072,6 +3159,11 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_cancel_after_accept_and_writes_closed_test", @@ -2082,6 +3174,11 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_cancel_after_invoke_test", @@ -2092,6 +3189,11 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_cancel_before_invoke_test", @@ -2102,6 +3204,11 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_cancel_in_a_vacuum_test", @@ -2112,6 +3219,11 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_census_simple_request_test", @@ -2122,6 +3234,11 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_channel_connectivity_test", @@ -2132,6 +3249,11 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_disappearing_server_test", @@ -2142,6 +3264,11 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_early_server_shutdown_finishes_inflight_calls_test", @@ -2152,6 +3279,11 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_early_server_shutdown_finishes_tags_test", @@ -2162,6 +3294,11 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_empty_batch_test", @@ -2172,6 +3309,11 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_graceful_server_shutdown_test", @@ -2182,6 +3324,11 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_invoke_large_request_test", @@ -2192,6 +3339,11 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_max_concurrent_streams_test", @@ -2202,6 +3354,11 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_max_message_length_test", @@ -2212,6 +3369,11 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_no_op_test", @@ -2222,6 +3384,11 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_ping_pong_streaming_test", @@ -2232,6 +3399,11 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_registered_call_test", @@ -2242,6 +3414,11 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_request_response_with_binary_metadata_and_payload_test", @@ -2252,6 +3429,11 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_request_response_with_metadata_and_payload_test", @@ -2262,6 +3444,11 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_request_response_with_payload_test", @@ -2272,6 +3459,11 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_request_response_with_payload_and_call_creds_test", @@ -2282,6 +3474,11 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_request_response_with_trailing_metadata_and_payload_test", @@ -2292,6 +3489,11 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_request_with_compressed_payload_test", @@ -2302,6 +3504,11 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_request_with_flags_test", @@ -2312,6 +3519,11 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_request_with_large_metadata_test", @@ -2322,6 +3534,11 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_request_with_payload_test", @@ -2332,6 +3549,11 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_server_finishes_request_test", @@ -2342,6 +3564,11 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_simple_delayed_request_test", @@ -2352,6 +3579,11 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_simple_request_test", @@ -2362,6 +3594,11 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_simple_request_with_high_initial_sequence_number_test", @@ -2372,6 +3609,9 @@ ] }, { + "ci_platforms": [ + "linux" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_with_poll_bad_hostname_test", @@ -2380,6 +3620,9 @@ ] }, { + "ci_platforms": [ + "linux" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_with_poll_cancel_after_accept_test", @@ -2388,6 +3631,9 @@ ] }, { + "ci_platforms": [ + "linux" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_with_poll_cancel_after_accept_and_writes_closed_test", @@ -2396,6 +3642,9 @@ ] }, { + "ci_platforms": [ + "linux" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_with_poll_cancel_after_invoke_test", @@ -2404,6 +3653,9 @@ ] }, { + "ci_platforms": [ + "linux" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_with_poll_cancel_before_invoke_test", @@ -2412,6 +3664,9 @@ ] }, { + "ci_platforms": [ + "linux" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_with_poll_cancel_in_a_vacuum_test", @@ -2420,6 +3675,9 @@ ] }, { + "ci_platforms": [ + "linux" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_with_poll_census_simple_request_test", @@ -2428,6 +3686,9 @@ ] }, { + "ci_platforms": [ + "linux" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_with_poll_channel_connectivity_test", @@ -2436,6 +3697,9 @@ ] }, { + "ci_platforms": [ + "linux" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_with_poll_disappearing_server_test", @@ -2444,6 +3708,9 @@ ] }, { + "ci_platforms": [ + "linux" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_with_poll_early_server_shutdown_finishes_inflight_calls_test", @@ -2452,6 +3719,9 @@ ] }, { + "ci_platforms": [ + "linux" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_with_poll_early_server_shutdown_finishes_tags_test", @@ -2460,6 +3730,9 @@ ] }, { + "ci_platforms": [ + "linux" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_with_poll_empty_batch_test", @@ -2468,6 +3741,9 @@ ] }, { + "ci_platforms": [ + "linux" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_with_poll_graceful_server_shutdown_test", @@ -2476,6 +3752,9 @@ ] }, { + "ci_platforms": [ + "linux" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_with_poll_invoke_large_request_test", @@ -2484,6 +3763,9 @@ ] }, { + "ci_platforms": [ + "linux" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_with_poll_max_concurrent_streams_test", @@ -2492,6 +3774,9 @@ ] }, { + "ci_platforms": [ + "linux" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_with_poll_max_message_length_test", @@ -2500,6 +3785,9 @@ ] }, { + "ci_platforms": [ + "linux" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_with_poll_no_op_test", @@ -2508,6 +3796,9 @@ ] }, { + "ci_platforms": [ + "linux" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_with_poll_ping_pong_streaming_test", @@ -2516,6 +3807,9 @@ ] }, { + "ci_platforms": [ + "linux" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_with_poll_registered_call_test", @@ -2524,6 +3818,9 @@ ] }, { + "ci_platforms": [ + "linux" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_with_poll_request_response_with_binary_metadata_and_payload_test", @@ -2532,6 +3829,9 @@ ] }, { + "ci_platforms": [ + "linux" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_with_poll_request_response_with_metadata_and_payload_test", @@ -2540,6 +3840,9 @@ ] }, { + "ci_platforms": [ + "linux" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_with_poll_request_response_with_payload_test", @@ -2548,6 +3851,9 @@ ] }, { + "ci_platforms": [ + "linux" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_with_poll_request_response_with_payload_and_call_creds_test", @@ -2556,6 +3862,9 @@ ] }, { + "ci_platforms": [ + "linux" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_with_poll_request_response_with_trailing_metadata_and_payload_test", @@ -2564,6 +3873,9 @@ ] }, { + "ci_platforms": [ + "linux" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_with_poll_request_with_compressed_payload_test", @@ -2572,6 +3884,9 @@ ] }, { + "ci_platforms": [ + "linux" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_with_poll_request_with_flags_test", @@ -2580,6 +3895,9 @@ ] }, { + "ci_platforms": [ + "linux" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_with_poll_request_with_large_metadata_test", @@ -2588,6 +3906,9 @@ ] }, { + "ci_platforms": [ + "linux" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_with_poll_request_with_payload_test", @@ -2596,6 +3917,9 @@ ] }, { + "ci_platforms": [ + "linux" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_with_poll_server_finishes_request_test", @@ -2604,6 +3928,9 @@ ] }, { + "ci_platforms": [ + "linux" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_with_poll_simple_delayed_request_test", @@ -2612,6 +3939,9 @@ ] }, { + "ci_platforms": [ + "linux" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_with_poll_simple_request_test", @@ -2620,6 +3950,9 @@ ] }, { + "ci_platforms": [ + "linux" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_with_poll_simple_request_with_high_initial_sequence_number_test", @@ -2628,6 +3961,9 @@ ] }, { + "ci_platforms": [ + "linux" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_poll_bad_hostname_test", @@ -2636,6 +3972,9 @@ ] }, { + "ci_platforms": [ + "linux" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_poll_cancel_after_accept_test", @@ -2644,6 +3983,9 @@ ] }, { + "ci_platforms": [ + "linux" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_poll_cancel_after_accept_and_writes_closed_test", @@ -2652,6 +3994,9 @@ ] }, { + "ci_platforms": [ + "linux" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_poll_cancel_after_invoke_test", @@ -2660,6 +4005,9 @@ ] }, { + "ci_platforms": [ + "linux" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_poll_cancel_before_invoke_test", @@ -2668,6 +4016,9 @@ ] }, { + "ci_platforms": [ + "linux" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_poll_cancel_in_a_vacuum_test", @@ -2676,6 +4027,9 @@ ] }, { + "ci_platforms": [ + "linux" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_poll_census_simple_request_test", @@ -2684,6 +4038,9 @@ ] }, { + "ci_platforms": [ + "linux" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_poll_channel_connectivity_test", @@ -2692,6 +4049,9 @@ ] }, { + "ci_platforms": [ + "linux" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_poll_default_host_test", @@ -2700,6 +4060,9 @@ ] }, { + "ci_platforms": [ + "linux" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_poll_disappearing_server_test", @@ -2708,6 +4071,9 @@ ] }, { + "ci_platforms": [ + "linux" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_poll_early_server_shutdown_finishes_inflight_calls_test", @@ -2716,6 +4082,9 @@ ] }, { + "ci_platforms": [ + "linux" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_poll_early_server_shutdown_finishes_tags_test", @@ -2724,6 +4093,9 @@ ] }, { + "ci_platforms": [ + "linux" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_poll_empty_batch_test", @@ -2732,6 +4104,9 @@ ] }, { + "ci_platforms": [ + "linux" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_poll_graceful_server_shutdown_test", @@ -2740,6 +4115,9 @@ ] }, { + "ci_platforms": [ + "linux" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_poll_invoke_large_request_test", @@ -2748,6 +4126,9 @@ ] }, { + "ci_platforms": [ + "linux" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_poll_max_concurrent_streams_test", @@ -2756,6 +4137,9 @@ ] }, { + "ci_platforms": [ + "linux" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_poll_max_message_length_test", @@ -2764,6 +4148,9 @@ ] }, { + "ci_platforms": [ + "linux" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_poll_no_op_test", @@ -2772,6 +4159,9 @@ ] }, { + "ci_platforms": [ + "linux" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_poll_ping_pong_streaming_test", @@ -2780,6 +4170,9 @@ ] }, { + "ci_platforms": [ + "linux" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_poll_registered_call_test", @@ -2788,6 +4181,9 @@ ] }, { + "ci_platforms": [ + "linux" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_poll_request_response_with_binary_metadata_and_payload_test", @@ -2796,6 +4192,9 @@ ] }, { + "ci_platforms": [ + "linux" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_poll_request_response_with_metadata_and_payload_test", @@ -2804,6 +4203,9 @@ ] }, { + "ci_platforms": [ + "linux" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_poll_request_response_with_payload_test", @@ -2812,6 +4214,9 @@ ] }, { + "ci_platforms": [ + "linux" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_poll_request_response_with_payload_and_call_creds_test", @@ -2820,6 +4225,9 @@ ] }, { + "ci_platforms": [ + "linux" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_poll_request_response_with_trailing_metadata_and_payload_test", @@ -2828,6 +4236,9 @@ ] }, { + "ci_platforms": [ + "linux" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_poll_request_with_compressed_payload_test", @@ -2836,6 +4247,9 @@ ] }, { + "ci_platforms": [ + "linux" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_poll_request_with_flags_test", @@ -2844,6 +4258,9 @@ ] }, { + "ci_platforms": [ + "linux" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_poll_request_with_large_metadata_test", @@ -2852,6 +4269,9 @@ ] }, { + "ci_platforms": [ + "linux" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_poll_request_with_payload_test", @@ -2860,6 +4280,9 @@ ] }, { + "ci_platforms": [ + "linux" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_poll_server_finishes_request_test", @@ -2868,6 +4291,9 @@ ] }, { + "ci_platforms": [ + "linux" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_poll_simple_delayed_request_test", @@ -2876,6 +4302,9 @@ ] }, { + "ci_platforms": [ + "linux" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_poll_simple_request_test", @@ -2884,6 +4313,9 @@ ] }, { + "ci_platforms": [ + "linux" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_poll_simple_request_with_high_initial_sequence_number_test", @@ -2892,6 +4324,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_proxy_bad_hostname_test", @@ -2903,6 +4340,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_proxy_cancel_after_accept_test", @@ -2914,6 +4356,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_proxy_cancel_after_accept_and_writes_closed_test", @@ -2925,6 +4372,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_proxy_cancel_after_invoke_test", @@ -2936,6 +4388,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_proxy_cancel_before_invoke_test", @@ -2947,6 +4404,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_proxy_cancel_in_a_vacuum_test", @@ -2958,6 +4420,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_proxy_census_simple_request_test", @@ -2969,6 +4436,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_proxy_default_host_test", @@ -2980,6 +4452,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_proxy_disappearing_server_test", @@ -2991,6 +4468,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_proxy_early_server_shutdown_finishes_inflight_calls_test", @@ -3002,6 +4484,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_proxy_early_server_shutdown_finishes_tags_test", @@ -3013,6 +4500,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_proxy_empty_batch_test", @@ -3024,6 +4516,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_proxy_graceful_server_shutdown_test", @@ -3035,6 +4532,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_proxy_invoke_large_request_test", @@ -3046,6 +4548,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_proxy_max_message_length_test", @@ -3057,6 +4564,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_proxy_no_op_test", @@ -3068,6 +4580,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_proxy_ping_pong_streaming_test", @@ -3079,6 +4596,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_proxy_registered_call_test", @@ -3090,6 +4612,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_proxy_request_response_with_binary_metadata_and_payload_test", @@ -3101,6 +4628,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_proxy_request_response_with_metadata_and_payload_test", @@ -3112,6 +4644,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_proxy_request_response_with_payload_test", @@ -3123,6 +4660,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_proxy_request_response_with_payload_and_call_creds_test", @@ -3134,6 +4676,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_proxy_request_response_with_trailing_metadata_and_payload_test", @@ -3145,6 +4692,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_proxy_request_with_large_metadata_test", @@ -3156,6 +4708,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_proxy_request_with_payload_test", @@ -3167,6 +4724,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_proxy_server_finishes_request_test", @@ -3178,6 +4740,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_proxy_simple_delayed_request_test", @@ -3189,6 +4756,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_proxy_simple_request_test", @@ -3200,6 +4772,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_proxy_simple_request_with_high_initial_sequence_number_test", @@ -3211,6 +4788,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_bad_hostname_test", @@ -3222,6 +4805,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_cancel_after_accept_test", @@ -3233,6 +4822,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_cancel_after_accept_and_writes_closed_test", @@ -3244,6 +4839,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_cancel_after_invoke_test", @@ -3255,6 +4856,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_cancel_before_invoke_test", @@ -3266,6 +4873,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_cancel_in_a_vacuum_test", @@ -3277,6 +4890,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_census_simple_request_test", @@ -3288,6 +4907,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_channel_connectivity_test", @@ -3299,6 +4924,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_default_host_test", @@ -3310,6 +4941,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_disappearing_server_test", @@ -3321,6 +4958,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_early_server_shutdown_finishes_inflight_calls_test", @@ -3332,6 +4975,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_early_server_shutdown_finishes_tags_test", @@ -3343,6 +4992,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_empty_batch_test", @@ -3354,6 +5009,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_graceful_server_shutdown_test", @@ -3365,6 +5026,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_invoke_large_request_test", @@ -3376,6 +5043,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_max_concurrent_streams_test", @@ -3387,6 +5060,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_max_message_length_test", @@ -3398,6 +5077,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_no_op_test", @@ -3409,6 +5094,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_ping_pong_streaming_test", @@ -3420,6 +5111,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_registered_call_test", @@ -3431,6 +5128,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_request_response_with_binary_metadata_and_payload_test", @@ -3442,6 +5145,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_request_response_with_metadata_and_payload_test", @@ -3453,6 +5162,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_request_response_with_payload_test", @@ -3464,6 +5179,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_request_response_with_payload_and_call_creds_test", @@ -3475,6 +5196,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_request_response_with_trailing_metadata_and_payload_test", @@ -3486,6 +5213,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_request_with_compressed_payload_test", @@ -3497,6 +5230,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_request_with_flags_test", @@ -3508,6 +5247,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_request_with_large_metadata_test", @@ -3519,6 +5264,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_request_with_payload_test", @@ -3530,6 +5281,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_server_finishes_request_test", @@ -3541,6 +5298,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_simple_delayed_request_test", @@ -3552,6 +5315,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_simple_request_test", @@ -3563,6 +5332,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_simple_request_with_high_initial_sequence_number_test", @@ -3574,6 +5349,9 @@ ] }, { + "ci_platforms": [ + "linux" + ], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_with_poll_bad_hostname_test", @@ -3582,6 +5360,9 @@ ] }, { + "ci_platforms": [ + "linux" + ], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_with_poll_cancel_after_accept_test", @@ -3590,6 +5371,9 @@ ] }, { + "ci_platforms": [ + "linux" + ], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_with_poll_cancel_after_accept_and_writes_closed_test", @@ -3598,6 +5382,9 @@ ] }, { + "ci_platforms": [ + "linux" + ], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_with_poll_cancel_after_invoke_test", @@ -3606,6 +5393,9 @@ ] }, { + "ci_platforms": [ + "linux" + ], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_with_poll_cancel_before_invoke_test", @@ -3614,6 +5404,9 @@ ] }, { + "ci_platforms": [ + "linux" + ], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_with_poll_cancel_in_a_vacuum_test", @@ -3622,6 +5415,9 @@ ] }, { + "ci_platforms": [ + "linux" + ], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_with_poll_census_simple_request_test", @@ -3630,6 +5426,9 @@ ] }, { + "ci_platforms": [ + "linux" + ], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_with_poll_channel_connectivity_test", @@ -3638,6 +5437,9 @@ ] }, { + "ci_platforms": [ + "linux" + ], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_with_poll_default_host_test", @@ -3646,6 +5448,9 @@ ] }, { + "ci_platforms": [ + "linux" + ], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_with_poll_disappearing_server_test", @@ -3654,6 +5459,9 @@ ] }, { + "ci_platforms": [ + "linux" + ], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_with_poll_early_server_shutdown_finishes_inflight_calls_test", @@ -3662,6 +5470,9 @@ ] }, { + "ci_platforms": [ + "linux" + ], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_with_poll_early_server_shutdown_finishes_tags_test", @@ -3670,6 +5481,9 @@ ] }, { + "ci_platforms": [ + "linux" + ], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_with_poll_empty_batch_test", @@ -3678,6 +5492,9 @@ ] }, { + "ci_platforms": [ + "linux" + ], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_with_poll_graceful_server_shutdown_test", @@ -3686,6 +5503,9 @@ ] }, { + "ci_platforms": [ + "linux" + ], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_with_poll_invoke_large_request_test", @@ -3694,6 +5514,9 @@ ] }, { + "ci_platforms": [ + "linux" + ], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_with_poll_max_concurrent_streams_test", @@ -3702,6 +5525,9 @@ ] }, { + "ci_platforms": [ + "linux" + ], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_with_poll_max_message_length_test", @@ -3710,6 +5536,9 @@ ] }, { + "ci_platforms": [ + "linux" + ], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_with_poll_no_op_test", @@ -3718,6 +5547,9 @@ ] }, { + "ci_platforms": [ + "linux" + ], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_with_poll_ping_pong_streaming_test", @@ -3726,6 +5558,9 @@ ] }, { + "ci_platforms": [ + "linux" + ], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_with_poll_registered_call_test", @@ -3734,6 +5569,9 @@ ] }, { + "ci_platforms": [ + "linux" + ], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_with_poll_request_response_with_binary_metadata_and_payload_test", @@ -3742,6 +5580,9 @@ ] }, { + "ci_platforms": [ + "linux" + ], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_with_poll_request_response_with_metadata_and_payload_test", @@ -3750,6 +5591,9 @@ ] }, { + "ci_platforms": [ + "linux" + ], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_with_poll_request_response_with_payload_test", @@ -3758,6 +5602,9 @@ ] }, { + "ci_platforms": [ + "linux" + ], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_with_poll_request_response_with_payload_and_call_creds_test", @@ -3766,6 +5613,9 @@ ] }, { + "ci_platforms": [ + "linux" + ], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_with_poll_request_response_with_trailing_metadata_and_payload_test", @@ -3774,6 +5624,9 @@ ] }, { + "ci_platforms": [ + "linux" + ], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_with_poll_request_with_compressed_payload_test", @@ -3782,6 +5635,9 @@ ] }, { + "ci_platforms": [ + "linux" + ], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_with_poll_request_with_flags_test", @@ -3790,6 +5646,9 @@ ] }, { + "ci_platforms": [ + "linux" + ], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_with_poll_request_with_large_metadata_test", @@ -3798,6 +5657,9 @@ ] }, { + "ci_platforms": [ + "linux" + ], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_with_poll_request_with_payload_test", @@ -3806,6 +5668,9 @@ ] }, { + "ci_platforms": [ + "linux" + ], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_with_poll_server_finishes_request_test", @@ -3814,6 +5679,9 @@ ] }, { + "ci_platforms": [ + "linux" + ], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_with_poll_simple_delayed_request_test", @@ -3822,6 +5690,9 @@ ] }, { + "ci_platforms": [ + "linux" + ], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_with_poll_simple_request_test", @@ -3830,6 +5701,9 @@ ] }, { + "ci_platforms": [ + "linux" + ], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_with_poll_simple_request_with_high_initial_sequence_number_test", @@ -3838,6 +5712,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_with_proxy_bad_hostname_test", @@ -3849,6 +5728,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_with_proxy_cancel_after_accept_test", @@ -3860,6 +5744,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_with_proxy_cancel_after_accept_and_writes_closed_test", @@ -3871,6 +5760,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_with_proxy_cancel_after_invoke_test", @@ -3882,6 +5776,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_with_proxy_cancel_before_invoke_test", @@ -3893,6 +5792,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_with_proxy_cancel_in_a_vacuum_test", @@ -3904,6 +5808,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_with_proxy_census_simple_request_test", @@ -3915,6 +5824,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_with_proxy_default_host_test", @@ -3926,6 +5840,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_with_proxy_disappearing_server_test", @@ -3937,6 +5856,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_with_proxy_early_server_shutdown_finishes_inflight_calls_test", @@ -3948,6 +5872,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_with_proxy_early_server_shutdown_finishes_tags_test", @@ -3959,6 +5888,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_with_proxy_empty_batch_test", @@ -3970,6 +5904,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_with_proxy_graceful_server_shutdown_test", @@ -3981,6 +5920,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_with_proxy_invoke_large_request_test", @@ -3992,6 +5936,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_with_proxy_max_message_length_test", @@ -4003,6 +5952,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_with_proxy_no_op_test", @@ -4014,6 +5968,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_with_proxy_ping_pong_streaming_test", @@ -4025,6 +5984,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_with_proxy_registered_call_test", @@ -4036,6 +6000,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_with_proxy_request_response_with_binary_metadata_and_payload_test", @@ -4047,6 +6016,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_with_proxy_request_response_with_metadata_and_payload_test", @@ -4058,6 +6032,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_with_proxy_request_response_with_payload_test", @@ -4069,6 +6048,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_with_proxy_request_response_with_payload_and_call_creds_test", @@ -4080,6 +6064,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_with_proxy_request_response_with_trailing_metadata_and_payload_test", @@ -4091,6 +6080,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_with_proxy_request_with_large_metadata_test", @@ -4102,6 +6096,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_with_proxy_request_with_payload_test", @@ -4113,6 +6112,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_with_proxy_server_finishes_request_test", @@ -4124,6 +6128,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_with_proxy_simple_delayed_request_test", @@ -4135,6 +6144,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_with_proxy_simple_request_test", @@ -4146,6 +6160,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_with_proxy_simple_request_with_high_initial_sequence_number_test", @@ -4157,6 +6176,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_with_oauth2_fullstack_bad_hostname_test", @@ -4168,6 +6192,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_with_oauth2_fullstack_cancel_after_accept_test", @@ -4179,6 +6208,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_with_oauth2_fullstack_cancel_after_accept_and_writes_closed_test", @@ -4190,6 +6224,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_with_oauth2_fullstack_cancel_after_invoke_test", @@ -4201,6 +6240,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_with_oauth2_fullstack_cancel_before_invoke_test", @@ -4212,6 +6256,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_with_oauth2_fullstack_cancel_in_a_vacuum_test", @@ -4223,6 +6272,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_with_oauth2_fullstack_census_simple_request_test", @@ -4234,6 +6288,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_with_oauth2_fullstack_channel_connectivity_test", @@ -4245,6 +6304,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_with_oauth2_fullstack_default_host_test", @@ -4256,6 +6320,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_with_oauth2_fullstack_disappearing_server_test", @@ -4267,6 +6336,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_with_oauth2_fullstack_early_server_shutdown_finishes_inflight_calls_test", @@ -4278,6 +6352,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_with_oauth2_fullstack_early_server_shutdown_finishes_tags_test", @@ -4289,6 +6368,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_with_oauth2_fullstack_empty_batch_test", @@ -4300,6 +6384,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_with_oauth2_fullstack_graceful_server_shutdown_test", @@ -4311,6 +6400,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_with_oauth2_fullstack_invoke_large_request_test", @@ -4322,6 +6416,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_with_oauth2_fullstack_max_concurrent_streams_test", @@ -4333,6 +6432,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_with_oauth2_fullstack_max_message_length_test", @@ -4344,6 +6448,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_with_oauth2_fullstack_no_op_test", @@ -4355,6 +6464,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_with_oauth2_fullstack_ping_pong_streaming_test", @@ -4366,6 +6480,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_with_oauth2_fullstack_registered_call_test", @@ -4377,6 +6496,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_with_oauth2_fullstack_request_response_with_binary_metadata_and_payload_test", @@ -4388,6 +6512,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_with_oauth2_fullstack_request_response_with_metadata_and_payload_test", @@ -4399,6 +6528,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_with_oauth2_fullstack_request_response_with_payload_test", @@ -4410,6 +6544,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_with_oauth2_fullstack_request_response_with_payload_and_call_creds_test", @@ -4421,6 +6560,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_with_oauth2_fullstack_request_response_with_trailing_metadata_and_payload_test", @@ -4432,6 +6576,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_with_oauth2_fullstack_request_with_compressed_payload_test", @@ -4443,6 +6592,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_with_oauth2_fullstack_request_with_flags_test", @@ -4454,6 +6608,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_with_oauth2_fullstack_request_with_large_metadata_test", @@ -4465,6 +6624,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_with_oauth2_fullstack_request_with_payload_test", @@ -4476,6 +6640,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_with_oauth2_fullstack_server_finishes_request_test", @@ -4487,6 +6656,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_with_oauth2_fullstack_simple_delayed_request_test", @@ -4498,6 +6672,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_with_oauth2_fullstack_simple_request_test", @@ -4509,6 +6688,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_with_oauth2_fullstack_simple_request_with_high_initial_sequence_number_test", @@ -4520,6 +6704,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_bad_hostname_test", @@ -4531,6 +6720,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_cancel_after_accept_test", @@ -4542,6 +6736,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_cancel_after_accept_and_writes_closed_test", @@ -4553,6 +6752,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_cancel_after_invoke_test", @@ -4564,6 +6768,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_cancel_before_invoke_test", @@ -4575,6 +6784,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_cancel_in_a_vacuum_test", @@ -4586,6 +6800,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_census_simple_request_test", @@ -4597,6 +6816,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_early_server_shutdown_finishes_inflight_calls_test", @@ -4608,6 +6832,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_early_server_shutdown_finishes_tags_test", @@ -4619,6 +6848,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_empty_batch_test", @@ -4630,6 +6864,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_graceful_server_shutdown_test", @@ -4641,6 +6880,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_invoke_large_request_test", @@ -4652,6 +6896,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_max_concurrent_streams_test", @@ -4663,6 +6912,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_max_message_length_test", @@ -4674,6 +6928,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_no_op_test", @@ -4685,6 +6944,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_ping_pong_streaming_test", @@ -4696,6 +6960,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_registered_call_test", @@ -4707,6 +6976,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_request_response_with_binary_metadata_and_payload_test", @@ -4718,6 +6992,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_request_response_with_metadata_and_payload_test", @@ -4729,6 +7008,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_request_response_with_payload_test", @@ -4740,6 +7024,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_request_response_with_payload_and_call_creds_test", @@ -4751,6 +7040,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_request_response_with_trailing_metadata_and_payload_test", @@ -4762,6 +7056,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_request_with_compressed_payload_test", @@ -4773,6 +7072,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_request_with_flags_test", @@ -4784,6 +7088,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_request_with_large_metadata_test", @@ -4795,6 +7104,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_request_with_payload_test", @@ -4806,6 +7120,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_server_finishes_request_test", @@ -4817,6 +7136,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_simple_request_test", @@ -4828,6 +7152,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_simple_request_with_high_initial_sequence_number_test", @@ -4839,6 +7168,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_one_byte_at_a_time_bad_hostname_test", @@ -4850,6 +7184,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_one_byte_at_a_time_cancel_after_accept_test", @@ -4861,6 +7200,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_one_byte_at_a_time_cancel_after_accept_and_writes_closed_test", @@ -4872,6 +7216,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_one_byte_at_a_time_cancel_after_invoke_test", @@ -4883,6 +7232,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_one_byte_at_a_time_cancel_before_invoke_test", @@ -4894,6 +7248,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_one_byte_at_a_time_cancel_in_a_vacuum_test", @@ -4905,6 +7264,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_one_byte_at_a_time_census_simple_request_test", @@ -4916,6 +7280,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_one_byte_at_a_time_early_server_shutdown_finishes_inflight_calls_test", @@ -4927,6 +7296,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_one_byte_at_a_time_early_server_shutdown_finishes_tags_test", @@ -4938,6 +7312,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_one_byte_at_a_time_empty_batch_test", @@ -4949,6 +7328,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_one_byte_at_a_time_graceful_server_shutdown_test", @@ -4960,6 +7344,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_one_byte_at_a_time_invoke_large_request_test", @@ -4971,6 +7360,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_one_byte_at_a_time_max_concurrent_streams_test", @@ -4982,6 +7376,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_one_byte_at_a_time_max_message_length_test", @@ -4993,6 +7392,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_one_byte_at_a_time_no_op_test", @@ -5004,6 +7408,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_one_byte_at_a_time_ping_pong_streaming_test", @@ -5015,6 +7424,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_one_byte_at_a_time_registered_call_test", @@ -5026,6 +7440,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_one_byte_at_a_time_request_response_with_binary_metadata_and_payload_test", @@ -5037,6 +7456,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_one_byte_at_a_time_request_response_with_metadata_and_payload_test", @@ -5048,6 +7472,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_one_byte_at_a_time_request_response_with_payload_test", @@ -5059,6 +7488,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_one_byte_at_a_time_request_response_with_payload_and_call_creds_test", @@ -5070,6 +7504,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_one_byte_at_a_time_request_response_with_trailing_metadata_and_payload_test", @@ -5081,6 +7520,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_one_byte_at_a_time_request_with_compressed_payload_test", @@ -5092,6 +7536,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_one_byte_at_a_time_request_with_flags_test", @@ -5103,6 +7552,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_one_byte_at_a_time_request_with_large_metadata_test", @@ -5114,6 +7568,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_one_byte_at_a_time_request_with_payload_test", @@ -5125,6 +7584,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_one_byte_at_a_time_server_finishes_request_test", @@ -5136,6 +7600,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_one_byte_at_a_time_simple_request_test", @@ -5147,6 +7616,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_one_byte_at_a_time_simple_request_with_high_initial_sequence_number_test", @@ -5158,6 +7632,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_with_grpc_trace_bad_hostname_test", @@ -5169,6 +7649,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_with_grpc_trace_cancel_after_accept_test", @@ -5180,6 +7666,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_with_grpc_trace_cancel_after_accept_and_writes_closed_test", @@ -5191,6 +7683,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_with_grpc_trace_cancel_after_invoke_test", @@ -5202,6 +7700,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_with_grpc_trace_cancel_before_invoke_test", @@ -5213,6 +7717,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_with_grpc_trace_cancel_in_a_vacuum_test", @@ -5224,6 +7734,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_with_grpc_trace_census_simple_request_test", @@ -5235,6 +7751,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_with_grpc_trace_early_server_shutdown_finishes_inflight_calls_test", @@ -5246,6 +7768,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_with_grpc_trace_early_server_shutdown_finishes_tags_test", @@ -5257,6 +7785,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_with_grpc_trace_empty_batch_test", @@ -5268,6 +7802,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_with_grpc_trace_graceful_server_shutdown_test", @@ -5279,6 +7819,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_with_grpc_trace_invoke_large_request_test", @@ -5290,6 +7836,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_with_grpc_trace_max_concurrent_streams_test", @@ -5301,6 +7853,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_with_grpc_trace_max_message_length_test", @@ -5312,6 +7870,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_with_grpc_trace_no_op_test", @@ -5323,6 +7887,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_with_grpc_trace_ping_pong_streaming_test", @@ -5334,6 +7904,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_with_grpc_trace_registered_call_test", @@ -5345,6 +7921,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_with_grpc_trace_request_response_with_binary_metadata_and_payload_test", @@ -5356,6 +7938,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_with_grpc_trace_request_response_with_metadata_and_payload_test", @@ -5367,6 +7955,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_with_grpc_trace_request_response_with_payload_test", @@ -5378,6 +7972,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_with_grpc_trace_request_response_with_payload_and_call_creds_test", @@ -5389,6 +7989,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_with_grpc_trace_request_response_with_trailing_metadata_and_payload_test", @@ -5400,6 +8006,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_with_grpc_trace_request_with_compressed_payload_test", @@ -5411,6 +8023,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_with_grpc_trace_request_with_flags_test", @@ -5422,6 +8040,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_with_grpc_trace_request_with_large_metadata_test", @@ -5433,6 +8057,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_with_grpc_trace_request_with_payload_test", @@ -5444,6 +8074,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_with_grpc_trace_server_finishes_request_test", @@ -5455,6 +8091,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_with_grpc_trace_simple_request_test", @@ -5466,6 +8108,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_with_grpc_trace_simple_request_with_high_initial_sequence_number_test", @@ -5477,6 +8125,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_bad_hostname_unsecure_test", @@ -5488,6 +8142,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_cancel_after_accept_unsecure_test", @@ -5499,6 +8159,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_cancel_after_accept_and_writes_closed_unsecure_test", @@ -5510,6 +8176,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_cancel_after_invoke_unsecure_test", @@ -5521,6 +8193,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_cancel_before_invoke_unsecure_test", @@ -5532,6 +8210,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_cancel_in_a_vacuum_unsecure_test", @@ -5543,6 +8227,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_census_simple_request_unsecure_test", @@ -5554,6 +8244,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_channel_connectivity_unsecure_test", @@ -5565,6 +8261,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_default_host_unsecure_test", @@ -5576,6 +8278,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_disappearing_server_unsecure_test", @@ -5587,6 +8295,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_early_server_shutdown_finishes_inflight_calls_unsecure_test", @@ -5598,6 +8312,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_early_server_shutdown_finishes_tags_unsecure_test", @@ -5609,6 +8329,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_empty_batch_unsecure_test", @@ -5620,6 +8346,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_graceful_server_shutdown_unsecure_test", @@ -5631,6 +8363,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_invoke_large_request_unsecure_test", @@ -5642,6 +8380,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_max_concurrent_streams_unsecure_test", @@ -5653,6 +8397,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_max_message_length_unsecure_test", @@ -5664,6 +8414,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_no_op_unsecure_test", @@ -5675,6 +8431,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_ping_pong_streaming_unsecure_test", @@ -5686,6 +8448,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_registered_call_unsecure_test", @@ -5697,6 +8465,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_request_response_with_binary_metadata_and_payload_unsecure_test", @@ -5708,6 +8482,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_request_response_with_metadata_and_payload_unsecure_test", @@ -5719,6 +8499,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_request_response_with_payload_unsecure_test", @@ -5730,6 +8516,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_request_response_with_trailing_metadata_and_payload_unsecure_test", @@ -5741,6 +8533,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_request_with_compressed_payload_unsecure_test", @@ -5752,6 +8550,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_request_with_flags_unsecure_test", @@ -5763,6 +8567,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_request_with_large_metadata_unsecure_test", @@ -5774,6 +8584,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_request_with_payload_unsecure_test", @@ -5785,6 +8601,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_server_finishes_request_unsecure_test", @@ -5796,6 +8618,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_simple_delayed_request_unsecure_test", @@ -5807,6 +8635,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_simple_request_unsecure_test", @@ -5818,6 +8652,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_simple_request_with_high_initial_sequence_number_unsecure_test", @@ -5829,6 +8669,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_compression_bad_hostname_unsecure_test", @@ -5840,6 +8686,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_compression_cancel_after_accept_unsecure_test", @@ -5851,6 +8703,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_compression_cancel_after_accept_and_writes_closed_unsecure_test", @@ -5862,6 +8720,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_compression_cancel_after_invoke_unsecure_test", @@ -5873,6 +8737,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_compression_cancel_before_invoke_unsecure_test", @@ -5884,6 +8754,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_compression_cancel_in_a_vacuum_unsecure_test", @@ -5895,6 +8771,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_compression_census_simple_request_unsecure_test", @@ -5906,6 +8788,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_compression_channel_connectivity_unsecure_test", @@ -5917,6 +8805,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_compression_default_host_unsecure_test", @@ -5928,6 +8822,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_compression_disappearing_server_unsecure_test", @@ -5939,6 +8839,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_compression_early_server_shutdown_finishes_inflight_calls_unsecure_test", @@ -5950,6 +8856,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_compression_early_server_shutdown_finishes_tags_unsecure_test", @@ -5961,6 +8873,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_compression_empty_batch_unsecure_test", @@ -5972,6 +8890,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_compression_graceful_server_shutdown_unsecure_test", @@ -5983,6 +8907,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_compression_invoke_large_request_unsecure_test", @@ -5994,6 +8924,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_compression_max_concurrent_streams_unsecure_test", @@ -6005,6 +8941,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_compression_max_message_length_unsecure_test", @@ -6016,6 +8958,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_compression_no_op_unsecure_test", @@ -6027,6 +8975,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_compression_ping_pong_streaming_unsecure_test", @@ -6038,6 +8992,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_compression_registered_call_unsecure_test", @@ -6049,6 +9009,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_compression_request_response_with_binary_metadata_and_payload_unsecure_test", @@ -6060,6 +9026,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_compression_request_response_with_metadata_and_payload_unsecure_test", @@ -6071,6 +9043,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_compression_request_response_with_payload_unsecure_test", @@ -6082,6 +9060,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_compression_request_response_with_trailing_metadata_and_payload_unsecure_test", @@ -6093,6 +9077,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_compression_request_with_compressed_payload_unsecure_test", @@ -6104,6 +9094,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_compression_request_with_flags_unsecure_test", @@ -6115,6 +9111,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_compression_request_with_large_metadata_unsecure_test", @@ -6126,6 +9128,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_compression_request_with_payload_unsecure_test", @@ -6137,6 +9145,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_compression_server_finishes_request_unsecure_test", @@ -6148,6 +9162,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_compression_simple_delayed_request_unsecure_test", @@ -6159,6 +9179,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_compression_simple_request_unsecure_test", @@ -6170,6 +9196,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_compression_simple_request_with_high_initial_sequence_number_unsecure_test", @@ -6181,6 +9213,11 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_bad_hostname_unsecure_test", @@ -6191,6 +9228,11 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_cancel_after_accept_unsecure_test", @@ -6201,6 +9243,11 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_cancel_after_accept_and_writes_closed_unsecure_test", @@ -6211,6 +9258,11 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_cancel_after_invoke_unsecure_test", @@ -6221,6 +9273,11 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_cancel_before_invoke_unsecure_test", @@ -6231,6 +9288,11 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_cancel_in_a_vacuum_unsecure_test", @@ -6241,6 +9303,11 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_census_simple_request_unsecure_test", @@ -6251,6 +9318,11 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_channel_connectivity_unsecure_test", @@ -6261,6 +9333,11 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_disappearing_server_unsecure_test", @@ -6271,6 +9348,11 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_early_server_shutdown_finishes_inflight_calls_unsecure_test", @@ -6281,6 +9363,11 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_early_server_shutdown_finishes_tags_unsecure_test", @@ -6291,6 +9378,11 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_empty_batch_unsecure_test", @@ -6301,6 +9393,11 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_graceful_server_shutdown_unsecure_test", @@ -6311,6 +9408,11 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_invoke_large_request_unsecure_test", @@ -6321,6 +9423,11 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_max_concurrent_streams_unsecure_test", @@ -6331,6 +9438,11 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_max_message_length_unsecure_test", @@ -6341,6 +9453,11 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_no_op_unsecure_test", @@ -6351,6 +9468,11 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_ping_pong_streaming_unsecure_test", @@ -6361,6 +9483,11 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_registered_call_unsecure_test", @@ -6371,6 +9498,11 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_request_response_with_binary_metadata_and_payload_unsecure_test", @@ -6381,6 +9513,11 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_request_response_with_metadata_and_payload_unsecure_test", @@ -6391,6 +9528,11 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_request_response_with_payload_unsecure_test", @@ -6401,6 +9543,11 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_request_response_with_trailing_metadata_and_payload_unsecure_test", @@ -6411,6 +9558,11 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_request_with_compressed_payload_unsecure_test", @@ -6421,6 +9573,11 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_request_with_flags_unsecure_test", @@ -6431,6 +9588,11 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_request_with_large_metadata_unsecure_test", @@ -6441,6 +9603,11 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_request_with_payload_unsecure_test", @@ -6451,6 +9618,11 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_server_finishes_request_unsecure_test", @@ -6461,6 +9633,11 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_simple_delayed_request_unsecure_test", @@ -6471,6 +9648,11 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_simple_request_unsecure_test", @@ -6481,6 +9663,11 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_simple_request_with_high_initial_sequence_number_unsecure_test", @@ -6491,6 +9678,9 @@ ] }, { + "ci_platforms": [ + "linux" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_with_poll_bad_hostname_unsecure_test", @@ -6499,6 +9689,9 @@ ] }, { + "ci_platforms": [ + "linux" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_with_poll_cancel_after_accept_unsecure_test", @@ -6507,6 +9700,9 @@ ] }, { + "ci_platforms": [ + "linux" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_with_poll_cancel_after_accept_and_writes_closed_unsecure_test", @@ -6515,6 +9711,9 @@ ] }, { + "ci_platforms": [ + "linux" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_with_poll_cancel_after_invoke_unsecure_test", @@ -6523,6 +9722,9 @@ ] }, { + "ci_platforms": [ + "linux" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_with_poll_cancel_before_invoke_unsecure_test", @@ -6531,6 +9733,9 @@ ] }, { + "ci_platforms": [ + "linux" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_with_poll_cancel_in_a_vacuum_unsecure_test", @@ -6539,6 +9744,9 @@ ] }, { + "ci_platforms": [ + "linux" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_with_poll_census_simple_request_unsecure_test", @@ -6547,6 +9755,9 @@ ] }, { + "ci_platforms": [ + "linux" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_with_poll_channel_connectivity_unsecure_test", @@ -6555,6 +9766,9 @@ ] }, { + "ci_platforms": [ + "linux" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_with_poll_disappearing_server_unsecure_test", @@ -6563,6 +9777,9 @@ ] }, { + "ci_platforms": [ + "linux" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_with_poll_early_server_shutdown_finishes_inflight_calls_unsecure_test", @@ -6571,6 +9788,9 @@ ] }, { + "ci_platforms": [ + "linux" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_with_poll_early_server_shutdown_finishes_tags_unsecure_test", @@ -6579,6 +9799,9 @@ ] }, { + "ci_platforms": [ + "linux" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_with_poll_empty_batch_unsecure_test", @@ -6587,6 +9810,9 @@ ] }, { + "ci_platforms": [ + "linux" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_with_poll_graceful_server_shutdown_unsecure_test", @@ -6595,6 +9821,9 @@ ] }, { + "ci_platforms": [ + "linux" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_with_poll_invoke_large_request_unsecure_test", @@ -6603,6 +9832,9 @@ ] }, { + "ci_platforms": [ + "linux" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_with_poll_max_concurrent_streams_unsecure_test", @@ -6611,6 +9843,9 @@ ] }, { + "ci_platforms": [ + "linux" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_with_poll_max_message_length_unsecure_test", @@ -6619,6 +9854,9 @@ ] }, { + "ci_platforms": [ + "linux" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_with_poll_no_op_unsecure_test", @@ -6627,6 +9865,9 @@ ] }, { + "ci_platforms": [ + "linux" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_with_poll_ping_pong_streaming_unsecure_test", @@ -6635,6 +9876,9 @@ ] }, { + "ci_platforms": [ + "linux" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_with_poll_registered_call_unsecure_test", @@ -6643,6 +9887,9 @@ ] }, { + "ci_platforms": [ + "linux" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_with_poll_request_response_with_binary_metadata_and_payload_unsecure_test", @@ -6651,6 +9898,9 @@ ] }, { + "ci_platforms": [ + "linux" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_with_poll_request_response_with_metadata_and_payload_unsecure_test", @@ -6659,6 +9909,9 @@ ] }, { + "ci_platforms": [ + "linux" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_with_poll_request_response_with_payload_unsecure_test", @@ -6667,6 +9920,9 @@ ] }, { + "ci_platforms": [ + "linux" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_with_poll_request_response_with_trailing_metadata_and_payload_unsecure_test", @@ -6675,6 +9931,9 @@ ] }, { + "ci_platforms": [ + "linux" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_with_poll_request_with_compressed_payload_unsecure_test", @@ -6683,6 +9942,9 @@ ] }, { + "ci_platforms": [ + "linux" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_with_poll_request_with_flags_unsecure_test", @@ -6691,6 +9953,9 @@ ] }, { + "ci_platforms": [ + "linux" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_with_poll_request_with_large_metadata_unsecure_test", @@ -6699,6 +9964,9 @@ ] }, { + "ci_platforms": [ + "linux" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_with_poll_request_with_payload_unsecure_test", @@ -6707,6 +9975,9 @@ ] }, { + "ci_platforms": [ + "linux" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_with_poll_server_finishes_request_unsecure_test", @@ -6715,6 +9986,9 @@ ] }, { + "ci_platforms": [ + "linux" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_with_poll_simple_delayed_request_unsecure_test", @@ -6723,6 +9997,9 @@ ] }, { + "ci_platforms": [ + "linux" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_with_poll_simple_request_unsecure_test", @@ -6731,6 +10008,9 @@ ] }, { + "ci_platforms": [ + "linux" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_with_poll_simple_request_with_high_initial_sequence_number_unsecure_test", @@ -6739,6 +10019,9 @@ ] }, { + "ci_platforms": [ + "linux" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_poll_bad_hostname_unsecure_test", @@ -6747,6 +10030,9 @@ ] }, { + "ci_platforms": [ + "linux" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_poll_cancel_after_accept_unsecure_test", @@ -6755,6 +10041,9 @@ ] }, { + "ci_platforms": [ + "linux" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_poll_cancel_after_accept_and_writes_closed_unsecure_test", @@ -6763,6 +10052,9 @@ ] }, { + "ci_platforms": [ + "linux" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_poll_cancel_after_invoke_unsecure_test", @@ -6771,6 +10063,9 @@ ] }, { + "ci_platforms": [ + "linux" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_poll_cancel_before_invoke_unsecure_test", @@ -6779,6 +10074,9 @@ ] }, { + "ci_platforms": [ + "linux" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_poll_cancel_in_a_vacuum_unsecure_test", @@ -6787,6 +10085,9 @@ ] }, { + "ci_platforms": [ + "linux" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_poll_census_simple_request_unsecure_test", @@ -6795,6 +10096,9 @@ ] }, { + "ci_platforms": [ + "linux" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_poll_channel_connectivity_unsecure_test", @@ -6803,6 +10107,9 @@ ] }, { + "ci_platforms": [ + "linux" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_poll_default_host_unsecure_test", @@ -6811,6 +10118,9 @@ ] }, { + "ci_platforms": [ + "linux" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_poll_disappearing_server_unsecure_test", @@ -6819,6 +10129,9 @@ ] }, { + "ci_platforms": [ + "linux" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_poll_early_server_shutdown_finishes_inflight_calls_unsecure_test", @@ -6827,6 +10140,9 @@ ] }, { + "ci_platforms": [ + "linux" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_poll_early_server_shutdown_finishes_tags_unsecure_test", @@ -6835,6 +10151,9 @@ ] }, { + "ci_platforms": [ + "linux" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_poll_empty_batch_unsecure_test", @@ -6843,6 +10162,9 @@ ] }, { + "ci_platforms": [ + "linux" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_poll_graceful_server_shutdown_unsecure_test", @@ -6851,6 +10173,9 @@ ] }, { + "ci_platforms": [ + "linux" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_poll_invoke_large_request_unsecure_test", @@ -6859,6 +10184,9 @@ ] }, { + "ci_platforms": [ + "linux" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_poll_max_concurrent_streams_unsecure_test", @@ -6867,6 +10195,9 @@ ] }, { + "ci_platforms": [ + "linux" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_poll_max_message_length_unsecure_test", @@ -6875,6 +10206,9 @@ ] }, { + "ci_platforms": [ + "linux" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_poll_no_op_unsecure_test", @@ -6883,6 +10217,9 @@ ] }, { + "ci_platforms": [ + "linux" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_poll_ping_pong_streaming_unsecure_test", @@ -6891,6 +10228,9 @@ ] }, { + "ci_platforms": [ + "linux" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_poll_registered_call_unsecure_test", @@ -6899,6 +10239,9 @@ ] }, { + "ci_platforms": [ + "linux" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_poll_request_response_with_binary_metadata_and_payload_unsecure_test", @@ -6907,6 +10250,9 @@ ] }, { + "ci_platforms": [ + "linux" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_poll_request_response_with_metadata_and_payload_unsecure_test", @@ -6915,6 +10261,9 @@ ] }, { + "ci_platforms": [ + "linux" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_poll_request_response_with_payload_unsecure_test", @@ -6923,6 +10272,9 @@ ] }, { + "ci_platforms": [ + "linux" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_poll_request_response_with_trailing_metadata_and_payload_unsecure_test", @@ -6931,6 +10283,9 @@ ] }, { + "ci_platforms": [ + "linux" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_poll_request_with_compressed_payload_unsecure_test", @@ -6939,6 +10294,9 @@ ] }, { + "ci_platforms": [ + "linux" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_poll_request_with_flags_unsecure_test", @@ -6947,6 +10305,9 @@ ] }, { + "ci_platforms": [ + "linux" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_poll_request_with_large_metadata_unsecure_test", @@ -6955,6 +10316,9 @@ ] }, { + "ci_platforms": [ + "linux" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_poll_request_with_payload_unsecure_test", @@ -6963,6 +10327,9 @@ ] }, { + "ci_platforms": [ + "linux" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_poll_server_finishes_request_unsecure_test", @@ -6971,6 +10338,9 @@ ] }, { + "ci_platforms": [ + "linux" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_poll_simple_delayed_request_unsecure_test", @@ -6979,6 +10349,9 @@ ] }, { + "ci_platforms": [ + "linux" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_poll_simple_request_unsecure_test", @@ -6987,6 +10360,9 @@ ] }, { + "ci_platforms": [ + "linux" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_poll_simple_request_with_high_initial_sequence_number_unsecure_test", @@ -6995,6 +10371,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_proxy_bad_hostname_unsecure_test", @@ -7006,6 +10387,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_proxy_cancel_after_accept_unsecure_test", @@ -7017,6 +10403,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_proxy_cancel_after_accept_and_writes_closed_unsecure_test", @@ -7028,6 +10419,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_proxy_cancel_after_invoke_unsecure_test", @@ -7039,6 +10435,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_proxy_cancel_before_invoke_unsecure_test", @@ -7050,6 +10451,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_proxy_cancel_in_a_vacuum_unsecure_test", @@ -7061,6 +10467,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_proxy_census_simple_request_unsecure_test", @@ -7072,6 +10483,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_proxy_default_host_unsecure_test", @@ -7083,6 +10499,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_proxy_disappearing_server_unsecure_test", @@ -7094,6 +10515,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_proxy_early_server_shutdown_finishes_inflight_calls_unsecure_test", @@ -7105,6 +10531,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_proxy_early_server_shutdown_finishes_tags_unsecure_test", @@ -7116,6 +10547,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_proxy_empty_batch_unsecure_test", @@ -7127,6 +10563,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_proxy_graceful_server_shutdown_unsecure_test", @@ -7138,6 +10579,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_proxy_invoke_large_request_unsecure_test", @@ -7149,6 +10595,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_proxy_max_message_length_unsecure_test", @@ -7160,6 +10611,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_proxy_no_op_unsecure_test", @@ -7171,6 +10627,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_proxy_ping_pong_streaming_unsecure_test", @@ -7182,6 +10643,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_proxy_registered_call_unsecure_test", @@ -7193,6 +10659,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_proxy_request_response_with_binary_metadata_and_payload_unsecure_test", @@ -7204,6 +10675,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_proxy_request_response_with_metadata_and_payload_unsecure_test", @@ -7215,6 +10691,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_proxy_request_response_with_payload_unsecure_test", @@ -7226,6 +10707,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_proxy_request_response_with_trailing_metadata_and_payload_unsecure_test", @@ -7237,6 +10723,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_proxy_request_with_large_metadata_unsecure_test", @@ -7248,6 +10739,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_proxy_request_with_payload_unsecure_test", @@ -7259,6 +10755,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_proxy_server_finishes_request_unsecure_test", @@ -7270,6 +10771,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_proxy_simple_delayed_request_unsecure_test", @@ -7281,6 +10787,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_proxy_simple_request_unsecure_test", @@ -7292,6 +10803,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_proxy_simple_request_with_high_initial_sequence_number_unsecure_test", @@ -7303,6 +10819,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_bad_hostname_unsecure_test", @@ -7314,6 +10835,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_cancel_after_accept_unsecure_test", @@ -7325,6 +10851,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_cancel_after_accept_and_writes_closed_unsecure_test", @@ -7336,6 +10867,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_cancel_after_invoke_unsecure_test", @@ -7347,6 +10883,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_cancel_before_invoke_unsecure_test", @@ -7358,6 +10899,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_cancel_in_a_vacuum_unsecure_test", @@ -7369,6 +10915,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_census_simple_request_unsecure_test", @@ -7380,6 +10931,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_early_server_shutdown_finishes_inflight_calls_unsecure_test", @@ -7391,6 +10947,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_early_server_shutdown_finishes_tags_unsecure_test", @@ -7402,6 +10963,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_empty_batch_unsecure_test", @@ -7413,6 +10979,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_graceful_server_shutdown_unsecure_test", @@ -7424,6 +10995,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_invoke_large_request_unsecure_test", @@ -7435,6 +11011,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_max_concurrent_streams_unsecure_test", @@ -7446,6 +11027,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_max_message_length_unsecure_test", @@ -7457,6 +11043,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_no_op_unsecure_test", @@ -7468,6 +11059,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_ping_pong_streaming_unsecure_test", @@ -7479,6 +11075,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_registered_call_unsecure_test", @@ -7490,6 +11091,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_request_response_with_binary_metadata_and_payload_unsecure_test", @@ -7501,6 +11107,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_request_response_with_metadata_and_payload_unsecure_test", @@ -7512,6 +11123,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_request_response_with_payload_unsecure_test", @@ -7523,6 +11139,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_request_response_with_trailing_metadata_and_payload_unsecure_test", @@ -7534,6 +11155,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_request_with_compressed_payload_unsecure_test", @@ -7545,6 +11171,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_request_with_flags_unsecure_test", @@ -7556,6 +11187,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_request_with_large_metadata_unsecure_test", @@ -7567,6 +11203,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_request_with_payload_unsecure_test", @@ -7578,6 +11219,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_server_finishes_request_unsecure_test", @@ -7589,6 +11235,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_simple_request_unsecure_test", @@ -7600,6 +11251,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_simple_request_with_high_initial_sequence_number_unsecure_test", @@ -7611,6 +11267,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_one_byte_at_a_time_bad_hostname_unsecure_test", @@ -7622,6 +11283,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_one_byte_at_a_time_cancel_after_accept_unsecure_test", @@ -7633,6 +11299,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_one_byte_at_a_time_cancel_after_accept_and_writes_closed_unsecure_test", @@ -7644,6 +11315,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_one_byte_at_a_time_cancel_after_invoke_unsecure_test", @@ -7655,6 +11331,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_one_byte_at_a_time_cancel_before_invoke_unsecure_test", @@ -7666,6 +11347,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_one_byte_at_a_time_cancel_in_a_vacuum_unsecure_test", @@ -7677,6 +11363,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_one_byte_at_a_time_census_simple_request_unsecure_test", @@ -7688,6 +11379,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_one_byte_at_a_time_early_server_shutdown_finishes_inflight_calls_unsecure_test", @@ -7699,6 +11395,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_one_byte_at_a_time_early_server_shutdown_finishes_tags_unsecure_test", @@ -7710,6 +11411,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_one_byte_at_a_time_empty_batch_unsecure_test", @@ -7721,6 +11427,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_one_byte_at_a_time_graceful_server_shutdown_unsecure_test", @@ -7732,6 +11443,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_one_byte_at_a_time_invoke_large_request_unsecure_test", @@ -7743,6 +11459,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_one_byte_at_a_time_max_concurrent_streams_unsecure_test", @@ -7754,6 +11475,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_one_byte_at_a_time_max_message_length_unsecure_test", @@ -7765,6 +11491,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_one_byte_at_a_time_no_op_unsecure_test", @@ -7776,6 +11507,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_one_byte_at_a_time_ping_pong_streaming_unsecure_test", @@ -7787,6 +11523,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_one_byte_at_a_time_registered_call_unsecure_test", @@ -7798,6 +11539,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_one_byte_at_a_time_request_response_with_binary_metadata_and_payload_unsecure_test", @@ -7809,6 +11555,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_one_byte_at_a_time_request_response_with_metadata_and_payload_unsecure_test", @@ -7820,6 +11571,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_one_byte_at_a_time_request_response_with_payload_unsecure_test", @@ -7831,6 +11587,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_one_byte_at_a_time_request_response_with_trailing_metadata_and_payload_unsecure_test", @@ -7842,6 +11603,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_one_byte_at_a_time_request_with_compressed_payload_unsecure_test", @@ -7853,6 +11619,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_one_byte_at_a_time_request_with_flags_unsecure_test", @@ -7864,6 +11635,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_one_byte_at_a_time_request_with_large_metadata_unsecure_test", @@ -7875,6 +11651,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_one_byte_at_a_time_request_with_payload_unsecure_test", @@ -7886,6 +11667,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_one_byte_at_a_time_server_finishes_request_unsecure_test", @@ -7897,6 +11683,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_one_byte_at_a_time_simple_request_unsecure_test", @@ -7908,6 +11699,11 @@ ] }, { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_one_byte_at_a_time_simple_request_with_high_initial_sequence_number_unsecure_test", @@ -7919,6 +11715,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_with_grpc_trace_bad_hostname_unsecure_test", @@ -7930,6 +11732,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_with_grpc_trace_cancel_after_accept_unsecure_test", @@ -7941,6 +11749,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_with_grpc_trace_cancel_after_accept_and_writes_closed_unsecure_test", @@ -7952,6 +11766,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_with_grpc_trace_cancel_after_invoke_unsecure_test", @@ -7963,6 +11783,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_with_grpc_trace_cancel_before_invoke_unsecure_test", @@ -7974,6 +11800,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_with_grpc_trace_cancel_in_a_vacuum_unsecure_test", @@ -7985,6 +11817,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_with_grpc_trace_census_simple_request_unsecure_test", @@ -7996,6 +11834,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_with_grpc_trace_early_server_shutdown_finishes_inflight_calls_unsecure_test", @@ -8007,6 +11851,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_with_grpc_trace_early_server_shutdown_finishes_tags_unsecure_test", @@ -8018,6 +11868,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_with_grpc_trace_empty_batch_unsecure_test", @@ -8029,6 +11885,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_with_grpc_trace_graceful_server_shutdown_unsecure_test", @@ -8040,6 +11902,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_with_grpc_trace_invoke_large_request_unsecure_test", @@ -8051,6 +11919,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_with_grpc_trace_max_concurrent_streams_unsecure_test", @@ -8062,6 +11936,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_with_grpc_trace_max_message_length_unsecure_test", @@ -8073,6 +11953,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_with_grpc_trace_no_op_unsecure_test", @@ -8084,6 +11970,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_with_grpc_trace_ping_pong_streaming_unsecure_test", @@ -8095,6 +11987,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_with_grpc_trace_registered_call_unsecure_test", @@ -8106,6 +12004,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_with_grpc_trace_request_response_with_binary_metadata_and_payload_unsecure_test", @@ -8117,6 +12021,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_with_grpc_trace_request_response_with_metadata_and_payload_unsecure_test", @@ -8128,6 +12038,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_with_grpc_trace_request_response_with_payload_unsecure_test", @@ -8139,6 +12055,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_with_grpc_trace_request_response_with_trailing_metadata_and_payload_unsecure_test", @@ -8150,6 +12072,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_with_grpc_trace_request_with_compressed_payload_unsecure_test", @@ -8161,6 +12089,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_with_grpc_trace_request_with_flags_unsecure_test", @@ -8172,6 +12106,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_with_grpc_trace_request_with_large_metadata_unsecure_test", @@ -8183,6 +12123,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_with_grpc_trace_request_with_payload_unsecure_test", @@ -8194,6 +12140,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_with_grpc_trace_server_finishes_request_unsecure_test", @@ -8205,6 +12157,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_with_grpc_trace_simple_request_unsecure_test", @@ -8216,6 +12174,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "chttp2_socket_pair_with_grpc_trace_simple_request_with_high_initial_sequence_number_unsecure_test", @@ -8227,6 +12191,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "connection_prefix_bad_client_test", @@ -8238,6 +12208,12 @@ ] }, { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], "flaky": false, "language": "c", "name": "initial_settings_frame_bad_client_test", @@ -8249,4 +12225,3 @@ ] } ] - |