aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--.gitignore3
-rw-r--r--BUILD32
-rw-r--r--Makefile12
-rw-r--r--build.json13
-rw-r--r--doc/naming.md52
-rw-r--r--doc/server-reflection.md183
-rw-r--r--gRPC.podspec20
-rw-r--r--include/grpc++/channel_interface.h30
-rw-r--r--include/grpc++/stream.h6
-rw-r--r--include/grpc/grpc_security.h45
-rw-r--r--src/core/channel/client_channel.c4
-rw-r--r--src/core/channel/compress_filter.c10
-rw-r--r--src/core/httpcli/httpcli.c72
-rw-r--r--src/core/httpcli/httpcli.h14
-rw-r--r--src/core/httpcli/httpcli_security_connector.c49
-rw-r--r--src/core/security/client_auth_filter.c7
-rw-r--r--src/core/security/credentials.c58
-rw-r--r--src/core/security/credentials.h14
-rw-r--r--src/core/security/jwt_verifier.c4
-rw-r--r--src/core/security/security_connector.c32
-rw-r--r--src/core/security/security_context.c132
-rw-r--r--src/core/security/security_context.h37
-rw-r--r--src/core/security/server_auth_filter.c146
-rw-r--r--src/core/security/server_secure_chttp2.c14
-rw-r--r--src/core/surface/call.c30
-rw-r--r--src/core/surface/secure_channel_create.c4
-rw-r--r--src/core/transport/chttp2/internal.h2
-rw-r--r--src/core/transport/chttp2_transport.c113
-rw-r--r--src/core/transport/metadata.c2
-rw-r--r--src/core/transport/stream_op.h2
-rw-r--r--src/core/transport/transport.c52
-rw-r--r--src/core/transport/transport.h13
-rw-r--r--src/cpp/client/channel.cc40
-rw-r--r--src/cpp/client/channel.h15
-rw-r--r--src/objective-c/GRPCClient/GRPCCall+OAuth2.h (renamed from src/core/httpcli/httpcli_security_connector.h)20
-rw-r--r--src/objective-c/GRPCClient/GRPCCall+OAuth2.m63
-rw-r--r--src/objective-c/GRPCClient/GRPCCall+Tests.h11
-rw-r--r--src/objective-c/GRPCClient/GRPCCall+Tests.m8
-rw-r--r--src/objective-c/GRPCClient/private/GRPCHost.m32
-rw-r--r--src/objective-c/tests/GRPCClientTests.m12
-rw-r--r--src/objective-c/tests/InteropTests.h2
-rw-r--r--src/objective-c/tests/InteropTests.m10
-rw-r--r--templates/tools/run_tests/tests.json.template2
-rw-r--r--test/core/end2end/end2end_tests.h2
-rw-r--r--test/core/end2end/fixtures/chttp2_fake_security.c25
-rw-r--r--test/core/end2end/fixtures/chttp2_simple_ssl_fullstack.c24
-rw-r--r--test/core/end2end/fixtures/chttp2_simple_ssl_fullstack_with_poll.c24
-rw-r--r--test/core/end2end/fixtures/chttp2_simple_ssl_fullstack_with_proxy.c24
-rw-r--r--test/core/end2end/fixtures/chttp2_simple_ssl_with_oauth2_fullstack.c66
-rw-r--r--test/core/end2end/fixtures/chttp2_socket_pair_with_grpc_trace.c4
-rwxr-xr-xtest/core/end2end/gen_build_json.py28
-rw-r--r--test/core/end2end/tests/request_response_with_payload_and_call_creds.c129
-rw-r--r--test/core/httpcli/httpcli_test.c4
-rw-r--r--test/core/security/auth_context_test.c73
-rw-r--r--test/core/security/credentials_test.c14
-rw-r--r--test/core/security/jwt_verifier_test.c10
-rw-r--r--test/core/util/port_posix.c74
-rw-r--r--test/cpp/common/auth_property_iterator_test.cc17
-rw-r--r--test/cpp/common/secure_auth_context_test.cc24
-rw-r--r--test/cpp/end2end/end2end_test.cc24
-rwxr-xr-xtools/buildgen/plugins/expand_bin_attrs.py2
-rw-r--r--tools/doxygen/Doxyfile.core.internal13
-rwxr-xr-xtools/run_tests/jobset.py28
-rwxr-xr-xtools/run_tests/port_server.py117
-rwxr-xr-xtools/run_tests/run_tests.py51
-rw-r--r--tools/run_tests/sources_and_headers.json11
-rw-r--r--tools/run_tests/tests.json3977
-rw-r--r--vsprojects/grpc/grpc.vcxproj19
-rw-r--r--vsprojects/grpc/grpc.vcxproj.filters39
-rw-r--r--vsprojects/grpc_unsecure/grpc_unsecure.vcxproj9
-rw-r--r--vsprojects/grpc_unsecure/grpc_unsecure.vcxproj.filters21
71 files changed, 5865 insertions, 410 deletions
diff --git a/.gitignore b/.gitignore
index f5ca501db2..45f8fdaa46 100644
--- a/.gitignore
+++ b/.gitignore
@@ -36,3 +36,6 @@ cache.mk
# Temporary test reports
report.xml
+
+# port server log
+portlog.txt
diff --git a/BUILD b/BUILD
index 13cd31f763..606387384a 100644
--- a/BUILD
+++ b/BUILD
@@ -132,10 +132,6 @@ cc_library(
cc_library(
name = "grpc",
srcs = [
- "src/core/httpcli/format_request.h",
- "src/core/httpcli/httpcli.h",
- "src/core/httpcli/httpcli_security_connector.h",
- "src/core/httpcli/parser.h",
"src/core/security/auth_filters.h",
"src/core/security/base64.h",
"src/core/security/credentials.h",
@@ -175,6 +171,9 @@ cc_library(
"src/core/client_config/uri_parser.h",
"src/core/compression/message_compress.h",
"src/core/debug/trace.h",
+ "src/core/httpcli/format_request.h",
+ "src/core/httpcli/httpcli.h",
+ "src/core/httpcli/parser.h",
"src/core/iomgr/alarm.h",
"src/core/iomgr/alarm_heap.h",
"src/core/iomgr/alarm_internal.h",
@@ -247,10 +246,7 @@ cc_library(
"src/core/transport/transport_impl.h",
"src/core/census/context.h",
"src/core/census/rpc_stat_id.h",
- "src/core/httpcli/format_request.c",
- "src/core/httpcli/httpcli.c",
"src/core/httpcli/httpcli_security_connector.c",
- "src/core/httpcli/parser.c",
"src/core/security/base64.c",
"src/core/security/client_auth_filter.c",
"src/core/security/credentials.c",
@@ -297,6 +293,9 @@ cc_library(
"src/core/compression/algorithm.c",
"src/core/compression/message_compress.c",
"src/core/debug/trace.c",
+ "src/core/httpcli/format_request.c",
+ "src/core/httpcli/httpcli.c",
+ "src/core/httpcli/parser.c",
"src/core/iomgr/alarm.c",
"src/core/iomgr/alarm_heap.c",
"src/core/iomgr/endpoint.c",
@@ -435,6 +434,9 @@ cc_library(
"src/core/client_config/uri_parser.h",
"src/core/compression/message_compress.h",
"src/core/debug/trace.h",
+ "src/core/httpcli/format_request.h",
+ "src/core/httpcli/httpcli.h",
+ "src/core/httpcli/parser.h",
"src/core/iomgr/alarm.h",
"src/core/iomgr/alarm_heap.h",
"src/core/iomgr/alarm_internal.h",
@@ -534,6 +536,9 @@ cc_library(
"src/core/compression/algorithm.c",
"src/core/compression/message_compress.c",
"src/core/debug/trace.c",
+ "src/core/httpcli/format_request.c",
+ "src/core/httpcli/httpcli.c",
+ "src/core/httpcli/parser.c",
"src/core/iomgr/alarm.c",
"src/core/iomgr/alarm_heap.c",
"src/core/iomgr/endpoint.c",
@@ -991,10 +996,7 @@ objc_library(
objc_library(
name = "grpc_objc",
srcs = [
- "src/core/httpcli/format_request.c",
- "src/core/httpcli/httpcli.c",
"src/core/httpcli/httpcli_security_connector.c",
- "src/core/httpcli/parser.c",
"src/core/security/base64.c",
"src/core/security/client_auth_filter.c",
"src/core/security/credentials.c",
@@ -1041,6 +1043,9 @@ objc_library(
"src/core/compression/algorithm.c",
"src/core/compression/message_compress.c",
"src/core/debug/trace.c",
+ "src/core/httpcli/format_request.c",
+ "src/core/httpcli/httpcli.c",
+ "src/core/httpcli/parser.c",
"src/core/iomgr/alarm.c",
"src/core/iomgr/alarm_heap.c",
"src/core/iomgr/endpoint.c",
@@ -1138,10 +1143,6 @@ objc_library(
"include/grpc/grpc.h",
"include/grpc/status.h",
"include/grpc/census.h",
- "src/core/httpcli/format_request.h",
- "src/core/httpcli/httpcli.h",
- "src/core/httpcli/httpcli_security_connector.h",
- "src/core/httpcli/parser.h",
"src/core/security/auth_filters.h",
"src/core/security/base64.h",
"src/core/security/credentials.h",
@@ -1181,6 +1182,9 @@ objc_library(
"src/core/client_config/uri_parser.h",
"src/core/compression/message_compress.h",
"src/core/debug/trace.h",
+ "src/core/httpcli/format_request.h",
+ "src/core/httpcli/httpcli.h",
+ "src/core/httpcli/parser.h",
"src/core/iomgr/alarm.h",
"src/core/iomgr/alarm_heap.h",
"src/core/iomgr/alarm_internal.h",
diff --git a/Makefile b/Makefile
index a87cdf81b4..e5cb7bed09 100644
--- a/Makefile
+++ b/Makefile
@@ -4056,10 +4056,7 @@ endif
LIBGRPC_SRC = \
- src/core/httpcli/format_request.c \
- src/core/httpcli/httpcli.c \
src/core/httpcli/httpcli_security_connector.c \
- src/core/httpcli/parser.c \
src/core/security/base64.c \
src/core/security/client_auth_filter.c \
src/core/security/credentials.c \
@@ -4106,6 +4103,9 @@ LIBGRPC_SRC = \
src/core/compression/algorithm.c \
src/core/compression/message_compress.c \
src/core/debug/trace.c \
+ src/core/httpcli/format_request.c \
+ src/core/httpcli/httpcli.c \
+ src/core/httpcli/parser.c \
src/core/iomgr/alarm.c \
src/core/iomgr/alarm_heap.c \
src/core/iomgr/endpoint.c \
@@ -4375,6 +4375,9 @@ LIBGRPC_UNSECURE_SRC = \
src/core/compression/algorithm.c \
src/core/compression/message_compress.c \
src/core/debug/trace.c \
+ src/core/httpcli/format_request.c \
+ src/core/httpcli/httpcli.c \
+ src/core/httpcli/parser.c \
src/core/iomgr/alarm.c \
src/core/iomgr/alarm_heap.c \
src/core/iomgr/endpoint.c \
@@ -20552,10 +20555,7 @@ ifneq ($(OPENSSL_DEP),)
# otherwise parallel compilation will fail if a source is compiled first.
examples/pubsub/publisher.cc: $(OPENSSL_DEP)
examples/pubsub/subscriber.cc: $(OPENSSL_DEP)
-src/core/httpcli/format_request.c: $(OPENSSL_DEP)
-src/core/httpcli/httpcli.c: $(OPENSSL_DEP)
src/core/httpcli/httpcli_security_connector.c: $(OPENSSL_DEP)
-src/core/httpcli/parser.c: $(OPENSSL_DEP)
src/core/security/base64.c: $(OPENSSL_DEP)
src/core/security/client_auth_filter.c: $(OPENSSL_DEP)
src/core/security/credentials.c: $(OPENSSL_DEP)
diff --git a/build.json b/build.json
index d53fd2809c..d70949cb8d 100644
--- a/build.json
+++ b/build.json
@@ -141,6 +141,9 @@
"src/core/client_config/uri_parser.h",
"src/core/compression/message_compress.h",
"src/core/debug/trace.h",
+ "src/core/httpcli/format_request.h",
+ "src/core/httpcli/httpcli.h",
+ "src/core/httpcli/parser.h",
"src/core/iomgr/alarm.h",
"src/core/iomgr/alarm_heap.h",
"src/core/iomgr/alarm_internal.h",
@@ -239,6 +242,9 @@
"src/core/compression/algorithm.c",
"src/core/compression/message_compress.c",
"src/core/debug/trace.c",
+ "src/core/httpcli/format_request.c",
+ "src/core/httpcli/httpcli.c",
+ "src/core/httpcli/parser.c",
"src/core/iomgr/alarm.c",
"src/core/iomgr/alarm_heap.c",
"src/core/iomgr/endpoint.c",
@@ -462,10 +468,6 @@
"include/grpc/grpc_security.h"
],
"headers": [
- "src/core/httpcli/format_request.h",
- "src/core/httpcli/httpcli.h",
- "src/core/httpcli/httpcli_security_connector.h",
- "src/core/httpcli/parser.h",
"src/core/security/auth_filters.h",
"src/core/security/base64.h",
"src/core/security/credentials.h",
@@ -481,10 +483,7 @@
"src/core/tsi/transport_security_interface.h"
],
"src": [
- "src/core/httpcli/format_request.c",
- "src/core/httpcli/httpcli.c",
"src/core/httpcli/httpcli_security_connector.c",
- "src/core/httpcli/parser.c",
"src/core/security/base64.c",
"src/core/security/client_auth_filter.c",
"src/core/security/credentials.c",
diff --git a/doc/naming.md b/doc/naming.md
new file mode 100644
index 0000000000..5ad7e6622e
--- /dev/null
+++ b/doc/naming.md
@@ -0,0 +1,52 @@
+#gRPC Naming and Discovery Support
+
+## Overview
+
+gRPC supports DNS as the default name-system. A number of alternative name-systems are used in various deployments. We propose an API that is general enough to support a range of name-systems and the corresponding syntax for names. The gRPC client library in various languages will provide a plugin mechanism so resolvers for different name-systems can be plugged in.
+
+## Detailed Proposal
+
+ A fully qualified, self contained name used for gRPC channel construction uses the syntax:
+
+```
+scheme://authority/endpoint_name
+```
+
+Here, scheme indicates the name-system to be used. Example schemes to be supported include:
+
+* `dns`
+
+* `zookeeper`
+
+* `etcd`
+
+Authority indicates some scheme-specific bootstrap information, e.g., for DNS, the authority may include the IP[:port] of the DNS server to use. Often, a DNS name may used as the authority, since the ability to resolve DNS names is already built into all gRPC client libraries.
+
+Finally, the endpoint_name indicates a concrete name to be looked up in a given name-system identified by the scheme and the authority. The syntax of endpoint name is dictated by the scheme in use.
+
+### Plugins
+
+The gRPC client library will switch on the scheme to pick the right resolver plugin and pass it the fully qualified name string.
+
+Resolvers should be able to contact the authority and get a resolution that they return back to the gRPC client library. The returned contents include a list of IP:port, an optional config and optional auth config data to be used for channel authentication. The plugin API allows the resolvers to continuously watch an endpoint_name and return updated resolutions as needed.
+
+## Zookeeper
+
+Apache [ZooKeeper](https://zookeeper.apache.org/) is a popular solution for building name-systems. Curator is a service discovery system built on to of ZooKeeper. We propose to organize names hierarchically as `/path/service/instance` similar to Apache Curator.
+
+A fully-qualified ZooKeeper name used to construct a gRPC channel will look as follows:
+
+```
+zookeeper://host:port/path/service/instance
+```
+Here `zookeeper` is the scheme identifying the name-system. `host:port` identifies an authoritative name-server for this scheme (i.e., a Zookeeper server). The host can be an IP address or a DNS name.
+Finally `/path/service/instance` is the Zookeeper name to be resolved.
+
+## Service Registration
+
+
+Service providers can register their services in Zookeeper by using a Zookeeper client.
+
+Each service is a zookeeper node, and each instance is a child node of the corresponding service. For example, a MySQL service may have multiple instances, `/mysql/1`, `/mysql/2`, `/mysql/3`. The name of the service or instance, as well as an optional path is specified by the service provider.
+
+The data in service nodes is empty. Each instance node stores its address in the format of `host:port`, where host can be either hostname or IP address.
diff --git a/doc/server-reflection.md b/doc/server-reflection.md
new file mode 100644
index 0000000000..cceee1647f
--- /dev/null
+++ b/doc/server-reflection.md
@@ -0,0 +1,183 @@
+GRPC Server Reflection Protocol
+===============================
+
+This document describes server reflection as an optional extension for servers
+to assist clients in runtime construction of requests without having stub
+information precompiled into the client.
+
+The primary usecase for server reflection is to write (typically) command line
+debugging tools for talking to a grpc server. In particular, such a tool will
+take in a method and a payload (in human readable text format) send it to the
+server (typically in binary proto wire format), and then take the response and
+decode it to text to present to the user.
+
+This broadly involves two problems: determining what formats (which protobuf
+messages) a server’s method uses, and determining how to convert messages
+between human readable format and the (likely binary) wire format.
+
+## Method reflection
+
+We want to be able to answer the following queries:
+ 1. What methods does a server export?
+ 2. For a particular method, how do we call it?
+Specifically, what are the names of the methods, are those methods unary or
+streaming, and what are the types of the argument and result?
+
+```
+#TODO(dklempner): link to an actual .proto later.
+package grpc.reflection.v1alpha;
+
+message ListApisRequest {
+}
+
+message ListApisResponse {
+ repeated google.protobuf.Api apis = 1;
+}
+
+message GetMethodRequest {
+ string method = 1;
+}
+message GetMethodResponse {
+ google.protobuf.Method method = 1;
+}
+
+service ServerReflection {
+ rpc ListApis (ListApisRequest) returns (ListApisResponse);
+ rpc GetMethod (GetMethodRequest) returns (GetMethodResponse);
+}
+```
+
+Note that a server is under no obligation to return a complete list of all
+methods it supports. For example, a reverse proxy may support server reflection
+for methods implemented directly on the proxy but not enumerate all methods
+supported by its backends.
+
+
+### Open questions on method reflection
+ * Consider how to extend this protocol to support non-protobuf methods.
+
+## Argument reflection
+The second half of the problem is converting between the human readable
+input/output of a debugging tool and the binary format understood by the
+method.
+
+This is obviously dependent on protocol type. At one extreme, if both the
+server and the debugging tool accept JSON, there may be no need for such a
+conversion in the first place. At the opposite extreme, a server using a custom
+binary format has no hope of being supported by a generic system. The
+intermediate interesting common case is a server which speaks binary-proto and
+a debugging client which speaks either ascii-proto or json-proto.
+
+One approach would be to require servers directly support human readable input.
+In the future method reflection may be extended to document such support,
+should it become widespread or standardized.
+
+## Protobuf descriptors
+
+A second would be for the server to export its
+google::protobuf::DescriptorDatabase over the wire. This is very easy to
+implement in C++, and Google implementations of a similar protocol already
+exist in C++, Go, and Java.
+
+This protocol mostly returns FileDescriptorProtos, which are a proto encoding
+of a parsed .proto file. It supports four queries:
+ 1. The FileDescriptorProto for a given file name
+ 2. The FileDescriptorProto for the file with a given symbol
+ 3. The FileDescriptorProto for the file with a given extension
+ 4. The list of known extension tag numbers of a given type
+
+These directly correspond to the methods of
+google::protobuf::DescriptorDatabase. Note that this protocol includes support
+for extensions, which have been removed from proto3 but are still in widespread
+use in Google’s codebase.
+
+Because most usecases will require also requesting the transitive dependencies
+of requested files, the queries will also return all transitive dependencies of
+the returned file. Should interesting usecases for non-transitive queries turn
+up later, we can easily extend the protocol to support them.
+
+### Reverse proxy traversal
+
+One potential issue with naive reverse proxies is that, while any individual
+server will have a consistent and valid picture of the proto DB which is
+sufficient to handle incoming requests, incompatibilities will arise if the
+backend servers have a mix of builds. For example, if a given message is moved
+from foo.proto to bar.proto, and the client requests foo.proto from an old
+server and bar.proto from a new server, the resulting database will have a
+double definition.
+
+To solve this problem, the protocol is structured as a bidirectional stream,
+ensuring all related requests go to a single server. This has the additional
+benefit that overlapping recursive requests don’t require sending a lot of
+redundant information, because there is a single stream to maintain context
+between queries.
+
+```
+package grpc.reflection.v1alpha;
+message DescriptorDatabaseRequest {
+ string host = 1;
+ oneof message_request {
+ string files_for_file_name = 3;
+ string files_for_symbol_name = 4;
+ FileContainingExtensionRequest file_containing_extension = 5;
+ string list_all_extensions_of_type = 6;
+ }
+}
+
+message FileContainingExtensionRequest {
+ string base_message = 1;
+ int64 extension_id = 2;
+}
+
+message DescriptorDatabaseResponse {
+ string valid_host = 1;
+ DescriptorDatabaseRequest original_request = 2;
+ oneof message_response {
+ // These are proto2 type google.protobuf.FileDescriptorProto, but
+ // we avoid taking a dependency on descriptor.proto, which uses
+ // proto2 only features, by making them opaque
+ // bytes instead
+ repeated bytes fd_proto = 4;
+ ListAllExtensionsResponse extensions_response = 5;
+ // Notably includes error code 5, NOT FOUND
+ int32 error_code = 6;
+ }
+}
+
+message ListAllExtensionsResponse {
+ string base_type_name;
+ repeated int64 extension_number;
+}
+
+service ProtoDescriptorDatabase {
+ rpc DescriptorDatabaseInfo(stream DescriptorDatabaseRequest) returns (stream DescriptorDatabaseResponse);
+}
+```
+
+Any given request must either result in an error code or an answer, usually in
+the form of a series of FileDescriptorProtos with the requested file itself
+and all previously unsent transitive imports of that file. Servers may track
+which FileDescriptorProtos have been sent on a given stream, for a given value
+of valid_host, and avoid sending them repeatedly for overlapping requests.
+
+| message_request message | Result |
+| files_for_file_name | transitive closure of file name |
+| files_for_symbol_name | transitive closure file containing symbol |
+| file_containing_extension | transitive closure of file containing a given extension number of a given symbol |
+| list_all_extensions_of_type | ListAllExtensionsResponse containing all known extension numbers of a given type |
+
+At some point it would make sense to additionally also support any.proto’s
+format. Note that known any.proto messages can be queried by symbol using this
+protocol even without any such support, by parsing the url and extracting the
+symbol name from it.
+
+## Language specific implementation thoughts
+All of the information needed to implement Proto reflection is available to the
+code generator, but I’m not certain we actually generate this in every
+language. If the proto implementation in the language doesn’t have something
+like google::protobuf::DescriptorPool the grpc implementation for that language
+will need to index those FileDescriptorProtos by file and symbol and imports.
+
+One issue is that some grpc implementations are very loosely coupled with
+protobufs; in such implementations it probably makes sense to split apart these
+reflection APIs so as not to take an additional proto dependency.
diff --git a/gRPC.podspec b/gRPC.podspec
index e04767ce1f..12ce7c1e7b 100644
--- a/gRPC.podspec
+++ b/gRPC.podspec
@@ -134,10 +134,6 @@ Pod::Spec.new do |s|
'src/core/support/time_posix.c',
'src/core/support/time_win32.c',
'src/core/support/tls_pthread.c',
- 'src/core/httpcli/format_request.h',
- 'src/core/httpcli/httpcli.h',
- 'src/core/httpcli/httpcli_security_connector.h',
- 'src/core/httpcli/parser.h',
'src/core/security/auth_filters.h',
'src/core/security/base64.h',
'src/core/security/credentials.h',
@@ -177,6 +173,9 @@ Pod::Spec.new do |s|
'src/core/client_config/uri_parser.h',
'src/core/compression/message_compress.h',
'src/core/debug/trace.h',
+ 'src/core/httpcli/format_request.h',
+ 'src/core/httpcli/httpcli.h',
+ 'src/core/httpcli/parser.h',
'src/core/iomgr/alarm.h',
'src/core/iomgr/alarm_heap.h',
'src/core/iomgr/alarm_internal.h',
@@ -256,10 +255,7 @@ Pod::Spec.new do |s|
'grpc/grpc.h',
'grpc/status.h',
'grpc/census.h',
- 'src/core/httpcli/format_request.c',
- 'src/core/httpcli/httpcli.c',
'src/core/httpcli/httpcli_security_connector.c',
- 'src/core/httpcli/parser.c',
'src/core/security/base64.c',
'src/core/security/client_auth_filter.c',
'src/core/security/credentials.c',
@@ -306,6 +302,9 @@ Pod::Spec.new do |s|
'src/core/compression/algorithm.c',
'src/core/compression/message_compress.c',
'src/core/debug/trace.c',
+ 'src/core/httpcli/format_request.c',
+ 'src/core/httpcli/httpcli.c',
+ 'src/core/httpcli/parser.c',
'src/core/iomgr/alarm.c',
'src/core/iomgr/alarm_heap.c',
'src/core/iomgr/endpoint.c',
@@ -402,10 +401,6 @@ Pod::Spec.new do |s|
'src/core/support/string.h',
'src/core/support/string_win32.h',
'src/core/support/thd_internal.h',
- 'src/core/httpcli/format_request.h',
- 'src/core/httpcli/httpcli.h',
- 'src/core/httpcli/httpcli_security_connector.h',
- 'src/core/httpcli/parser.h',
'src/core/security/auth_filters.h',
'src/core/security/base64.h',
'src/core/security/credentials.h',
@@ -445,6 +440,9 @@ Pod::Spec.new do |s|
'src/core/client_config/uri_parser.h',
'src/core/compression/message_compress.h',
'src/core/debug/trace.h',
+ 'src/core/httpcli/format_request.h',
+ 'src/core/httpcli/httpcli.h',
+ 'src/core/httpcli/parser.h',
'src/core/iomgr/alarm.h',
'src/core/iomgr/alarm_heap.h',
'src/core/iomgr/alarm_internal.h',
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/client_channel.c b/src/core/channel/client_channel.c
index 2ee260b799..a293c93ec6 100644
--- a/src/core/channel/client_channel.c
+++ b/src/core/channel/client_channel.c
@@ -401,6 +401,7 @@ static void perform_transport_stream_op(grpc_call_element *elem,
calld->state = CALL_WAITING_FOR_CONFIG;
add_to_lb_policy_wait_queue_locked_state_config(elem);
if (!chand->started_resolving && chand->resolver != NULL) {
+ GRPC_CHANNEL_INTERNAL_REF(chand->master, "resolver");
chand->started_resolving = 1;
grpc_resolver_next(chand->resolver,
&chand->incoming_configuration,
@@ -701,11 +702,11 @@ void grpc_client_channel_set_resolver(grpc_channel_stack *channel_stack,
gpr_mu_lock(&chand->mu_config);
GPR_ASSERT(!chand->resolver);
chand->resolver = resolver;
- GRPC_CHANNEL_INTERNAL_REF(chand->master, "resolver");
GRPC_RESOLVER_REF(resolver, "channel");
if (chand->waiting_for_config_closures != NULL ||
chand->exit_idle_when_lb_policy_arrives) {
chand->started_resolving = 1;
+ GRPC_CHANNEL_INTERNAL_REF(chand->master, "resolver");
grpc_resolver_next(resolver, &chand->incoming_configuration,
&chand->on_config_changed);
}
@@ -724,6 +725,7 @@ grpc_connectivity_state grpc_client_channel_check_connectivity_state(
} else {
chand->exit_idle_when_lb_policy_arrives = 1;
if (!chand->started_resolving && chand->resolver != NULL) {
+ GRPC_CHANNEL_INTERNAL_REF(chand->master, "resolver");
chand->started_resolving = 1;
grpc_resolver_next(chand->resolver, &chand->incoming_configuration,
&chand->on_config_changed);
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/httpcli/httpcli.c b/src/core/httpcli/httpcli.c
index 65997d5f44..9012070e8e 100644
--- a/src/core/httpcli/httpcli.c
+++ b/src/core/httpcli/httpcli.c
@@ -40,9 +40,7 @@
#include "src/core/iomgr/resolve_address.h"
#include "src/core/iomgr/tcp_client.h"
#include "src/core/httpcli/format_request.h"
-#include "src/core/httpcli/httpcli_security_connector.h"
#include "src/core/httpcli/parser.h"
-#include "src/core/security/secure_transport_setup.h"
#include "src/core/support/string.h"
#include <grpc/support/alloc.h>
#include <grpc/support/log.h>
@@ -57,7 +55,7 @@ typedef struct {
char *host;
gpr_timespec deadline;
int have_read_byte;
- int use_ssl;
+ const grpc_httpcli_handshaker *handshaker;
grpc_httpcli_response_cb on_response;
void *user_data;
grpc_httpcli_context *context;
@@ -68,6 +66,16 @@ typedef struct {
static grpc_httpcli_get_override g_get_override = NULL;
static grpc_httpcli_post_override g_post_override = NULL;
+static void plaintext_handshake(void *arg, grpc_endpoint *endpoint,
+ const char *host,
+ void (*on_done)(void *arg,
+ grpc_endpoint *endpoint)) {
+ on_done(arg, endpoint);
+}
+
+const grpc_httpcli_handshaker grpc_httpcli_plaintext = {"http",
+ plaintext_handshake};
+
void grpc_httpcli_context_init(grpc_httpcli_context *context) {
grpc_pollset_set_init(&context->pollset_set);
}
@@ -163,18 +171,16 @@ static void start_write(internal_request *req) {
}
}
-static void on_secure_transport_setup_done(void *rp,
- grpc_security_status status,
- grpc_endpoint *wrapped_endpoint,
- grpc_endpoint *secure_endpoint) {
- internal_request *req = rp;
- if (status != GRPC_SECURITY_OK) {
- gpr_log(GPR_ERROR, "Secure transport setup failed with error %d.", status);
- finish(req, 0);
- } else {
- req->ep = secure_endpoint;
- start_write(req);
+static void on_handshake_done(void *arg, grpc_endpoint *ep) {
+ internal_request *req = arg;
+
+ if (!ep) {
+ next_address(req);
+ return;
}
+
+ req->ep = ep;
+ start_write(req);
}
static void on_connected(void *arg, grpc_endpoint *tcp) {
@@ -184,25 +190,7 @@ static void on_connected(void *arg, grpc_endpoint *tcp) {
next_address(req);
return;
}
- req->ep = tcp;
- if (req->use_ssl) {
- grpc_channel_security_connector *sc = NULL;
- const unsigned char *pem_root_certs = NULL;
- size_t pem_root_certs_size = grpc_get_default_ssl_roots(&pem_root_certs);
- if (pem_root_certs == NULL || pem_root_certs_size == 0) {
- gpr_log(GPR_ERROR, "Could not get default pem root certs.");
- finish(req, 0);
- return;
- }
- GPR_ASSERT(grpc_httpcli_ssl_channel_security_connector_create(
- pem_root_certs, pem_root_certs_size, req->host, &sc) ==
- GRPC_SECURITY_OK);
- grpc_setup_secure_transport(&sc->base, tcp, on_secure_transport_setup_done,
- req);
- GRPC_SECURITY_CONNECTOR_UNREF(&sc->base, "httpcli");
- } else {
- start_write(req);
- }
+ req->handshaker->handshake(req, tcp, req->host, on_handshake_done);
}
static void next_address(internal_request *req) {
@@ -245,18 +233,17 @@ void grpc_httpcli_get(grpc_httpcli_context *context, grpc_pollset *pollset,
req->on_response = on_response;
req->user_data = user_data;
req->deadline = deadline;
- req->use_ssl = request->use_ssl;
+ req->handshaker =
+ request->handshaker ? request->handshaker : &grpc_httpcli_plaintext;
req->context = context;
req->pollset = pollset;
gpr_asprintf(&name, "HTTP:GET:%s:%s", request->host, request->path);
grpc_iomgr_register_object(&req->iomgr_obj, name);
gpr_free(name);
- if (req->use_ssl) {
- req->host = gpr_strdup(request->host);
- }
+ req->host = gpr_strdup(request->host);
grpc_pollset_set_add_pollset(&req->context->pollset_set, req->pollset);
- grpc_resolve_address(request->host, req->use_ssl ? "https" : "http",
+ grpc_resolve_address(request->host, req->handshaker->default_port,
on_resolved, req);
}
@@ -279,18 +266,17 @@ void grpc_httpcli_post(grpc_httpcli_context *context, grpc_pollset *pollset,
req->on_response = on_response;
req->user_data = user_data;
req->deadline = deadline;
- req->use_ssl = request->use_ssl;
+ req->handshaker =
+ request->handshaker ? request->handshaker : &grpc_httpcli_plaintext;
req->context = context;
req->pollset = pollset;
gpr_asprintf(&name, "HTTP:GET:%s:%s", request->host, request->path);
grpc_iomgr_register_object(&req->iomgr_obj, name);
gpr_free(name);
- if (req->use_ssl) {
- req->host = gpr_strdup(request->host);
- }
+ req->host = gpr_strdup(request->host);
grpc_pollset_set_add_pollset(&req->context->pollset_set, req->pollset);
- grpc_resolve_address(request->host, req->use_ssl ? "https" : "http",
+ grpc_resolve_address(request->host, req->handshaker->default_port,
on_resolved, req);
}
diff --git a/src/core/httpcli/httpcli.h b/src/core/httpcli/httpcli.h
index ab98178f8a..c45966714c 100644
--- a/src/core/httpcli/httpcli.h
+++ b/src/core/httpcli/httpcli.h
@@ -38,6 +38,7 @@
#include <grpc/support/time.h>
+#include "src/core/iomgr/endpoint.h"
#include "src/core/iomgr/pollset_set.h"
/* User agent this library reports */
@@ -58,6 +59,15 @@ typedef struct grpc_httpcli_context {
grpc_pollset_set pollset_set;
} grpc_httpcli_context;
+typedef struct {
+ const char *default_port;
+ void (*handshake)(void *arg, grpc_endpoint *endpoint, const char *host,
+ void (*on_done)(void *arg, grpc_endpoint *endpoint));
+} grpc_httpcli_handshaker;
+
+extern const grpc_httpcli_handshaker grpc_httpcli_plaintext;
+extern const grpc_httpcli_handshaker grpc_httpcli_ssl;
+
/* A request */
typedef struct grpc_httpcli_request {
/* The host name to connect to */
@@ -69,8 +79,8 @@ typedef struct grpc_httpcli_request {
Host, Connection, User-Agent */
size_t hdr_count;
grpc_httpcli_header *hdrs;
- /* whether to use ssl for the request */
- int use_ssl;
+ /* handshaker to use ssl for the request */
+ const grpc_httpcli_handshaker *handshaker;
} grpc_httpcli_request;
/* A response */
diff --git a/src/core/httpcli/httpcli_security_connector.c b/src/core/httpcli/httpcli_security_connector.c
index ce0d3d5a70..7887f9d530 100644
--- a/src/core/httpcli/httpcli_security_connector.c
+++ b/src/core/httpcli/httpcli_security_connector.c
@@ -31,7 +31,7 @@
*
*/
-#include "src/core/httpcli/httpcli_security_connector.h"
+#include "src/core/httpcli/httpcli.h"
#include <string.h>
@@ -96,7 +96,7 @@ static grpc_security_status httpcli_ssl_check_peer(grpc_security_connector *sc,
static grpc_security_connector_vtable httpcli_ssl_vtable = {
httpcli_ssl_destroy, httpcli_ssl_create_handshaker, httpcli_ssl_check_peer};
-grpc_security_status grpc_httpcli_ssl_channel_security_connector_create(
+static grpc_security_status httpcli_ssl_channel_security_connector_create(
const unsigned char *pem_root_certs, size_t pem_root_certs_size,
const char *secure_peer_name, grpc_channel_security_connector **sc) {
tsi_result result = TSI_OK;
@@ -130,3 +130,48 @@ grpc_security_status grpc_httpcli_ssl_channel_security_connector_create(
*sc = &c->base;
return GRPC_SECURITY_OK;
}
+
+/* handshaker */
+
+typedef struct {
+ void (*func)(void *arg, grpc_endpoint *endpoint);
+ void *arg;
+} on_done_closure;
+
+static void on_secure_transport_setup_done(void *rp,
+ grpc_security_status status,
+ grpc_endpoint *wrapped_endpoint,
+ grpc_endpoint *secure_endpoint) {
+ on_done_closure *c = rp;
+ if (status != GRPC_SECURITY_OK) {
+ gpr_log(GPR_ERROR, "Secure transport setup failed with error %d.", status);
+ c->func(c->arg, NULL);
+ } else {
+ c->func(c->arg, secure_endpoint);
+ }
+ gpr_free(c);
+}
+
+static void ssl_handshake(void *arg, grpc_endpoint *tcp, const char *host,
+ void (*on_done)(void *arg, grpc_endpoint *endpoint)) {
+ grpc_channel_security_connector *sc = NULL;
+ const unsigned char *pem_root_certs = NULL;
+ on_done_closure *c = gpr_malloc(sizeof(*c));
+ size_t pem_root_certs_size = grpc_get_default_ssl_roots(&pem_root_certs);
+ if (pem_root_certs == NULL || pem_root_certs_size == 0) {
+ gpr_log(GPR_ERROR, "Could not get default pem root certs.");
+ on_done(arg, NULL);
+ gpr_free(c);
+ return;
+ }
+ c->func = on_done;
+ c->arg = arg;
+ GPR_ASSERT(httpcli_ssl_channel_security_connector_create(
+ pem_root_certs, pem_root_certs_size, host, &sc) ==
+ GRPC_SECURITY_OK);
+ grpc_setup_secure_transport(&sc->base, tcp, on_secure_transport_setup_done,
+ c);
+ GRPC_SECURITY_CONNECTOR_UNREF(&sc->base, "httpcli");
+}
+
+const grpc_httpcli_handshaker grpc_httpcli_ssl = {"https", ssl_handshake};
diff --git a/src/core/security/client_auth_filter.c b/src/core/security/client_auth_filter.c
index e86b5430b2..0e699874bc 100644
--- a/src/core/security/client_auth_filter.c
+++ b/src/core/security/client_auth_filter.c
@@ -77,10 +77,9 @@ 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));
+ gpr_log(GPR_ERROR, "Client side authentication failure: %s", error_msg);
+ 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..6421ce673d 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) {
@@ -679,7 +685,7 @@ static void service_account_fetch_oauth2(
request.path = GRPC_GOOGLE_OAUTH2_SERVICE_TOKEN_PATH;
request.hdr_count = 1;
request.hdrs = &header;
- request.use_ssl = 1;
+ request.handshaker = &grpc_httpcli_ssl;
grpc_httpcli_post(httpcli_context, pollset, &request, body, strlen(body),
deadline, response_cb, metadata_req);
gpr_free(body);
@@ -738,7 +744,7 @@ static void refresh_token_fetch_oauth2(
request.path = GRPC_GOOGLE_OAUTH2_SERVICE_TOKEN_PATH;
request.hdr_count = 1;
request.hdrs = &header;
- request.use_ssl = 1;
+ request.handshaker = &grpc_httpcli_ssl;
grpc_httpcli_post(httpcli_context, pollset, &request, body, strlen(body),
deadline, response_cb, metadata_req);
gpr_free(body);
@@ -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/jwt_verifier.c b/src/core/security/jwt_verifier.c
index 1276693da7..38ad134a6a 100644
--- a/src/core/security/jwt_verifier.c
+++ b/src/core/security/jwt_verifier.c
@@ -628,7 +628,7 @@ static void on_openid_config_retrieved(void *user_data,
goto error;
}
jwks_uri += 8;
- req.use_ssl = 1;
+ req.handshaker = &grpc_httpcli_ssl;
req.host = gpr_strdup(jwks_uri);
req.path = strchr(jwks_uri, '/');
if (req.path == NULL) {
@@ -685,7 +685,7 @@ static void retrieve_key_and_verify(verifier_cb_ctx *ctx) {
const char *iss;
grpc_httpcli_request req;
memset(&req, 0, sizeof(grpc_httpcli_request));
- req.use_ssl = 1;
+ req.handshaker = &grpc_httpcli_ssl;
GPR_ASSERT(ctx != NULL && ctx->header != NULL && ctx->claims != NULL);
iss = ctx->claims->iss;
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/surface/call.c b/src/core/surface/call.c
index d3e66e9c4c..6e566e6a8f 100644
--- a/src/core/surface/call.c
+++ b/src/core/surface/call.c
@@ -456,20 +456,6 @@ void grpc_call_internal_ref(grpc_call *c) {
static void destroy_call(void *call, int ignored_success) {
size_t i;
grpc_call *c = call;
- grpc_call *parent = c->parent;
- if (parent) {
- gpr_mu_lock(&parent->mu);
- if (call == parent->first_child) {
- parent->first_child = c->sibling_next;
- if (c == parent->first_child) {
- parent->first_child = NULL;
- }
- c->sibling_prev->sibling_next = c->sibling_next;
- c->sibling_next->sibling_prev = c->sibling_prev;
- }
- gpr_mu_unlock(&parent->mu);
- GRPC_CALL_INTERNAL_UNREF(parent, "child", 1);
- }
grpc_call_stack_destroy(CALL_STACK_FROM_CALL(c));
GRPC_CHANNEL_INTERNAL_UNREF(c->channel, "call");
gpr_mu_destroy(&c->mu);
@@ -1257,6 +1243,22 @@ grpc_call_error grpc_call_start_ioreq_and_call_back(
void grpc_call_destroy(grpc_call *c) {
int cancel;
+ grpc_call *parent = c->parent;
+
+ if (parent) {
+ gpr_mu_lock(&parent->mu);
+ if (c == parent->first_child) {
+ parent->first_child = c->sibling_next;
+ if (c == parent->first_child) {
+ parent->first_child = NULL;
+ }
+ c->sibling_prev->sibling_next = c->sibling_next;
+ c->sibling_next->sibling_prev = c->sibling_prev;
+ }
+ gpr_mu_unlock(&parent->mu);
+ GRPC_CALL_INTERNAL_UNREF(parent, "child", 1);
+ }
+
lock(c);
GPR_ASSERT(!c->destroy_called);
c->destroy_called = 1;
diff --git a/src/core/surface/secure_channel_create.c b/src/core/surface/secure_channel_create.c
index 1f89353025..c3150250b8 100644
--- a/src/core/surface/secure_channel_create.c
+++ b/src/core/surface/secure_channel_create.c
@@ -88,8 +88,8 @@ static void on_secure_transport_setup_done(void *arg,
c->args.channel_args, secure_endpoint, c->args.metadata_context, 1);
grpc_chttp2_transport_start_reading(c->result->transport, NULL, 0);
c->result->filters = gpr_malloc(sizeof(grpc_channel_filter *) * 2);
- c->result->filters[0] = &grpc_client_auth_filter;
- c->result->filters[1] = &grpc_http_client_filter;
+ c->result->filters[0] = &grpc_http_client_filter;
+ c->result->filters[1] = &grpc_client_auth_filter;
c->result->num_filters = 2;
}
notify = c->notify;
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/src/core/httpcli/httpcli_security_connector.h b/src/objective-c/GRPCClient/GRPCCall+OAuth2.h
index c50f25905e..2e379a7157 100644
--- a/src/core/httpcli/httpcli_security_connector.h
+++ b/src/objective-c/GRPCClient/GRPCCall+OAuth2.h
@@ -31,13 +31,19 @@
*
*/
-#ifndef GRPC_INTERNAL_CORE_HTTPCLI_HTTPCLI_SECURITY_CONNECTOR_H
-#define GRPC_INTERNAL_CORE_HTTPCLI_HTTPCLI_SECURITY_CONNECTOR_H
+#import "GRPCCall.h"
-#include "src/core/security/security_connector.h"
+// Helpers for setting and reading headers compatible with OAuth2.
+@interface GRPCCall (OAuth2)
-grpc_security_status grpc_httpcli_ssl_channel_security_connector_create(
- const unsigned char *pem_root_certs, size_t pem_root_certs_size,
- const char *secure_peer_name, grpc_channel_security_connector **sc);
+// Setting this property is equivalent to setting "Bearer <passed token>" as the value of the
+// request header with key "authorization" (the authorization header). Setting it to nil removes the
+// authorization header from the request.
+// The value obtained by getting the property is the OAuth2 bearer token if the authorization header
+// of the request has the form "Bearer <token>", or nil otherwise.
+@property(atomic, copy) NSString *oauth2AccessToken;
-#endif /* GRPC_INTERNAL_CORE_HTTPCLI_HTTPCLI_SECURITY_CONNECTOR_H */
+// Returns the value (if any) of the "www-authenticate" response header (the challenge header).
+@property(atomic, readonly) NSString *oauth2ChallengeHeader;
+
+@end
diff --git a/src/objective-c/GRPCClient/GRPCCall+OAuth2.m b/src/objective-c/GRPCClient/GRPCCall+OAuth2.m
new file mode 100644
index 0000000000..ed39d4b0f7
--- /dev/null
+++ b/src/objective-c/GRPCClient/GRPCCall+OAuth2.m
@@ -0,0 +1,63 @@
+/*
+ *
+ * Copyright 2015, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ * * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+
+#import "GRPCCall+OAuth2.h"
+
+static NSString * const kAuthorizationHeader = @"authorization";
+static NSString * const kBearerPrefix = @"Bearer ";
+static NSString * const kChallengeHeader = @"www-authenticate";
+
+@implementation GRPCCall (OAuth2)
+
+- (NSString *)oauth2AccessToken {
+ NSString *headerValue = self.requestMetadata[kAuthorizationHeader];
+ if ([headerValue hasPrefix:kBearerPrefix]) {
+ return [headerValue substringFromIndex:kBearerPrefix.length];
+ } else {
+ return nil;
+ }
+}
+
+- (void)setOauth2AccessToken:(NSString *)token {
+ if (token) {
+ self.requestMetadata[kAuthorizationHeader] = [kBearerPrefix stringByAppendingString:token];
+ } else {
+ [self.requestMetadata removeObjectForKey:kAuthorizationHeader];
+ }
+}
+
+- (NSString *)oauth2ChallengeHeader {
+ return self.responseMetadata[kChallengeHeader];
+}
+
+@end
diff --git a/src/objective-c/GRPCClient/GRPCCall+Tests.h b/src/objective-c/GRPCClient/GRPCCall+Tests.h
index 3d617b05d9..cca1614606 100644
--- a/src/objective-c/GRPCClient/GRPCCall+Tests.h
+++ b/src/objective-c/GRPCClient/GRPCCall+Tests.h
@@ -33,13 +33,22 @@
#import "GRPCCall.h"
+// Methods to let tune down the security of gRPC connections for specific hosts. These shouldn't be
+// used in releases, but are sometimes needed for testing.
@interface GRPCCall (Tests)
// Establish all SSL connections to the provided host using the passed SSL target name and the root
// certificates found in the file at |certsPath|.
-// Must be called before any gRPC call to that host is made.
+//
+// Must be called before any gRPC call to that host is made. It's illegal to pass the same host to
+// more than one invocation of the methods of this category.
+ (void)useTestCertsPath:(NSString *)certsPath
testName:(NSString *)testName
forHost:(NSString *)host;
+// Establish all connections to the provided host using cleartext instead of SSL.
+//
+// Must be called before any gRPC call to that host is made. It's illegal to pass the same host to
+// more than one invocation of the methods of this category.
++ (void)useInsecureConnectionsForHost:(NSString *)host;
@end
diff --git a/src/objective-c/GRPCClient/GRPCCall+Tests.m b/src/objective-c/GRPCClient/GRPCCall+Tests.m
index 7c5b81d661..bade0b2920 100644
--- a/src/objective-c/GRPCClient/GRPCCall+Tests.m
+++ b/src/objective-c/GRPCClient/GRPCCall+Tests.m
@@ -36,12 +36,18 @@
#import "private/GRPCHost.h"
@implementation GRPCCall (Tests)
+
+ (void)useTestCertsPath:(NSString *)certsPath
testName:(NSString *)testName
forHost:(NSString *)host {
GRPCHost *hostConfig = [GRPCHost hostWithAddress:host];
- hostConfig.secure = YES;
hostConfig.pathToCertificates = certsPath;
hostConfig.hostNameOverride = testName;
}
+
++ (void)useInsecureConnectionsForHost:(NSString *)host {
+ GRPCHost *hostConfig = [GRPCHost hostWithAddress:host];
+ hostConfig.secure = NO;
+}
+
@end
diff --git a/src/objective-c/GRPCClient/private/GRPCHost.m b/src/objective-c/GRPCClient/private/GRPCHost.m
index 5d9c48a524..d902f95b51 100644
--- a/src/objective-c/GRPCClient/private/GRPCHost.m
+++ b/src/objective-c/GRPCClient/private/GRPCHost.m
@@ -58,22 +58,14 @@
// Default initializer.
- (instancetype)initWithAddress:(NSString *)address {
- // Verify and normalize the address, and decide whether to use SSL.
- if (![address rangeOfString:@"://"].length) {
- // No scheme provided; assume https.
- address = [@"https://" stringByAppendingString:address];
+ // To provide a default port, we try to interpret the address. If it's just a host name without
+ // scheme and without port, we'll use port 443. If it has a scheme, we pass it untouched to the C
+ // gRPC library.
+ // TODO(jcanizales): Add unit tests for the types of addresses we want to let pass untouched.
+ NSURL *hostURL = [NSURL URLWithString:[@"https://" stringByAppendingString:address]];
+ if (hostURL && !hostURL.port) {
+ address = [hostURL.host stringByAppendingString:@":443"];
}
- NSURL *hostURL = [NSURL URLWithString:address];
- if (!hostURL) {
- [NSException raise:NSInvalidArgumentException format:@"Invalid URL: %@", address];
- }
- NSString *scheme = hostURL.scheme;
- if (![scheme isEqualToString:@"https"] && ![scheme isEqualToString:@"http"]) {
- [NSException raise:NSInvalidArgumentException format:@"URL scheme %@ isn't supported.", scheme];
- }
- // If the user didn't specify a port (hostURL.port is nil), provide a default one.
- NSNumber *port = hostURL.port ?: [scheme isEqualToString:@"https"] ? @443 : @80;
- address = [@[hostURL.host, port] componentsJoinedByString:@":"];
// Look up the GRPCHost in the cache.
static NSMutableDictionary *hostCache;
@@ -84,19 +76,16 @@
@synchronized(hostCache) {
GRPCHost *cachedHost = hostCache[address];
if (cachedHost) {
- // We could verify here that the cached host uses the same protocol that we're expecting. But
- // creating non-SSL channels by adding "http://" to the address is going away (to make the use
- // of insecure channels less subtle), so it's not worth it now.
return cachedHost;
}
if ((self = [super init])) {
_address = address;
- _secure = [scheme isEqualToString:@"https"];
+ _secure = YES;
hostCache[address] = self;
}
- return self;
}
+ return self;
}
- (grpc_call *)unmanagedCallWithPath:(NSString *)path completionQueue:(GRPCCompletionQueue *)queue {
@@ -131,4 +120,7 @@
return _hostNameOverride ?: _address;
}
+// TODO(jcanizales): Don't let set |secure| to |NO| if |pathToCertificates| or |hostNameOverride|
+// have been set. Don't let set either of the latter if |secure| has been set to |NO|.
+
@end
diff --git a/src/objective-c/tests/GRPCClientTests.m b/src/objective-c/tests/GRPCClientTests.m
index 103e5ca3d4..e85dd6e65c 100644
--- a/src/objective-c/tests/GRPCClientTests.m
+++ b/src/objective-c/tests/GRPCClientTests.m
@@ -35,6 +35,8 @@
#import <XCTest/XCTest.h>
#import <GRPCClient/GRPCCall.h>
+#import <GRPCClient/GRPCCall+OAuth2.h>
+#import <GRPCClient/GRPCCall+Tests.h>
#import <ProtoRPC/ProtoMethod.h>
#import <RemoteTest/Messages.pbobjc.h>
#import <RxLibrary/GRXWriteable.h>
@@ -43,8 +45,7 @@
// These are a few tests similar to InteropTests, but which use the generic gRPC client (GRPCCall)
// rather than a generated proto library on top of it.
-// grpc-test.sandbox.google.com
-static NSString * const kHostAddress = @"http://localhost:5050";
+static NSString * const kHostAddress = @"localhost:5050";
static NSString * const kPackage = @"grpc.testing";
static NSString * const kService = @"TestService";
@@ -58,6 +59,9 @@ static ProtoMethod *kUnaryCallMethod;
@implementation GRPCClientTests
- (void)setUp {
+ // Register test server as non-SSL.
+ [GRPCCall useInsecureConnectionsForHost:kHostAddress];
+
// This method isn't implemented by the remote server.
kInexistentMethod = [[ProtoMethod alloc] initWithPackage:kPackage
service:kService
@@ -157,7 +161,7 @@ static ProtoMethod *kUnaryCallMethod;
path:kUnaryCallMethod.HTTPPath
requestsWriter:requestsWriter];
- call.requestMetadata[@"Authorization"] = @"Bearer bogusToken";
+ call.oauth2AccessToken = @"bogusToken";
id<GRXWriteable> responsesWriteable = [[GRXWriteable alloc] initWithValueHandler:^(NSData *value) {
XCTFail(@"Received unexpected response: %@", value);
@@ -166,7 +170,7 @@ static ProtoMethod *kUnaryCallMethod;
XCTAssertEqual(errorOrNil.code, 16, @"Finished with unexpected error: %@", errorOrNil);
XCTAssertEqualObjects(call.responseMetadata, errorOrNil.userInfo[kGRPCStatusMetadataKey],
@"Metadata in the NSError object and call object differ.");
- NSString *challengeHeader = call.responseMetadata[@"www-authenticate"];
+ NSString *challengeHeader = call.oauth2ChallengeHeader;
XCTAssertGreaterThan(challengeHeader.length, 0,
@"No challenge in response headers %@", call.responseMetadata);
[expectation fulfill];
diff --git a/src/objective-c/tests/InteropTests.h b/src/objective-c/tests/InteropTests.h
index c675c8d241..4eb97e9e06 100644
--- a/src/objective-c/tests/InteropTests.h
+++ b/src/objective-c/tests/InteropTests.h
@@ -37,7 +37,7 @@
// https://github.com/grpc/grpc/blob/master/doc/interop-test-descriptions.md
@interface InteropTests : XCTestCase
-// Returns @"http://localhost:5050".
+// Returns @"localhost:5050".
// Override in a subclass to perform the same tests against a different address.
// For interop tests, use @"grpc-test.sandbox.google.com".
+ (NSString *)host;
diff --git a/src/objective-c/tests/InteropTests.m b/src/objective-c/tests/InteropTests.m
index a6611d27be..b61d567464 100644
--- a/src/objective-c/tests/InteropTests.m
+++ b/src/objective-c/tests/InteropTests.m
@@ -35,6 +35,7 @@
#include <grpc/status.h>
+#import <GRPCClient/GRPCCall+Tests.h>
#import <ProtoRPC/ProtoRPC.h>
#import <RemoteTest/Empty.pbobjc.h>
#import <RemoteTest/Messages.pbobjc.h>
@@ -75,15 +76,22 @@
}
@end
+#pragma mark Tests
+
+static NSString * const kLocalCleartextHost = @"localhost:5050";
+
@implementation InteropTests {
RMTTestService *_service;
}
+ (NSString *)host {
- return @"http://localhost:5050";
+ return kLocalCleartextHost;
}
- (void)setUp {
+ // Register test server as non-SSL.
+ [GRPCCall useInsecureConnectionsForHost:kLocalCleartextHost];
+
_service = [[RMTTestService alloc] initWithHost:self.class.host];
}
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/httpcli/httpcli_test.c b/test/core/httpcli/httpcli_test.c
index 390afcdf63..8dddfbee98 100644
--- a/test/core/httpcli/httpcli_test.c
+++ b/test/core/httpcli/httpcli_test.c
@@ -81,7 +81,7 @@ static void test_get(int use_ssl, int port) {
memset(&req, 0, sizeof(req));
req.host = host;
req.path = "/get";
- req.use_ssl = use_ssl;
+ req.handshaker = use_ssl ? &grpc_httpcli_ssl : &grpc_httpcli_plaintext;
grpc_httpcli_get(&g_context, &g_pollset, &req, n_seconds_time(15), on_finish,
(void *)42);
@@ -107,7 +107,7 @@ static void test_post(int use_ssl, int port) {
memset(&req, 0, sizeof(req));
req.host = host;
req.path = "/post";
- req.use_ssl = use_ssl;
+ req.handshaker = use_ssl ? &grpc_httpcli_ssl : &grpc_httpcli_plaintext;
grpc_httpcli_post(&g_context, &g_pollset, &req, "hello", 5,
n_seconds_time(15), on_finish, (void *)42);
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..e4a8144eaf 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(
@@ -477,7 +477,7 @@ static void on_oauth2_creds_get_metadata_failure(
static void validate_compute_engine_http_request(
const grpc_httpcli_request *request) {
- GPR_ASSERT(!request->use_ssl);
+ GPR_ASSERT(request->handshaker != &grpc_httpcli_ssl);
GPR_ASSERT(strcmp(request->host, "metadata") == 0);
GPR_ASSERT(
strcmp(request->path,
@@ -573,7 +573,7 @@ static void validate_refresh_token_http_request(
GPR_ASSERT(strlen(expected_body) == body_size);
GPR_ASSERT(memcmp(expected_body, body, body_size) == 0);
gpr_free(expected_body);
- GPR_ASSERT(request->use_ssl);
+ GPR_ASSERT(request->handshaker == &grpc_httpcli_ssl);
GPR_ASSERT(strcmp(request->host, GRPC_GOOGLE_OAUTH2_SERVICE_HOST) == 0);
GPR_ASSERT(strcmp(request->path, GRPC_GOOGLE_OAUTH2_SERVICE_TOKEN_PATH) == 0);
GPR_ASSERT(request->hdr_count == 1);
@@ -697,7 +697,7 @@ static void validate_service_account_http_request(
GPR_ASSERT(strlen(expected_body) == body_size);
GPR_ASSERT(memcmp(expected_body, body, body_size) == 0);
gpr_free(expected_body);
- GPR_ASSERT(request->use_ssl);
+ GPR_ASSERT(request->handshaker == &grpc_httpcli_ssl);
GPR_ASSERT(strcmp(request->host, GRPC_GOOGLE_OAUTH2_SERVICE_HOST) == 0);
GPR_ASSERT(strcmp(request->path, GRPC_GOOGLE_OAUTH2_SERVICE_TOKEN_PATH) == 0);
GPR_ASSERT(request->hdr_count == 1);
diff --git a/test/core/security/jwt_verifier_test.c b/test/core/security/jwt_verifier_test.c
index 98db56c0ef..440286ea1a 100644
--- a/test/core/security/jwt_verifier_test.c
+++ b/test/core/security/jwt_verifier_test.c
@@ -286,7 +286,7 @@ static int httpcli_get_google_keys_for_email(
const grpc_httpcli_request *request, gpr_timespec deadline,
grpc_httpcli_response_cb on_response, void *user_data) {
grpc_httpcli_response response = http_response(200, good_google_email_keys());
- GPR_ASSERT(request->use_ssl);
+ GPR_ASSERT(request->handshaker == &grpc_httpcli_ssl);
GPR_ASSERT(strcmp(request->host, "www.googleapis.com") == 0);
GPR_ASSERT(strcmp(request->path,
"/robot/v1/metadata/x509/"
@@ -331,7 +331,7 @@ static int httpcli_get_custom_keys_for_email(
const grpc_httpcli_request *request, gpr_timespec deadline,
grpc_httpcli_response_cb on_response, void *user_data) {
grpc_httpcli_response response = http_response(200, gpr_strdup(good_jwk_set));
- GPR_ASSERT(request->use_ssl);
+ GPR_ASSERT(request->handshaker == &grpc_httpcli_ssl);
GPR_ASSERT(strcmp(request->host, "keys.bar.com") == 0);
GPR_ASSERT(strcmp(request->path, "/jwk/foo@bar.com") == 0);
on_response(user_data, &response);
@@ -363,7 +363,7 @@ static int httpcli_get_jwk_set(
const grpc_httpcli_request *request, gpr_timespec deadline,
grpc_httpcli_response_cb on_response, void *user_data) {
grpc_httpcli_response response = http_response(200, gpr_strdup(good_jwk_set));
- GPR_ASSERT(request->use_ssl);
+ GPR_ASSERT(request->handshaker == &grpc_httpcli_ssl);
GPR_ASSERT(strcmp(request->host, "www.googleapis.com") == 0);
GPR_ASSERT(strcmp(request->path, "/oauth2/v3/certs") == 0);
on_response(user_data, &response);
@@ -377,7 +377,7 @@ static int httpcli_get_openid_config(const grpc_httpcli_request *request,
void *user_data) {
grpc_httpcli_response response =
http_response(200, gpr_strdup(good_openid_config));
- GPR_ASSERT(request->use_ssl);
+ GPR_ASSERT(request->handshaker == &grpc_httpcli_ssl);
GPR_ASSERT(strcmp(request->host, "accounts.google.com") == 0);
GPR_ASSERT(strcmp(request->path, GRPC_OPENID_CONFIG_URL_SUFFIX) == 0);
grpc_httpcli_set_override(httpcli_get_jwk_set,
@@ -421,7 +421,7 @@ static int httpcli_get_bad_json(const grpc_httpcli_request *request,
void *user_data) {
grpc_httpcli_response response =
http_response(200, gpr_strdup("{\"bad\": \"stuff\"}"));
- GPR_ASSERT(request->use_ssl);
+ GPR_ASSERT(request->handshaker == &grpc_httpcli_ssl);
on_response(user_data, &response);
gpr_free(response.body);
return 1;
diff --git a/test/core/util/port_posix.c b/test/core/util/port_posix.c
index b07df391f9..9bff18d311 100644
--- a/test/core/util/port_posix.c
+++ b/test/core/util/port_posix.c
@@ -44,9 +44,13 @@
#include <string.h>
#include <unistd.h>
+#include <grpc/grpc.h>
#include <grpc/support/alloc.h>
#include <grpc/support/log.h>
+#include "src/core/httpcli/httpcli.h"
+#include "src/core/support/env.h"
+
#define NUM_RANDOM_PORTS_TO_PICK 100
static int *chosen_ports = NULL;
@@ -126,6 +130,67 @@ static int is_port_available(int *port, int is_tcp) {
return 1;
}
+typedef struct portreq {
+ grpc_pollset pollset;
+ int port;
+} portreq;
+
+static void got_port_from_server(void *arg,
+ const grpc_httpcli_response *response) {
+ size_t i;
+ int port = 0;
+ portreq *pr = arg;
+ GPR_ASSERT(response);
+ GPR_ASSERT(response->status == 200);
+ for (i = 0; i < response->body_length; i++) {
+ GPR_ASSERT(response->body[i] >= '0' && response->body[i] <= '9');
+ port = port * 10 + response->body[i] - '0';
+ }
+ GPR_ASSERT(port > 1024);
+ gpr_mu_lock(GRPC_POLLSET_MU(&pr->pollset));
+ pr->port = port;
+ grpc_pollset_kick(&pr->pollset, NULL);
+ gpr_mu_unlock(GRPC_POLLSET_MU(&pr->pollset));
+}
+
+static void destroy_pollset_and_shutdown(void *p) {
+ grpc_pollset_destroy(p);
+ grpc_shutdown();
+}
+
+static int pick_port_using_server(char *server) {
+ grpc_httpcli_context context;
+ grpc_httpcli_request req;
+ portreq pr;
+
+ grpc_init();
+
+ memset(&pr, 0, sizeof(pr));
+ memset(&req, 0, sizeof(req));
+ grpc_pollset_init(&pr.pollset);
+ pr.port = -1;
+
+ req.host = server;
+ req.path = "/get";
+
+ grpc_httpcli_context_init(&context);
+ grpc_httpcli_get(&context, &pr.pollset, &req,
+ GRPC_TIMEOUT_SECONDS_TO_DEADLINE(10), got_port_from_server,
+ &pr);
+ gpr_mu_lock(GRPC_POLLSET_MU(&pr.pollset));
+ while (pr.port == -1) {
+ grpc_pollset_worker worker;
+ grpc_pollset_work(&pr.pollset, &worker,
+ GRPC_TIMEOUT_SECONDS_TO_DEADLINE(1));
+ }
+ gpr_mu_unlock(GRPC_POLLSET_MU(&pr.pollset));
+
+ grpc_httpcli_context_destroy(&context);
+ grpc_pollset_shutdown(&pr.pollset, destroy_pollset_and_shutdown, &pr.pollset);
+
+ return pr.port;
+}
+
int grpc_pick_unused_port(void) {
/* We repeatedly pick a port and then see whether or not it is
available for use both as a TCP socket and a UDP socket. First, we
@@ -143,6 +208,15 @@ int grpc_pick_unused_port(void) {
int is_tcp = 1;
int try = 0;
+ char *env = gpr_getenv("GRPC_TEST_PORT_SERVER");
+ if (env) {
+ int port = pick_port_using_server(env);
+ gpr_free(env);
+ if (port != 0) {
+ return port;
+ }
+ }
+
for (;;) {
int port;
try++;
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/doxygen/Doxyfile.core.internal b/tools/doxygen/Doxyfile.core.internal
index a4d7764dfb..cbf5c50a65 100644
--- a/tools/doxygen/Doxyfile.core.internal
+++ b/tools/doxygen/Doxyfile.core.internal
@@ -767,10 +767,6 @@ include/grpc/compression.h \
include/grpc/grpc.h \
include/grpc/status.h \
include/grpc/census.h \
-src/core/httpcli/format_request.h \
-src/core/httpcli/httpcli.h \
-src/core/httpcli/httpcli_security_connector.h \
-src/core/httpcli/parser.h \
src/core/security/auth_filters.h \
src/core/security/base64.h \
src/core/security/credentials.h \
@@ -810,6 +806,9 @@ src/core/client_config/subchannel_factory_decorators/merge_channel_args.h \
src/core/client_config/uri_parser.h \
src/core/compression/message_compress.h \
src/core/debug/trace.h \
+src/core/httpcli/format_request.h \
+src/core/httpcli/httpcli.h \
+src/core/httpcli/parser.h \
src/core/iomgr/alarm.h \
src/core/iomgr/alarm_heap.h \
src/core/iomgr/alarm_internal.h \
@@ -882,10 +881,7 @@ src/core/transport/transport.h \
src/core/transport/transport_impl.h \
src/core/census/context.h \
src/core/census/rpc_stat_id.h \
-src/core/httpcli/format_request.c \
-src/core/httpcli/httpcli.c \
src/core/httpcli/httpcli_security_connector.c \
-src/core/httpcli/parser.c \
src/core/security/base64.c \
src/core/security/client_auth_filter.c \
src/core/security/credentials.c \
@@ -932,6 +928,9 @@ src/core/client_config/uri_parser.c \
src/core/compression/algorithm.c \
src/core/compression/message_compress.c \
src/core/debug/trace.c \
+src/core/httpcli/format_request.c \
+src/core/httpcli/httpcli.c \
+src/core/httpcli/parser.c \
src/core/iomgr/alarm.c \
src/core/iomgr/alarm_heap.c \
src/core/iomgr/endpoint.c \
diff --git a/tools/run_tests/jobset.py b/tools/run_tests/jobset.py
index e5e778a3f1..b7e0089269 100755
--- a/tools/run_tests/jobset.py
+++ b/tools/run_tests/jobset.py
@@ -164,13 +164,15 @@ class JobSpec(object):
class Job(object):
"""Manages one job."""
- def __init__(self, spec, bin_hash, newline_on_success, travis, xml_report):
+ def __init__(self, spec, bin_hash, newline_on_success, travis, add_env, xml_report):
self._spec = spec
self._bin_hash = bin_hash
self._tempfile = tempfile.TemporaryFile()
env = os.environ.copy()
for k, v in spec.environ.iteritems():
env[k] = v
+ for k, v in add_env.iteritems():
+ env[k] = v
self._start = time.time()
self._process = subprocess.Popen(args=spec.cmdline,
stderr=subprocess.STDOUT,
@@ -229,7 +231,7 @@ class Jobset(object):
"""Manages one run of jobs."""
def __init__(self, check_cancelled, maxjobs, newline_on_success, travis,
- stop_on_failure, cache, xml_report):
+ stop_on_failure, add_env, cache, xml_report):
self._running = set()
self._check_cancelled = check_cancelled
self._cancelled = False
@@ -242,6 +244,7 @@ class Jobset(object):
self._stop_on_failure = stop_on_failure
self._hashes = {}
self._xml_report = xml_report
+ self._add_env = add_env
def start(self, spec):
"""Start a job. Return True on success, False on failure."""
@@ -264,16 +267,12 @@ class Jobset(object):
bin_hash = None
should_run = True
if should_run:
- try:
- self._running.add(Job(spec,
- bin_hash,
- self._newline_on_success,
- self._travis,
- self._xml_report))
- except:
- message('FAILED', spec.shortname)
- self._cancelled = True
- return False
+ self._running.add(Job(spec,
+ bin_hash,
+ self._newline_on_success,
+ self._travis,
+ self._add_env,
+ self._xml_report))
return True
def reap(self):
@@ -344,10 +343,11 @@ def run(cmdlines,
infinite_runs=False,
stop_on_failure=False,
cache=None,
- xml_report=None):
+ xml_report=None,
+ add_env={}):
js = Jobset(check_cancelled,
maxjobs if maxjobs is not None else _DEFAULT_MAX_JOBS,
- newline_on_success, travis, stop_on_failure,
+ newline_on_success, travis, stop_on_failure, add_env,
cache if cache is not None else NoCache(),
xml_report)
for cmdline in cmdlines:
diff --git a/tools/run_tests/port_server.py b/tools/run_tests/port_server.py
new file mode 100755
index 0000000000..0f81470d28
--- /dev/null
+++ b/tools/run_tests/port_server.py
@@ -0,0 +1,117 @@
+#!/usr/bin/env python
+# Copyright 2015, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+# * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+# * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+"""Manage TCP ports for unit tests; started by run_tests.py"""
+
+import argparse
+import BaseHTTPServer
+import hashlib
+import os
+import socket
+import sys
+import time
+
+argp = argparse.ArgumentParser(description='Server for httpcli_test')
+argp.add_argument('-p', '--port', default=12345, type=int)
+args = argp.parse_args()
+
+print 'port server running on port %d' % args.port
+
+pool = []
+in_use = {}
+
+with open(__file__) as f:
+ _MY_VERSION = hashlib.sha1(f.read()).hexdigest()
+
+
+def refill_pool():
+ """Scan for ports not marked for being in use"""
+ for i in range(10000, 65000):
+ if len(pool) > 100: break
+ if i in in_use:
+ age = time.time() - in_use[i]
+ if age < 600:
+ continue
+ del in_use[i]
+ s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
+ try:
+ s.bind(('localhost', i))
+ pool.append(i)
+ except:
+ pass # we really don't care about failures
+ finally:
+ s.close()
+
+
+def allocate_port():
+ global pool
+ global in_use
+ if not pool:
+ refill_pool()
+ port = pool[0]
+ pool = pool[1:]
+ in_use[port] = time.time()
+ return port
+
+
+keep_running = True
+
+
+class Handler(BaseHTTPServer.BaseHTTPRequestHandler):
+
+ def do_GET(self):
+ global keep_running
+ if self.path == '/get':
+ # allocate a new port, it will stay bound for ten minutes and until
+ # it's unused
+ self.send_response(200)
+ self.send_header('Content-Type', 'text/plain')
+ self.end_headers()
+ p = allocate_port()
+ self.log_message('allocated port %d' % p)
+ self.wfile.write('%d' % p)
+ elif self.path == '/version':
+ # fetch a version string and the current process pid
+ self.send_response(200)
+ self.send_header('Content-Type', 'text/plain')
+ self.end_headers()
+ self.wfile.write(_MY_VERSION)
+ elif self.path == '/quit':
+ self.send_response(200)
+ self.end_headers()
+ keep_running = False
+
+
+httpd = BaseHTTPServer.HTTPServer(('', args.port), Handler)
+while keep_running:
+ httpd.handle_request()
+
+print 'done'
+
diff --git a/tools/run_tests/run_tests.py b/tools/run_tests/run_tests.py
index 482ffcc435..47d2b6183e 100755
--- a/tools/run_tests/run_tests.py
+++ b/tools/run_tests/run_tests.py
@@ -32,6 +32,7 @@
import argparse
import glob
+import hashlib
import itertools
import json
import multiprocessing
@@ -43,6 +44,7 @@ import subprocess
import sys
import time
import xml.etree.cElementTree as ET
+import urllib2
import jobset
import watch_dirs
@@ -127,10 +129,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':
@@ -526,7 +532,43 @@ class TestCache(object):
self.parse(json.loads(f.read()))
-def _build_and_run(check_cancelled, newline_on_success, travis, cache, xml_report=None):
+def _start_port_server(port_server_port):
+ # check if a compatible port server is running
+ # if incompatible (version mismatch) ==> start a new one
+ # if not running ==> start a new one
+ # otherwise, leave it up
+ try:
+ version = urllib2.urlopen('http://localhost:%d/version' % port_server_port).read()
+ running = True
+ except Exception:
+ running = False
+ if running:
+ with open('tools/run_tests/port_server.py') as f:
+ current_version = hashlib.sha1(f.read()).hexdigest()
+ running = (version == current_version)
+ if not running:
+ urllib2.urlopen('http://localhost:%d/quit' % port_server_port).read()
+ time.sleep(1)
+ if not running:
+ port_log = open('portlog.txt', 'w')
+ port_server = subprocess.Popen(
+ ['python', 'tools/run_tests/port_server.py', '-p', '%d' % port_server_port],
+ stderr=subprocess.STDOUT,
+ stdout=port_log)
+ # ensure port server is up
+ while True:
+ try:
+ urllib2.urlopen('http://localhost:%d/get' % port_server_port).read()
+ break
+ except urllib2.URLError:
+ time.sleep(0.5)
+ except:
+ port_server.kill()
+ raise
+
+
+def _build_and_run(
+ check_cancelled, newline_on_success, travis, cache, xml_report=None):
"""Do one pass of building & running tests."""
# build latest sequentially
if not jobset.run(build_steps, maxjobs=1,
@@ -536,6 +578,8 @@ def _build_and_run(check_cancelled, newline_on_success, travis, cache, xml_repor
# start antagonists
antagonists = [subprocess.Popen(['tools/run_tests/antagonist.py'])
for _ in range(0, args.antagonists)]
+ port_server_port = 9999
+ _start_port_server(port_server_port)
try:
infinite_runs = runs_per_test == 0
# When running on travis, we want out test runs to be as similar as possible
@@ -562,7 +606,8 @@ def _build_and_run(check_cancelled, newline_on_success, travis, cache, xml_repor
maxjobs=args.jobs,
stop_on_failure=args.stop_on_failure,
cache=cache if not xml_report else None,
- xml_report=testsuite):
+ xml_report=testsuite,
+ add_env={'GRPC_TEST_PORT_SERVER': 'localhost:%d' % port_server_port}):
return 2
finally:
for antagonist in antagonists:
diff --git a/tools/run_tests/sources_and_headers.json b/tools/run_tests/sources_and_headers.json
index dac5241363..8746f34ecf 100644
--- a/tools/run_tests/sources_and_headers.json
+++ b/tools/run_tests/sources_and_headers.json
@@ -12269,7 +12269,6 @@
"src/core/debug/trace.h",
"src/core/httpcli/format_request.h",
"src/core/httpcli/httpcli.h",
- "src/core/httpcli/httpcli_security_connector.h",
"src/core/httpcli/parser.h",
"src/core/iomgr/alarm.h",
"src/core/iomgr/alarm_heap.h",
@@ -12427,7 +12426,6 @@
"src/core/httpcli/httpcli.c",
"src/core/httpcli/httpcli.h",
"src/core/httpcli/httpcli_security_connector.c",
- "src/core/httpcli/httpcli_security_connector.h",
"src/core/httpcli/parser.c",
"src/core/httpcli/parser.h",
"src/core/iomgr/alarm.c",
@@ -12740,6 +12738,9 @@
"src/core/client_config/uri_parser.h",
"src/core/compression/message_compress.h",
"src/core/debug/trace.h",
+ "src/core/httpcli/format_request.h",
+ "src/core/httpcli/httpcli.h",
+ "src/core/httpcli/parser.h",
"src/core/iomgr/alarm.h",
"src/core/iomgr/alarm_heap.h",
"src/core/iomgr/alarm_internal.h",
@@ -12877,6 +12878,12 @@
"src/core/compression/message_compress.h",
"src/core/debug/trace.c",
"src/core/debug/trace.h",
+ "src/core/httpcli/format_request.c",
+ "src/core/httpcli/format_request.h",
+ "src/core/httpcli/httpcli.c",
+ "src/core/httpcli/httpcli.h",
+ "src/core/httpcli/parser.c",
+ "src/core/httpcli/parser.h",
"src/core/iomgr/alarm.c",
"src/core/iomgr/alarm.h",
"src/core/iomgr/alarm_heap.c",
diff --git a/tools/run_tests/tests.json b/tools/run_tests/tests.json
index 9018ee7a41..dfeb1d2d4f 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": "zookeeper_test",
@@ -985,6 +1506,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fake_security_cancel_after_accept_test",
@@ -996,6 +1522,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fake_security_cancel_after_accept_and_writes_closed_test",
@@ -1007,6 +1538,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fake_security_cancel_after_invoke_test",
@@ -1018,6 +1554,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fake_security_cancel_before_invoke_test",
@@ -1029,6 +1570,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fake_security_cancel_in_a_vacuum_test",
@@ -1040,6 +1586,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fake_security_census_simple_request_test",
@@ -1051,6 +1602,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fake_security_channel_connectivity_test",
@@ -1062,6 +1618,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fake_security_default_host_test",
@@ -1073,6 +1634,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fake_security_disappearing_server_test",
@@ -1084,6 +1650,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fake_security_early_server_shutdown_finishes_inflight_calls_test",
@@ -1095,6 +1666,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fake_security_early_server_shutdown_finishes_tags_test",
@@ -1106,6 +1682,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fake_security_empty_batch_test",
@@ -1117,6 +1698,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fake_security_graceful_server_shutdown_test",
@@ -1128,6 +1714,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fake_security_invoke_large_request_test",
@@ -1139,6 +1730,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fake_security_max_concurrent_streams_test",
@@ -1150,6 +1746,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fake_security_max_message_length_test",
@@ -1161,6 +1762,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fake_security_no_op_test",
@@ -1172,6 +1778,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fake_security_ping_pong_streaming_test",
@@ -1183,6 +1794,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fake_security_registered_call_test",
@@ -1194,6 +1810,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fake_security_request_response_with_binary_metadata_and_payload_test",
@@ -1205,6 +1826,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fake_security_request_response_with_metadata_and_payload_test",
@@ -1216,6 +1842,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fake_security_request_response_with_payload_test",
@@ -1227,6 +1858,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fake_security_request_response_with_payload_and_call_creds_test",
@@ -1238,6 +1874,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fake_security_request_response_with_trailing_metadata_and_payload_test",
@@ -1249,6 +1890,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fake_security_request_with_compressed_payload_test",
@@ -1260,6 +1906,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fake_security_request_with_flags_test",
@@ -1271,6 +1922,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fake_security_request_with_large_metadata_test",
@@ -1282,6 +1938,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fake_security_request_with_payload_test",
@@ -1293,6 +1954,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fake_security_server_finishes_request_test",
@@ -1304,6 +1970,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fake_security_simple_delayed_request_test",
@@ -1315,6 +1986,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fake_security_simple_request_test",
@@ -1326,6 +2002,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fake_security_simple_request_with_high_initial_sequence_number_test",
@@ -1337,6 +2018,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_bad_hostname_test",
@@ -1348,6 +2035,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_cancel_after_accept_test",
@@ -1359,6 +2052,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_cancel_after_accept_and_writes_closed_test",
@@ -1370,6 +2069,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_cancel_after_invoke_test",
@@ -1381,6 +2086,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_cancel_before_invoke_test",
@@ -1392,6 +2103,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_cancel_in_a_vacuum_test",
@@ -1403,6 +2120,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_census_simple_request_test",
@@ -1414,6 +2137,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_channel_connectivity_test",
@@ -1425,6 +2154,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_default_host_test",
@@ -1436,6 +2171,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_disappearing_server_test",
@@ -1447,6 +2188,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_early_server_shutdown_finishes_inflight_calls_test",
@@ -1458,6 +2205,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_early_server_shutdown_finishes_tags_test",
@@ -1469,6 +2222,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_empty_batch_test",
@@ -1480,6 +2239,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_graceful_server_shutdown_test",
@@ -1491,6 +2256,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_invoke_large_request_test",
@@ -1502,6 +2273,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_max_concurrent_streams_test",
@@ -1513,6 +2290,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_max_message_length_test",
@@ -1524,6 +2307,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_no_op_test",
@@ -1535,6 +2324,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_ping_pong_streaming_test",
@@ -1546,6 +2341,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_registered_call_test",
@@ -1557,6 +2358,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_request_response_with_binary_metadata_and_payload_test",
@@ -1568,6 +2375,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_request_response_with_metadata_and_payload_test",
@@ -1579,6 +2392,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_request_response_with_payload_test",
@@ -1590,6 +2409,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_request_response_with_payload_and_call_creds_test",
@@ -1601,6 +2426,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_request_response_with_trailing_metadata_and_payload_test",
@@ -1612,6 +2443,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_request_with_compressed_payload_test",
@@ -1623,6 +2460,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_request_with_flags_test",
@@ -1634,6 +2477,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_request_with_large_metadata_test",
@@ -1645,6 +2494,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_request_with_payload_test",
@@ -1656,6 +2511,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_server_finishes_request_test",
@@ -1667,6 +2528,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_simple_delayed_request_test",
@@ -1678,6 +2545,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_simple_request_test",
@@ -1689,6 +2562,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_simple_request_with_high_initial_sequence_number_test",
@@ -1700,6 +2579,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_compression_bad_hostname_test",
@@ -1711,6 +2596,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_compression_cancel_after_accept_test",
@@ -1722,6 +2613,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_compression_cancel_after_accept_and_writes_closed_test",
@@ -1733,6 +2630,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_compression_cancel_after_invoke_test",
@@ -1744,6 +2647,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_compression_cancel_before_invoke_test",
@@ -1755,6 +2664,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_compression_cancel_in_a_vacuum_test",
@@ -1766,6 +2681,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_compression_census_simple_request_test",
@@ -1777,6 +2698,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_compression_channel_connectivity_test",
@@ -1788,6 +2715,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_compression_default_host_test",
@@ -1799,6 +2732,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_compression_disappearing_server_test",
@@ -1810,6 +2749,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_compression_early_server_shutdown_finishes_inflight_calls_test",
@@ -1821,6 +2766,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_compression_early_server_shutdown_finishes_tags_test",
@@ -1832,6 +2783,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_compression_empty_batch_test",
@@ -1843,6 +2800,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_compression_graceful_server_shutdown_test",
@@ -1854,6 +2817,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_compression_invoke_large_request_test",
@@ -1865,6 +2834,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_compression_max_concurrent_streams_test",
@@ -1876,6 +2851,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_compression_max_message_length_test",
@@ -1887,6 +2868,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_compression_no_op_test",
@@ -1898,6 +2885,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_compression_ping_pong_streaming_test",
@@ -1909,6 +2902,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_compression_registered_call_test",
@@ -1920,6 +2919,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_compression_request_response_with_binary_metadata_and_payload_test",
@@ -1931,6 +2936,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_compression_request_response_with_metadata_and_payload_test",
@@ -1942,6 +2953,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_compression_request_response_with_payload_test",
@@ -1953,6 +2970,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_compression_request_response_with_payload_and_call_creds_test",
@@ -1964,6 +2987,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_compression_request_response_with_trailing_metadata_and_payload_test",
@@ -1975,6 +3004,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_compression_request_with_compressed_payload_test",
@@ -1986,6 +3021,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_compression_request_with_flags_test",
@@ -1997,6 +3038,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_compression_request_with_large_metadata_test",
@@ -2008,6 +3055,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_compression_request_with_payload_test",
@@ -2019,6 +3072,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_compression_server_finishes_request_test",
@@ -2030,6 +3089,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_compression_simple_delayed_request_test",
@@ -2041,6 +3106,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_compression_simple_request_test",
@@ -2052,6 +3123,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_compression_simple_request_with_high_initial_sequence_number_test",
@@ -2063,6 +3140,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_uds_posix_bad_hostname_test",
@@ -2073,6 +3155,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_uds_posix_cancel_after_accept_test",
@@ -2083,6 +3170,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_uds_posix_cancel_after_accept_and_writes_closed_test",
@@ -2093,6 +3185,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_uds_posix_cancel_after_invoke_test",
@@ -2103,6 +3200,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_uds_posix_cancel_before_invoke_test",
@@ -2113,6 +3215,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_uds_posix_cancel_in_a_vacuum_test",
@@ -2123,6 +3230,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_uds_posix_census_simple_request_test",
@@ -2133,6 +3245,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_uds_posix_channel_connectivity_test",
@@ -2143,6 +3260,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_uds_posix_disappearing_server_test",
@@ -2153,6 +3275,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_uds_posix_early_server_shutdown_finishes_inflight_calls_test",
@@ -2163,6 +3290,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_uds_posix_early_server_shutdown_finishes_tags_test",
@@ -2173,6 +3305,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_uds_posix_empty_batch_test",
@@ -2183,6 +3320,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_uds_posix_graceful_server_shutdown_test",
@@ -2193,6 +3335,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_uds_posix_invoke_large_request_test",
@@ -2203,6 +3350,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_uds_posix_max_concurrent_streams_test",
@@ -2213,6 +3365,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_uds_posix_max_message_length_test",
@@ -2223,6 +3380,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_uds_posix_no_op_test",
@@ -2233,6 +3395,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_uds_posix_ping_pong_streaming_test",
@@ -2243,6 +3410,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_uds_posix_registered_call_test",
@@ -2253,6 +3425,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_uds_posix_request_response_with_binary_metadata_and_payload_test",
@@ -2263,6 +3440,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_uds_posix_request_response_with_metadata_and_payload_test",
@@ -2273,6 +3455,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_uds_posix_request_response_with_payload_test",
@@ -2283,6 +3470,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_uds_posix_request_response_with_payload_and_call_creds_test",
@@ -2293,6 +3485,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_uds_posix_request_response_with_trailing_metadata_and_payload_test",
@@ -2303,6 +3500,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_uds_posix_request_with_compressed_payload_test",
@@ -2313,6 +3515,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_uds_posix_request_with_flags_test",
@@ -2323,6 +3530,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_uds_posix_request_with_large_metadata_test",
@@ -2333,6 +3545,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_uds_posix_request_with_payload_test",
@@ -2343,6 +3560,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_uds_posix_server_finishes_request_test",
@@ -2353,6 +3575,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_uds_posix_simple_delayed_request_test",
@@ -2363,6 +3590,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_uds_posix_simple_request_test",
@@ -2373,6 +3605,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_uds_posix_simple_request_with_high_initial_sequence_number_test",
@@ -2383,6 +3620,9 @@
]
},
{
+ "ci_platforms": [
+ "linux"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_uds_posix_with_poll_bad_hostname_test",
@@ -2391,6 +3631,9 @@
]
},
{
+ "ci_platforms": [
+ "linux"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_uds_posix_with_poll_cancel_after_accept_test",
@@ -2399,6 +3642,9 @@
]
},
{
+ "ci_platforms": [
+ "linux"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_uds_posix_with_poll_cancel_after_accept_and_writes_closed_test",
@@ -2407,6 +3653,9 @@
]
},
{
+ "ci_platforms": [
+ "linux"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_uds_posix_with_poll_cancel_after_invoke_test",
@@ -2415,6 +3664,9 @@
]
},
{
+ "ci_platforms": [
+ "linux"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_uds_posix_with_poll_cancel_before_invoke_test",
@@ -2423,6 +3675,9 @@
]
},
{
+ "ci_platforms": [
+ "linux"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_uds_posix_with_poll_cancel_in_a_vacuum_test",
@@ -2431,6 +3686,9 @@
]
},
{
+ "ci_platforms": [
+ "linux"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_uds_posix_with_poll_census_simple_request_test",
@@ -2439,6 +3697,9 @@
]
},
{
+ "ci_platforms": [
+ "linux"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_uds_posix_with_poll_channel_connectivity_test",
@@ -2447,6 +3708,9 @@
]
},
{
+ "ci_platforms": [
+ "linux"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_uds_posix_with_poll_disappearing_server_test",
@@ -2455,6 +3719,9 @@
]
},
{
+ "ci_platforms": [
+ "linux"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_uds_posix_with_poll_early_server_shutdown_finishes_inflight_calls_test",
@@ -2463,6 +3730,9 @@
]
},
{
+ "ci_platforms": [
+ "linux"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_uds_posix_with_poll_early_server_shutdown_finishes_tags_test",
@@ -2471,6 +3741,9 @@
]
},
{
+ "ci_platforms": [
+ "linux"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_uds_posix_with_poll_empty_batch_test",
@@ -2479,6 +3752,9 @@
]
},
{
+ "ci_platforms": [
+ "linux"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_uds_posix_with_poll_graceful_server_shutdown_test",
@@ -2487,6 +3763,9 @@
]
},
{
+ "ci_platforms": [
+ "linux"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_uds_posix_with_poll_invoke_large_request_test",
@@ -2495,6 +3774,9 @@
]
},
{
+ "ci_platforms": [
+ "linux"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_uds_posix_with_poll_max_concurrent_streams_test",
@@ -2503,6 +3785,9 @@
]
},
{
+ "ci_platforms": [
+ "linux"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_uds_posix_with_poll_max_message_length_test",
@@ -2511,6 +3796,9 @@
]
},
{
+ "ci_platforms": [
+ "linux"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_uds_posix_with_poll_no_op_test",
@@ -2519,6 +3807,9 @@
]
},
{
+ "ci_platforms": [
+ "linux"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_uds_posix_with_poll_ping_pong_streaming_test",
@@ -2527,6 +3818,9 @@
]
},
{
+ "ci_platforms": [
+ "linux"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_uds_posix_with_poll_registered_call_test",
@@ -2535,6 +3829,9 @@
]
},
{
+ "ci_platforms": [
+ "linux"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_uds_posix_with_poll_request_response_with_binary_metadata_and_payload_test",
@@ -2543,6 +3840,9 @@
]
},
{
+ "ci_platforms": [
+ "linux"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_uds_posix_with_poll_request_response_with_metadata_and_payload_test",
@@ -2551,6 +3851,9 @@
]
},
{
+ "ci_platforms": [
+ "linux"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_uds_posix_with_poll_request_response_with_payload_test",
@@ -2559,6 +3862,9 @@
]
},
{
+ "ci_platforms": [
+ "linux"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_uds_posix_with_poll_request_response_with_payload_and_call_creds_test",
@@ -2567,6 +3873,9 @@
]
},
{
+ "ci_platforms": [
+ "linux"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_uds_posix_with_poll_request_response_with_trailing_metadata_and_payload_test",
@@ -2575,6 +3884,9 @@
]
},
{
+ "ci_platforms": [
+ "linux"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_uds_posix_with_poll_request_with_compressed_payload_test",
@@ -2583,6 +3895,9 @@
]
},
{
+ "ci_platforms": [
+ "linux"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_uds_posix_with_poll_request_with_flags_test",
@@ -2591,6 +3906,9 @@
]
},
{
+ "ci_platforms": [
+ "linux"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_uds_posix_with_poll_request_with_large_metadata_test",
@@ -2599,6 +3917,9 @@
]
},
{
+ "ci_platforms": [
+ "linux"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_uds_posix_with_poll_request_with_payload_test",
@@ -2607,6 +3928,9 @@
]
},
{
+ "ci_platforms": [
+ "linux"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_uds_posix_with_poll_server_finishes_request_test",
@@ -2615,6 +3939,9 @@
]
},
{
+ "ci_platforms": [
+ "linux"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_uds_posix_with_poll_simple_delayed_request_test",
@@ -2623,6 +3950,9 @@
]
},
{
+ "ci_platforms": [
+ "linux"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_uds_posix_with_poll_simple_request_test",
@@ -2631,6 +3961,9 @@
]
},
{
+ "ci_platforms": [
+ "linux"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_uds_posix_with_poll_simple_request_with_high_initial_sequence_number_test",
@@ -2639,6 +3972,9 @@
]
},
{
+ "ci_platforms": [
+ "linux"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_with_poll_bad_hostname_test",
@@ -2647,6 +3983,9 @@
]
},
{
+ "ci_platforms": [
+ "linux"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_with_poll_cancel_after_accept_test",
@@ -2655,6 +3994,9 @@
]
},
{
+ "ci_platforms": [
+ "linux"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_with_poll_cancel_after_accept_and_writes_closed_test",
@@ -2663,6 +4005,9 @@
]
},
{
+ "ci_platforms": [
+ "linux"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_with_poll_cancel_after_invoke_test",
@@ -2671,6 +4016,9 @@
]
},
{
+ "ci_platforms": [
+ "linux"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_with_poll_cancel_before_invoke_test",
@@ -2679,6 +4027,9 @@
]
},
{
+ "ci_platforms": [
+ "linux"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_with_poll_cancel_in_a_vacuum_test",
@@ -2687,6 +4038,9 @@
]
},
{
+ "ci_platforms": [
+ "linux"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_with_poll_census_simple_request_test",
@@ -2695,6 +4049,9 @@
]
},
{
+ "ci_platforms": [
+ "linux"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_with_poll_channel_connectivity_test",
@@ -2703,6 +4060,9 @@
]
},
{
+ "ci_platforms": [
+ "linux"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_with_poll_default_host_test",
@@ -2711,6 +4071,9 @@
]
},
{
+ "ci_platforms": [
+ "linux"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_with_poll_disappearing_server_test",
@@ -2719,6 +4082,9 @@
]
},
{
+ "ci_platforms": [
+ "linux"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_with_poll_early_server_shutdown_finishes_inflight_calls_test",
@@ -2727,6 +4093,9 @@
]
},
{
+ "ci_platforms": [
+ "linux"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_with_poll_early_server_shutdown_finishes_tags_test",
@@ -2735,6 +4104,9 @@
]
},
{
+ "ci_platforms": [
+ "linux"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_with_poll_empty_batch_test",
@@ -2743,6 +4115,9 @@
]
},
{
+ "ci_platforms": [
+ "linux"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_with_poll_graceful_server_shutdown_test",
@@ -2751,6 +4126,9 @@
]
},
{
+ "ci_platforms": [
+ "linux"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_with_poll_invoke_large_request_test",
@@ -2759,6 +4137,9 @@
]
},
{
+ "ci_platforms": [
+ "linux"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_with_poll_max_concurrent_streams_test",
@@ -2767,6 +4148,9 @@
]
},
{
+ "ci_platforms": [
+ "linux"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_with_poll_max_message_length_test",
@@ -2775,6 +4159,9 @@
]
},
{
+ "ci_platforms": [
+ "linux"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_with_poll_no_op_test",
@@ -2783,6 +4170,9 @@
]
},
{
+ "ci_platforms": [
+ "linux"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_with_poll_ping_pong_streaming_test",
@@ -2791,6 +4181,9 @@
]
},
{
+ "ci_platforms": [
+ "linux"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_with_poll_registered_call_test",
@@ -2799,6 +4192,9 @@
]
},
{
+ "ci_platforms": [
+ "linux"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_with_poll_request_response_with_binary_metadata_and_payload_test",
@@ -2807,6 +4203,9 @@
]
},
{
+ "ci_platforms": [
+ "linux"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_with_poll_request_response_with_metadata_and_payload_test",
@@ -2815,6 +4214,9 @@
]
},
{
+ "ci_platforms": [
+ "linux"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_with_poll_request_response_with_payload_test",
@@ -2823,6 +4225,9 @@
]
},
{
+ "ci_platforms": [
+ "linux"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_with_poll_request_response_with_payload_and_call_creds_test",
@@ -2831,6 +4236,9 @@
]
},
{
+ "ci_platforms": [
+ "linux"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_with_poll_request_response_with_trailing_metadata_and_payload_test",
@@ -2839,6 +4247,9 @@
]
},
{
+ "ci_platforms": [
+ "linux"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_with_poll_request_with_compressed_payload_test",
@@ -2847,6 +4258,9 @@
]
},
{
+ "ci_platforms": [
+ "linux"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_with_poll_request_with_flags_test",
@@ -2855,6 +4269,9 @@
]
},
{
+ "ci_platforms": [
+ "linux"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_with_poll_request_with_large_metadata_test",
@@ -2863,6 +4280,9 @@
]
},
{
+ "ci_platforms": [
+ "linux"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_with_poll_request_with_payload_test",
@@ -2871,6 +4291,9 @@
]
},
{
+ "ci_platforms": [
+ "linux"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_with_poll_server_finishes_request_test",
@@ -2879,6 +4302,9 @@
]
},
{
+ "ci_platforms": [
+ "linux"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_with_poll_simple_delayed_request_test",
@@ -2887,6 +4313,9 @@
]
},
{
+ "ci_platforms": [
+ "linux"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_with_poll_simple_request_test",
@@ -2895,6 +4324,9 @@
]
},
{
+ "ci_platforms": [
+ "linux"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_with_poll_simple_request_with_high_initial_sequence_number_test",
@@ -2903,6 +4335,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_with_proxy_bad_hostname_test",
@@ -2914,6 +4351,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_with_proxy_cancel_after_accept_test",
@@ -2925,6 +4367,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_with_proxy_cancel_after_accept_and_writes_closed_test",
@@ -2936,6 +4383,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_with_proxy_cancel_after_invoke_test",
@@ -2947,6 +4399,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_with_proxy_cancel_before_invoke_test",
@@ -2958,6 +4415,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_with_proxy_cancel_in_a_vacuum_test",
@@ -2969,6 +4431,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_with_proxy_census_simple_request_test",
@@ -2980,6 +4447,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_with_proxy_default_host_test",
@@ -2991,6 +4463,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_with_proxy_disappearing_server_test",
@@ -3002,6 +4479,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_with_proxy_early_server_shutdown_finishes_inflight_calls_test",
@@ -3013,6 +4495,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_with_proxy_early_server_shutdown_finishes_tags_test",
@@ -3024,6 +4511,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_with_proxy_empty_batch_test",
@@ -3035,6 +4527,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_with_proxy_graceful_server_shutdown_test",
@@ -3046,6 +4543,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_with_proxy_invoke_large_request_test",
@@ -3057,6 +4559,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_with_proxy_max_message_length_test",
@@ -3068,6 +4575,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_with_proxy_no_op_test",
@@ -3079,6 +4591,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_with_proxy_ping_pong_streaming_test",
@@ -3090,6 +4607,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_with_proxy_registered_call_test",
@@ -3101,6 +4623,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_with_proxy_request_response_with_binary_metadata_and_payload_test",
@@ -3112,6 +4639,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_with_proxy_request_response_with_metadata_and_payload_test",
@@ -3123,6 +4655,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_with_proxy_request_response_with_payload_test",
@@ -3134,6 +4671,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_with_proxy_request_response_with_payload_and_call_creds_test",
@@ -3145,6 +4687,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_with_proxy_request_response_with_trailing_metadata_and_payload_test",
@@ -3156,6 +4703,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_with_proxy_request_with_large_metadata_test",
@@ -3167,6 +4719,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_with_proxy_request_with_payload_test",
@@ -3178,6 +4735,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_with_proxy_server_finishes_request_test",
@@ -3189,6 +4751,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_with_proxy_simple_delayed_request_test",
@@ -3200,6 +4767,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_with_proxy_simple_request_test",
@@ -3211,6 +4783,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_with_proxy_simple_request_with_high_initial_sequence_number_test",
@@ -3222,6 +4799,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_simple_ssl_fullstack_bad_hostname_test",
@@ -3233,6 +4816,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_simple_ssl_fullstack_cancel_after_accept_test",
@@ -3244,6 +4833,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_simple_ssl_fullstack_cancel_after_accept_and_writes_closed_test",
@@ -3255,6 +4850,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_simple_ssl_fullstack_cancel_after_invoke_test",
@@ -3266,6 +4867,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_simple_ssl_fullstack_cancel_before_invoke_test",
@@ -3277,6 +4884,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_simple_ssl_fullstack_cancel_in_a_vacuum_test",
@@ -3288,6 +4901,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_simple_ssl_fullstack_census_simple_request_test",
@@ -3299,6 +4918,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_simple_ssl_fullstack_channel_connectivity_test",
@@ -3310,6 +4935,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_simple_ssl_fullstack_default_host_test",
@@ -3321,6 +4952,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_simple_ssl_fullstack_disappearing_server_test",
@@ -3332,6 +4969,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_simple_ssl_fullstack_early_server_shutdown_finishes_inflight_calls_test",
@@ -3343,6 +4986,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_simple_ssl_fullstack_early_server_shutdown_finishes_tags_test",
@@ -3354,6 +5003,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_simple_ssl_fullstack_empty_batch_test",
@@ -3365,6 +5020,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_simple_ssl_fullstack_graceful_server_shutdown_test",
@@ -3376,6 +5037,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_simple_ssl_fullstack_invoke_large_request_test",
@@ -3387,6 +5054,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_simple_ssl_fullstack_max_concurrent_streams_test",
@@ -3398,6 +5071,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_simple_ssl_fullstack_max_message_length_test",
@@ -3409,6 +5088,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_simple_ssl_fullstack_no_op_test",
@@ -3420,6 +5105,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_simple_ssl_fullstack_ping_pong_streaming_test",
@@ -3431,6 +5122,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_simple_ssl_fullstack_registered_call_test",
@@ -3442,6 +5139,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_simple_ssl_fullstack_request_response_with_binary_metadata_and_payload_test",
@@ -3453,6 +5156,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_simple_ssl_fullstack_request_response_with_metadata_and_payload_test",
@@ -3464,6 +5173,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_simple_ssl_fullstack_request_response_with_payload_test",
@@ -3475,6 +5190,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_simple_ssl_fullstack_request_response_with_payload_and_call_creds_test",
@@ -3486,6 +5207,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_simple_ssl_fullstack_request_response_with_trailing_metadata_and_payload_test",
@@ -3497,6 +5224,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_simple_ssl_fullstack_request_with_compressed_payload_test",
@@ -3508,6 +5241,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_simple_ssl_fullstack_request_with_flags_test",
@@ -3519,6 +5258,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_simple_ssl_fullstack_request_with_large_metadata_test",
@@ -3530,6 +5275,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_simple_ssl_fullstack_request_with_payload_test",
@@ -3541,6 +5292,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_simple_ssl_fullstack_server_finishes_request_test",
@@ -3552,6 +5309,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_simple_ssl_fullstack_simple_delayed_request_test",
@@ -3563,6 +5326,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_simple_ssl_fullstack_simple_request_test",
@@ -3574,6 +5343,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_simple_ssl_fullstack_simple_request_with_high_initial_sequence_number_test",
@@ -3585,6 +5360,9 @@
]
},
{
+ "ci_platforms": [
+ "linux"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_simple_ssl_fullstack_with_poll_bad_hostname_test",
@@ -3593,6 +5371,9 @@
]
},
{
+ "ci_platforms": [
+ "linux"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_simple_ssl_fullstack_with_poll_cancel_after_accept_test",
@@ -3601,6 +5382,9 @@
]
},
{
+ "ci_platforms": [
+ "linux"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_simple_ssl_fullstack_with_poll_cancel_after_accept_and_writes_closed_test",
@@ -3609,6 +5393,9 @@
]
},
{
+ "ci_platforms": [
+ "linux"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_simple_ssl_fullstack_with_poll_cancel_after_invoke_test",
@@ -3617,6 +5404,9 @@
]
},
{
+ "ci_platforms": [
+ "linux"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_simple_ssl_fullstack_with_poll_cancel_before_invoke_test",
@@ -3625,6 +5415,9 @@
]
},
{
+ "ci_platforms": [
+ "linux"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_simple_ssl_fullstack_with_poll_cancel_in_a_vacuum_test",
@@ -3633,6 +5426,9 @@
]
},
{
+ "ci_platforms": [
+ "linux"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_simple_ssl_fullstack_with_poll_census_simple_request_test",
@@ -3641,6 +5437,9 @@
]
},
{
+ "ci_platforms": [
+ "linux"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_simple_ssl_fullstack_with_poll_channel_connectivity_test",
@@ -3649,6 +5448,9 @@
]
},
{
+ "ci_platforms": [
+ "linux"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_simple_ssl_fullstack_with_poll_default_host_test",
@@ -3657,6 +5459,9 @@
]
},
{
+ "ci_platforms": [
+ "linux"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_simple_ssl_fullstack_with_poll_disappearing_server_test",
@@ -3665,6 +5470,9 @@
]
},
{
+ "ci_platforms": [
+ "linux"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_simple_ssl_fullstack_with_poll_early_server_shutdown_finishes_inflight_calls_test",
@@ -3673,6 +5481,9 @@
]
},
{
+ "ci_platforms": [
+ "linux"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_simple_ssl_fullstack_with_poll_early_server_shutdown_finishes_tags_test",
@@ -3681,6 +5492,9 @@
]
},
{
+ "ci_platforms": [
+ "linux"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_simple_ssl_fullstack_with_poll_empty_batch_test",
@@ -3689,6 +5503,9 @@
]
},
{
+ "ci_platforms": [
+ "linux"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_simple_ssl_fullstack_with_poll_graceful_server_shutdown_test",
@@ -3697,6 +5514,9 @@
]
},
{
+ "ci_platforms": [
+ "linux"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_simple_ssl_fullstack_with_poll_invoke_large_request_test",
@@ -3705,6 +5525,9 @@
]
},
{
+ "ci_platforms": [
+ "linux"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_simple_ssl_fullstack_with_poll_max_concurrent_streams_test",
@@ -3713,6 +5536,9 @@
]
},
{
+ "ci_platforms": [
+ "linux"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_simple_ssl_fullstack_with_poll_max_message_length_test",
@@ -3721,6 +5547,9 @@
]
},
{
+ "ci_platforms": [
+ "linux"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_simple_ssl_fullstack_with_poll_no_op_test",
@@ -3729,6 +5558,9 @@
]
},
{
+ "ci_platforms": [
+ "linux"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_simple_ssl_fullstack_with_poll_ping_pong_streaming_test",
@@ -3737,6 +5569,9 @@
]
},
{
+ "ci_platforms": [
+ "linux"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_simple_ssl_fullstack_with_poll_registered_call_test",
@@ -3745,6 +5580,9 @@
]
},
{
+ "ci_platforms": [
+ "linux"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_simple_ssl_fullstack_with_poll_request_response_with_binary_metadata_and_payload_test",
@@ -3753,6 +5591,9 @@
]
},
{
+ "ci_platforms": [
+ "linux"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_simple_ssl_fullstack_with_poll_request_response_with_metadata_and_payload_test",
@@ -3761,6 +5602,9 @@
]
},
{
+ "ci_platforms": [
+ "linux"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_simple_ssl_fullstack_with_poll_request_response_with_payload_test",
@@ -3769,6 +5613,9 @@
]
},
{
+ "ci_platforms": [
+ "linux"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_simple_ssl_fullstack_with_poll_request_response_with_payload_and_call_creds_test",
@@ -3777,6 +5624,9 @@
]
},
{
+ "ci_platforms": [
+ "linux"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_simple_ssl_fullstack_with_poll_request_response_with_trailing_metadata_and_payload_test",
@@ -3785,6 +5635,9 @@
]
},
{
+ "ci_platforms": [
+ "linux"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_simple_ssl_fullstack_with_poll_request_with_compressed_payload_test",
@@ -3793,6 +5646,9 @@
]
},
{
+ "ci_platforms": [
+ "linux"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_simple_ssl_fullstack_with_poll_request_with_flags_test",
@@ -3801,6 +5657,9 @@
]
},
{
+ "ci_platforms": [
+ "linux"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_simple_ssl_fullstack_with_poll_request_with_large_metadata_test",
@@ -3809,6 +5668,9 @@
]
},
{
+ "ci_platforms": [
+ "linux"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_simple_ssl_fullstack_with_poll_request_with_payload_test",
@@ -3817,6 +5679,9 @@
]
},
{
+ "ci_platforms": [
+ "linux"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_simple_ssl_fullstack_with_poll_server_finishes_request_test",
@@ -3825,6 +5690,9 @@
]
},
{
+ "ci_platforms": [
+ "linux"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_simple_ssl_fullstack_with_poll_simple_delayed_request_test",
@@ -3833,6 +5701,9 @@
]
},
{
+ "ci_platforms": [
+ "linux"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_simple_ssl_fullstack_with_poll_simple_request_test",
@@ -3841,6 +5712,9 @@
]
},
{
+ "ci_platforms": [
+ "linux"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_simple_ssl_fullstack_with_poll_simple_request_with_high_initial_sequence_number_test",
@@ -3849,6 +5723,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_simple_ssl_fullstack_with_proxy_bad_hostname_test",
@@ -3860,6 +5739,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_simple_ssl_fullstack_with_proxy_cancel_after_accept_test",
@@ -3871,6 +5755,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_simple_ssl_fullstack_with_proxy_cancel_after_accept_and_writes_closed_test",
@@ -3882,6 +5771,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_simple_ssl_fullstack_with_proxy_cancel_after_invoke_test",
@@ -3893,6 +5787,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_simple_ssl_fullstack_with_proxy_cancel_before_invoke_test",
@@ -3904,6 +5803,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_simple_ssl_fullstack_with_proxy_cancel_in_a_vacuum_test",
@@ -3915,6 +5819,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_simple_ssl_fullstack_with_proxy_census_simple_request_test",
@@ -3926,6 +5835,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_simple_ssl_fullstack_with_proxy_default_host_test",
@@ -3937,6 +5851,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_simple_ssl_fullstack_with_proxy_disappearing_server_test",
@@ -3948,6 +5867,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_simple_ssl_fullstack_with_proxy_early_server_shutdown_finishes_inflight_calls_test",
@@ -3959,6 +5883,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_simple_ssl_fullstack_with_proxy_early_server_shutdown_finishes_tags_test",
@@ -3970,6 +5899,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_simple_ssl_fullstack_with_proxy_empty_batch_test",
@@ -3981,6 +5915,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_simple_ssl_fullstack_with_proxy_graceful_server_shutdown_test",
@@ -3992,6 +5931,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_simple_ssl_fullstack_with_proxy_invoke_large_request_test",
@@ -4003,6 +5947,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_simple_ssl_fullstack_with_proxy_max_message_length_test",
@@ -4014,6 +5963,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_simple_ssl_fullstack_with_proxy_no_op_test",
@@ -4025,6 +5979,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_simple_ssl_fullstack_with_proxy_ping_pong_streaming_test",
@@ -4036,6 +5995,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_simple_ssl_fullstack_with_proxy_registered_call_test",
@@ -4047,6 +6011,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",
@@ -4058,6 +6027,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_simple_ssl_fullstack_with_proxy_request_response_with_metadata_and_payload_test",
@@ -4069,6 +6043,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_simple_ssl_fullstack_with_proxy_request_response_with_payload_test",
@@ -4080,6 +6059,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",
@@ -4091,6 +6075,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",
@@ -4102,6 +6091,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_simple_ssl_fullstack_with_proxy_request_with_large_metadata_test",
@@ -4113,6 +6107,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_simple_ssl_fullstack_with_proxy_request_with_payload_test",
@@ -4124,6 +6123,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_simple_ssl_fullstack_with_proxy_server_finishes_request_test",
@@ -4135,6 +6139,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_simple_ssl_fullstack_with_proxy_simple_delayed_request_test",
@@ -4146,6 +6155,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_simple_ssl_fullstack_with_proxy_simple_request_test",
@@ -4157,6 +6171,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",
@@ -4168,6 +6187,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_simple_ssl_with_oauth2_fullstack_bad_hostname_test",
@@ -4179,6 +6203,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_simple_ssl_with_oauth2_fullstack_cancel_after_accept_test",
@@ -4190,6 +6219,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_simple_ssl_with_oauth2_fullstack_cancel_after_accept_and_writes_closed_test",
@@ -4201,6 +6235,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_simple_ssl_with_oauth2_fullstack_cancel_after_invoke_test",
@@ -4212,6 +6251,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_simple_ssl_with_oauth2_fullstack_cancel_before_invoke_test",
@@ -4223,6 +6267,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_simple_ssl_with_oauth2_fullstack_cancel_in_a_vacuum_test",
@@ -4234,6 +6283,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_simple_ssl_with_oauth2_fullstack_census_simple_request_test",
@@ -4245,6 +6299,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_simple_ssl_with_oauth2_fullstack_channel_connectivity_test",
@@ -4256,6 +6315,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_simple_ssl_with_oauth2_fullstack_default_host_test",
@@ -4267,6 +6331,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_simple_ssl_with_oauth2_fullstack_disappearing_server_test",
@@ -4278,6 +6347,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_simple_ssl_with_oauth2_fullstack_early_server_shutdown_finishes_inflight_calls_test",
@@ -4289,6 +6363,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_simple_ssl_with_oauth2_fullstack_early_server_shutdown_finishes_tags_test",
@@ -4300,6 +6379,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_simple_ssl_with_oauth2_fullstack_empty_batch_test",
@@ -4311,6 +6395,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_simple_ssl_with_oauth2_fullstack_graceful_server_shutdown_test",
@@ -4322,6 +6411,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_simple_ssl_with_oauth2_fullstack_invoke_large_request_test",
@@ -4333,6 +6427,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_simple_ssl_with_oauth2_fullstack_max_concurrent_streams_test",
@@ -4344,6 +6443,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_simple_ssl_with_oauth2_fullstack_max_message_length_test",
@@ -4355,6 +6459,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_simple_ssl_with_oauth2_fullstack_no_op_test",
@@ -4366,6 +6475,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_simple_ssl_with_oauth2_fullstack_ping_pong_streaming_test",
@@ -4377,6 +6491,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_simple_ssl_with_oauth2_fullstack_registered_call_test",
@@ -4388,6 +6507,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",
@@ -4399,6 +6523,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_simple_ssl_with_oauth2_fullstack_request_response_with_metadata_and_payload_test",
@@ -4410,6 +6539,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_simple_ssl_with_oauth2_fullstack_request_response_with_payload_test",
@@ -4421,6 +6555,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",
@@ -4432,6 +6571,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",
@@ -4443,6 +6587,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_simple_ssl_with_oauth2_fullstack_request_with_compressed_payload_test",
@@ -4454,6 +6603,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_simple_ssl_with_oauth2_fullstack_request_with_flags_test",
@@ -4465,6 +6619,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_simple_ssl_with_oauth2_fullstack_request_with_large_metadata_test",
@@ -4476,6 +6635,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_simple_ssl_with_oauth2_fullstack_request_with_payload_test",
@@ -4487,6 +6651,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_simple_ssl_with_oauth2_fullstack_server_finishes_request_test",
@@ -4498,6 +6667,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_simple_ssl_with_oauth2_fullstack_simple_delayed_request_test",
@@ -4509,6 +6683,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_simple_ssl_with_oauth2_fullstack_simple_request_test",
@@ -4520,6 +6699,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",
@@ -4531,6 +6715,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_socket_pair_bad_hostname_test",
@@ -4542,6 +6731,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_socket_pair_cancel_after_accept_test",
@@ -4553,6 +6747,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_socket_pair_cancel_after_accept_and_writes_closed_test",
@@ -4564,6 +6763,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_socket_pair_cancel_after_invoke_test",
@@ -4575,6 +6779,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_socket_pair_cancel_before_invoke_test",
@@ -4586,6 +6795,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_socket_pair_cancel_in_a_vacuum_test",
@@ -4597,6 +6811,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_socket_pair_census_simple_request_test",
@@ -4608,6 +6827,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_socket_pair_early_server_shutdown_finishes_inflight_calls_test",
@@ -4619,6 +6843,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_socket_pair_early_server_shutdown_finishes_tags_test",
@@ -4630,6 +6859,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_socket_pair_empty_batch_test",
@@ -4641,6 +6875,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_socket_pair_graceful_server_shutdown_test",
@@ -4652,6 +6891,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_socket_pair_invoke_large_request_test",
@@ -4663,6 +6907,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_socket_pair_max_concurrent_streams_test",
@@ -4674,6 +6923,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_socket_pair_max_message_length_test",
@@ -4685,6 +6939,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_socket_pair_no_op_test",
@@ -4696,6 +6955,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_socket_pair_ping_pong_streaming_test",
@@ -4707,6 +6971,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_socket_pair_registered_call_test",
@@ -4718,6 +6987,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_socket_pair_request_response_with_binary_metadata_and_payload_test",
@@ -4729,6 +7003,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_socket_pair_request_response_with_metadata_and_payload_test",
@@ -4740,6 +7019,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_socket_pair_request_response_with_payload_test",
@@ -4751,6 +7035,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_socket_pair_request_response_with_payload_and_call_creds_test",
@@ -4762,6 +7051,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_socket_pair_request_response_with_trailing_metadata_and_payload_test",
@@ -4773,6 +7067,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_socket_pair_request_with_compressed_payload_test",
@@ -4784,6 +7083,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_socket_pair_request_with_flags_test",
@@ -4795,6 +7099,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_socket_pair_request_with_large_metadata_test",
@@ -4806,6 +7115,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_socket_pair_request_with_payload_test",
@@ -4817,6 +7131,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_socket_pair_server_finishes_request_test",
@@ -4828,6 +7147,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_socket_pair_simple_request_test",
@@ -4839,6 +7163,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_socket_pair_simple_request_with_high_initial_sequence_number_test",
@@ -4850,6 +7179,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_socket_pair_one_byte_at_a_time_bad_hostname_test",
@@ -4861,6 +7195,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_socket_pair_one_byte_at_a_time_cancel_after_accept_test",
@@ -4872,6 +7211,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",
@@ -4883,6 +7227,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_socket_pair_one_byte_at_a_time_cancel_after_invoke_test",
@@ -4894,6 +7243,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_socket_pair_one_byte_at_a_time_cancel_before_invoke_test",
@@ -4905,6 +7259,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_socket_pair_one_byte_at_a_time_cancel_in_a_vacuum_test",
@@ -4916,6 +7275,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_socket_pair_one_byte_at_a_time_census_simple_request_test",
@@ -4927,6 +7291,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",
@@ -4938,6 +7307,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",
@@ -4949,6 +7323,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_socket_pair_one_byte_at_a_time_empty_batch_test",
@@ -4960,6 +7339,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_socket_pair_one_byte_at_a_time_graceful_server_shutdown_test",
@@ -4971,6 +7355,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_socket_pair_one_byte_at_a_time_invoke_large_request_test",
@@ -4982,6 +7371,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_socket_pair_one_byte_at_a_time_max_concurrent_streams_test",
@@ -4993,6 +7387,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_socket_pair_one_byte_at_a_time_max_message_length_test",
@@ -5004,6 +7403,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_socket_pair_one_byte_at_a_time_no_op_test",
@@ -5015,6 +7419,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_socket_pair_one_byte_at_a_time_ping_pong_streaming_test",
@@ -5026,6 +7435,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_socket_pair_one_byte_at_a_time_registered_call_test",
@@ -5037,6 +7451,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",
@@ -5048,6 +7467,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",
@@ -5059,6 +7483,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_socket_pair_one_byte_at_a_time_request_response_with_payload_test",
@@ -5070,6 +7499,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",
@@ -5081,6 +7515,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",
@@ -5092,6 +7531,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_socket_pair_one_byte_at_a_time_request_with_compressed_payload_test",
@@ -5103,6 +7547,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_socket_pair_one_byte_at_a_time_request_with_flags_test",
@@ -5114,6 +7563,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_socket_pair_one_byte_at_a_time_request_with_large_metadata_test",
@@ -5125,6 +7579,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_socket_pair_one_byte_at_a_time_request_with_payload_test",
@@ -5136,6 +7595,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_socket_pair_one_byte_at_a_time_server_finishes_request_test",
@@ -5147,6 +7611,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_socket_pair_one_byte_at_a_time_simple_request_test",
@@ -5158,6 +7627,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",
@@ -5169,6 +7643,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_socket_pair_with_grpc_trace_bad_hostname_test",
@@ -5180,6 +7660,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_socket_pair_with_grpc_trace_cancel_after_accept_test",
@@ -5191,6 +7677,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",
@@ -5202,6 +7694,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_socket_pair_with_grpc_trace_cancel_after_invoke_test",
@@ -5213,6 +7711,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_socket_pair_with_grpc_trace_cancel_before_invoke_test",
@@ -5224,6 +7728,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_socket_pair_with_grpc_trace_cancel_in_a_vacuum_test",
@@ -5235,6 +7745,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_socket_pair_with_grpc_trace_census_simple_request_test",
@@ -5246,6 +7762,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",
@@ -5257,6 +7779,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_socket_pair_with_grpc_trace_early_server_shutdown_finishes_tags_test",
@@ -5268,6 +7796,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_socket_pair_with_grpc_trace_empty_batch_test",
@@ -5279,6 +7813,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_socket_pair_with_grpc_trace_graceful_server_shutdown_test",
@@ -5290,6 +7830,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_socket_pair_with_grpc_trace_invoke_large_request_test",
@@ -5301,6 +7847,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_socket_pair_with_grpc_trace_max_concurrent_streams_test",
@@ -5312,6 +7864,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_socket_pair_with_grpc_trace_max_message_length_test",
@@ -5323,6 +7881,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_socket_pair_with_grpc_trace_no_op_test",
@@ -5334,6 +7898,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_socket_pair_with_grpc_trace_ping_pong_streaming_test",
@@ -5345,6 +7915,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_socket_pair_with_grpc_trace_registered_call_test",
@@ -5356,6 +7932,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",
@@ -5367,6 +7949,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",
@@ -5378,6 +7966,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_socket_pair_with_grpc_trace_request_response_with_payload_test",
@@ -5389,6 +7983,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",
@@ -5400,6 +8000,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",
@@ -5411,6 +8017,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_socket_pair_with_grpc_trace_request_with_compressed_payload_test",
@@ -5422,6 +8034,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_socket_pair_with_grpc_trace_request_with_flags_test",
@@ -5433,6 +8051,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_socket_pair_with_grpc_trace_request_with_large_metadata_test",
@@ -5444,6 +8068,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_socket_pair_with_grpc_trace_request_with_payload_test",
@@ -5455,6 +8085,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_socket_pair_with_grpc_trace_server_finishes_request_test",
@@ -5466,6 +8102,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_socket_pair_with_grpc_trace_simple_request_test",
@@ -5477,6 +8119,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",
@@ -5488,6 +8136,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_bad_hostname_unsecure_test",
@@ -5499,6 +8153,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_cancel_after_accept_unsecure_test",
@@ -5510,6 +8170,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_cancel_after_accept_and_writes_closed_unsecure_test",
@@ -5521,6 +8187,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_cancel_after_invoke_unsecure_test",
@@ -5532,6 +8204,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_cancel_before_invoke_unsecure_test",
@@ -5543,6 +8221,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_cancel_in_a_vacuum_unsecure_test",
@@ -5554,6 +8238,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_census_simple_request_unsecure_test",
@@ -5565,6 +8255,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_channel_connectivity_unsecure_test",
@@ -5576,6 +8272,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_default_host_unsecure_test",
@@ -5587,6 +8289,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_disappearing_server_unsecure_test",
@@ -5598,6 +8306,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_early_server_shutdown_finishes_inflight_calls_unsecure_test",
@@ -5609,6 +8323,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_early_server_shutdown_finishes_tags_unsecure_test",
@@ -5620,6 +8340,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_empty_batch_unsecure_test",
@@ -5631,6 +8357,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_graceful_server_shutdown_unsecure_test",
@@ -5642,6 +8374,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_invoke_large_request_unsecure_test",
@@ -5653,6 +8391,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_max_concurrent_streams_unsecure_test",
@@ -5664,6 +8408,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_max_message_length_unsecure_test",
@@ -5675,6 +8425,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_no_op_unsecure_test",
@@ -5686,6 +8442,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_ping_pong_streaming_unsecure_test",
@@ -5697,6 +8459,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_registered_call_unsecure_test",
@@ -5708,6 +8476,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_request_response_with_binary_metadata_and_payload_unsecure_test",
@@ -5719,6 +8493,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_request_response_with_metadata_and_payload_unsecure_test",
@@ -5730,6 +8510,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_request_response_with_payload_unsecure_test",
@@ -5741,6 +8527,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_request_response_with_trailing_metadata_and_payload_unsecure_test",
@@ -5752,6 +8544,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_request_with_compressed_payload_unsecure_test",
@@ -5763,6 +8561,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_request_with_flags_unsecure_test",
@@ -5774,6 +8578,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_request_with_large_metadata_unsecure_test",
@@ -5785,6 +8595,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_request_with_payload_unsecure_test",
@@ -5796,6 +8612,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_server_finishes_request_unsecure_test",
@@ -5807,6 +8629,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_simple_delayed_request_unsecure_test",
@@ -5818,6 +8646,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_simple_request_unsecure_test",
@@ -5829,6 +8663,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_simple_request_with_high_initial_sequence_number_unsecure_test",
@@ -5840,6 +8680,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_compression_bad_hostname_unsecure_test",
@@ -5851,6 +8697,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_compression_cancel_after_accept_unsecure_test",
@@ -5862,6 +8714,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_compression_cancel_after_accept_and_writes_closed_unsecure_test",
@@ -5873,6 +8731,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_compression_cancel_after_invoke_unsecure_test",
@@ -5884,6 +8748,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_compression_cancel_before_invoke_unsecure_test",
@@ -5895,6 +8765,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_compression_cancel_in_a_vacuum_unsecure_test",
@@ -5906,6 +8782,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_compression_census_simple_request_unsecure_test",
@@ -5917,6 +8799,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_compression_channel_connectivity_unsecure_test",
@@ -5928,6 +8816,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_compression_default_host_unsecure_test",
@@ -5939,6 +8833,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_compression_disappearing_server_unsecure_test",
@@ -5950,6 +8850,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_compression_early_server_shutdown_finishes_inflight_calls_unsecure_test",
@@ -5961,6 +8867,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_compression_early_server_shutdown_finishes_tags_unsecure_test",
@@ -5972,6 +8884,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_compression_empty_batch_unsecure_test",
@@ -5983,6 +8901,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_compression_graceful_server_shutdown_unsecure_test",
@@ -5994,6 +8918,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_compression_invoke_large_request_unsecure_test",
@@ -6005,6 +8935,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_compression_max_concurrent_streams_unsecure_test",
@@ -6016,6 +8952,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_compression_max_message_length_unsecure_test",
@@ -6027,6 +8969,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_compression_no_op_unsecure_test",
@@ -6038,6 +8986,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_compression_ping_pong_streaming_unsecure_test",
@@ -6049,6 +9003,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_compression_registered_call_unsecure_test",
@@ -6060,6 +9020,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_compression_request_response_with_binary_metadata_and_payload_unsecure_test",
@@ -6071,6 +9037,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_compression_request_response_with_metadata_and_payload_unsecure_test",
@@ -6082,6 +9054,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_compression_request_response_with_payload_unsecure_test",
@@ -6093,6 +9071,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_compression_request_response_with_trailing_metadata_and_payload_unsecure_test",
@@ -6104,6 +9088,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_compression_request_with_compressed_payload_unsecure_test",
@@ -6115,6 +9105,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_compression_request_with_flags_unsecure_test",
@@ -6126,6 +9122,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_compression_request_with_large_metadata_unsecure_test",
@@ -6137,6 +9139,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_compression_request_with_payload_unsecure_test",
@@ -6148,6 +9156,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_compression_server_finishes_request_unsecure_test",
@@ -6159,6 +9173,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_compression_simple_delayed_request_unsecure_test",
@@ -6170,6 +9190,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_compression_simple_request_unsecure_test",
@@ -6181,6 +9207,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_compression_simple_request_with_high_initial_sequence_number_unsecure_test",
@@ -6192,6 +9224,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_uds_posix_bad_hostname_unsecure_test",
@@ -6202,6 +9239,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_uds_posix_cancel_after_accept_unsecure_test",
@@ -6212,6 +9254,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_uds_posix_cancel_after_accept_and_writes_closed_unsecure_test",
@@ -6222,6 +9269,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_uds_posix_cancel_after_invoke_unsecure_test",
@@ -6232,6 +9284,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_uds_posix_cancel_before_invoke_unsecure_test",
@@ -6242,6 +9299,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_uds_posix_cancel_in_a_vacuum_unsecure_test",
@@ -6252,6 +9314,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_uds_posix_census_simple_request_unsecure_test",
@@ -6262,6 +9329,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_uds_posix_channel_connectivity_unsecure_test",
@@ -6272,6 +9344,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_uds_posix_disappearing_server_unsecure_test",
@@ -6282,6 +9359,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_uds_posix_early_server_shutdown_finishes_inflight_calls_unsecure_test",
@@ -6292,6 +9374,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_uds_posix_early_server_shutdown_finishes_tags_unsecure_test",
@@ -6302,6 +9389,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_uds_posix_empty_batch_unsecure_test",
@@ -6312,6 +9404,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_uds_posix_graceful_server_shutdown_unsecure_test",
@@ -6322,6 +9419,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_uds_posix_invoke_large_request_unsecure_test",
@@ -6332,6 +9434,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_uds_posix_max_concurrent_streams_unsecure_test",
@@ -6342,6 +9449,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_uds_posix_max_message_length_unsecure_test",
@@ -6352,6 +9464,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_uds_posix_no_op_unsecure_test",
@@ -6362,6 +9479,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_uds_posix_ping_pong_streaming_unsecure_test",
@@ -6372,6 +9494,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_uds_posix_registered_call_unsecure_test",
@@ -6382,6 +9509,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_uds_posix_request_response_with_binary_metadata_and_payload_unsecure_test",
@@ -6392,6 +9524,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_uds_posix_request_response_with_metadata_and_payload_unsecure_test",
@@ -6402,6 +9539,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_uds_posix_request_response_with_payload_unsecure_test",
@@ -6412,6 +9554,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_uds_posix_request_response_with_trailing_metadata_and_payload_unsecure_test",
@@ -6422,6 +9569,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_uds_posix_request_with_compressed_payload_unsecure_test",
@@ -6432,6 +9584,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_uds_posix_request_with_flags_unsecure_test",
@@ -6442,6 +9599,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_uds_posix_request_with_large_metadata_unsecure_test",
@@ -6452,6 +9614,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_uds_posix_request_with_payload_unsecure_test",
@@ -6462,6 +9629,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_uds_posix_server_finishes_request_unsecure_test",
@@ -6472,6 +9644,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_uds_posix_simple_delayed_request_unsecure_test",
@@ -6482,6 +9659,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_uds_posix_simple_request_unsecure_test",
@@ -6492,6 +9674,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_uds_posix_simple_request_with_high_initial_sequence_number_unsecure_test",
@@ -6502,6 +9689,9 @@
]
},
{
+ "ci_platforms": [
+ "linux"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_uds_posix_with_poll_bad_hostname_unsecure_test",
@@ -6510,6 +9700,9 @@
]
},
{
+ "ci_platforms": [
+ "linux"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_uds_posix_with_poll_cancel_after_accept_unsecure_test",
@@ -6518,6 +9711,9 @@
]
},
{
+ "ci_platforms": [
+ "linux"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_uds_posix_with_poll_cancel_after_accept_and_writes_closed_unsecure_test",
@@ -6526,6 +9722,9 @@
]
},
{
+ "ci_platforms": [
+ "linux"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_uds_posix_with_poll_cancel_after_invoke_unsecure_test",
@@ -6534,6 +9733,9 @@
]
},
{
+ "ci_platforms": [
+ "linux"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_uds_posix_with_poll_cancel_before_invoke_unsecure_test",
@@ -6542,6 +9744,9 @@
]
},
{
+ "ci_platforms": [
+ "linux"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_uds_posix_with_poll_cancel_in_a_vacuum_unsecure_test",
@@ -6550,6 +9755,9 @@
]
},
{
+ "ci_platforms": [
+ "linux"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_uds_posix_with_poll_census_simple_request_unsecure_test",
@@ -6558,6 +9766,9 @@
]
},
{
+ "ci_platforms": [
+ "linux"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_uds_posix_with_poll_channel_connectivity_unsecure_test",
@@ -6566,6 +9777,9 @@
]
},
{
+ "ci_platforms": [
+ "linux"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_uds_posix_with_poll_disappearing_server_unsecure_test",
@@ -6574,6 +9788,9 @@
]
},
{
+ "ci_platforms": [
+ "linux"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_uds_posix_with_poll_early_server_shutdown_finishes_inflight_calls_unsecure_test",
@@ -6582,6 +9799,9 @@
]
},
{
+ "ci_platforms": [
+ "linux"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_uds_posix_with_poll_early_server_shutdown_finishes_tags_unsecure_test",
@@ -6590,6 +9810,9 @@
]
},
{
+ "ci_platforms": [
+ "linux"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_uds_posix_with_poll_empty_batch_unsecure_test",
@@ -6598,6 +9821,9 @@
]
},
{
+ "ci_platforms": [
+ "linux"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_uds_posix_with_poll_graceful_server_shutdown_unsecure_test",
@@ -6606,6 +9832,9 @@
]
},
{
+ "ci_platforms": [
+ "linux"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_uds_posix_with_poll_invoke_large_request_unsecure_test",
@@ -6614,6 +9843,9 @@
]
},
{
+ "ci_platforms": [
+ "linux"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_uds_posix_with_poll_max_concurrent_streams_unsecure_test",
@@ -6622,6 +9854,9 @@
]
},
{
+ "ci_platforms": [
+ "linux"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_uds_posix_with_poll_max_message_length_unsecure_test",
@@ -6630,6 +9865,9 @@
]
},
{
+ "ci_platforms": [
+ "linux"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_uds_posix_with_poll_no_op_unsecure_test",
@@ -6638,6 +9876,9 @@
]
},
{
+ "ci_platforms": [
+ "linux"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_uds_posix_with_poll_ping_pong_streaming_unsecure_test",
@@ -6646,6 +9887,9 @@
]
},
{
+ "ci_platforms": [
+ "linux"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_uds_posix_with_poll_registered_call_unsecure_test",
@@ -6654,6 +9898,9 @@
]
},
{
+ "ci_platforms": [
+ "linux"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_uds_posix_with_poll_request_response_with_binary_metadata_and_payload_unsecure_test",
@@ -6662,6 +9909,9 @@
]
},
{
+ "ci_platforms": [
+ "linux"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_uds_posix_with_poll_request_response_with_metadata_and_payload_unsecure_test",
@@ -6670,6 +9920,9 @@
]
},
{
+ "ci_platforms": [
+ "linux"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_uds_posix_with_poll_request_response_with_payload_unsecure_test",
@@ -6678,6 +9931,9 @@
]
},
{
+ "ci_platforms": [
+ "linux"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_uds_posix_with_poll_request_response_with_trailing_metadata_and_payload_unsecure_test",
@@ -6686,6 +9942,9 @@
]
},
{
+ "ci_platforms": [
+ "linux"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_uds_posix_with_poll_request_with_compressed_payload_unsecure_test",
@@ -6694,6 +9953,9 @@
]
},
{
+ "ci_platforms": [
+ "linux"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_uds_posix_with_poll_request_with_flags_unsecure_test",
@@ -6702,6 +9964,9 @@
]
},
{
+ "ci_platforms": [
+ "linux"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_uds_posix_with_poll_request_with_large_metadata_unsecure_test",
@@ -6710,6 +9975,9 @@
]
},
{
+ "ci_platforms": [
+ "linux"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_uds_posix_with_poll_request_with_payload_unsecure_test",
@@ -6718,6 +9986,9 @@
]
},
{
+ "ci_platforms": [
+ "linux"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_uds_posix_with_poll_server_finishes_request_unsecure_test",
@@ -6726,6 +9997,9 @@
]
},
{
+ "ci_platforms": [
+ "linux"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_uds_posix_with_poll_simple_delayed_request_unsecure_test",
@@ -6734,6 +10008,9 @@
]
},
{
+ "ci_platforms": [
+ "linux"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_uds_posix_with_poll_simple_request_unsecure_test",
@@ -6742,6 +10019,9 @@
]
},
{
+ "ci_platforms": [
+ "linux"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_uds_posix_with_poll_simple_request_with_high_initial_sequence_number_unsecure_test",
@@ -6750,6 +10030,9 @@
]
},
{
+ "ci_platforms": [
+ "linux"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_with_poll_bad_hostname_unsecure_test",
@@ -6758,6 +10041,9 @@
]
},
{
+ "ci_platforms": [
+ "linux"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_with_poll_cancel_after_accept_unsecure_test",
@@ -6766,6 +10052,9 @@
]
},
{
+ "ci_platforms": [
+ "linux"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_with_poll_cancel_after_accept_and_writes_closed_unsecure_test",
@@ -6774,6 +10063,9 @@
]
},
{
+ "ci_platforms": [
+ "linux"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_with_poll_cancel_after_invoke_unsecure_test",
@@ -6782,6 +10074,9 @@
]
},
{
+ "ci_platforms": [
+ "linux"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_with_poll_cancel_before_invoke_unsecure_test",
@@ -6790,6 +10085,9 @@
]
},
{
+ "ci_platforms": [
+ "linux"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_with_poll_cancel_in_a_vacuum_unsecure_test",
@@ -6798,6 +10096,9 @@
]
},
{
+ "ci_platforms": [
+ "linux"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_with_poll_census_simple_request_unsecure_test",
@@ -6806,6 +10107,9 @@
]
},
{
+ "ci_platforms": [
+ "linux"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_with_poll_channel_connectivity_unsecure_test",
@@ -6814,6 +10118,9 @@
]
},
{
+ "ci_platforms": [
+ "linux"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_with_poll_default_host_unsecure_test",
@@ -6822,6 +10129,9 @@
]
},
{
+ "ci_platforms": [
+ "linux"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_with_poll_disappearing_server_unsecure_test",
@@ -6830,6 +10140,9 @@
]
},
{
+ "ci_platforms": [
+ "linux"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_with_poll_early_server_shutdown_finishes_inflight_calls_unsecure_test",
@@ -6838,6 +10151,9 @@
]
},
{
+ "ci_platforms": [
+ "linux"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_with_poll_early_server_shutdown_finishes_tags_unsecure_test",
@@ -6846,6 +10162,9 @@
]
},
{
+ "ci_platforms": [
+ "linux"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_with_poll_empty_batch_unsecure_test",
@@ -6854,6 +10173,9 @@
]
},
{
+ "ci_platforms": [
+ "linux"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_with_poll_graceful_server_shutdown_unsecure_test",
@@ -6862,6 +10184,9 @@
]
},
{
+ "ci_platforms": [
+ "linux"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_with_poll_invoke_large_request_unsecure_test",
@@ -6870,6 +10195,9 @@
]
},
{
+ "ci_platforms": [
+ "linux"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_with_poll_max_concurrent_streams_unsecure_test",
@@ -6878,6 +10206,9 @@
]
},
{
+ "ci_platforms": [
+ "linux"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_with_poll_max_message_length_unsecure_test",
@@ -6886,6 +10217,9 @@
]
},
{
+ "ci_platforms": [
+ "linux"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_with_poll_no_op_unsecure_test",
@@ -6894,6 +10228,9 @@
]
},
{
+ "ci_platforms": [
+ "linux"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_with_poll_ping_pong_streaming_unsecure_test",
@@ -6902,6 +10239,9 @@
]
},
{
+ "ci_platforms": [
+ "linux"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_with_poll_registered_call_unsecure_test",
@@ -6910,6 +10250,9 @@
]
},
{
+ "ci_platforms": [
+ "linux"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_with_poll_request_response_with_binary_metadata_and_payload_unsecure_test",
@@ -6918,6 +10261,9 @@
]
},
{
+ "ci_platforms": [
+ "linux"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_with_poll_request_response_with_metadata_and_payload_unsecure_test",
@@ -6926,6 +10272,9 @@
]
},
{
+ "ci_platforms": [
+ "linux"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_with_poll_request_response_with_payload_unsecure_test",
@@ -6934,6 +10283,9 @@
]
},
{
+ "ci_platforms": [
+ "linux"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_with_poll_request_response_with_trailing_metadata_and_payload_unsecure_test",
@@ -6942,6 +10294,9 @@
]
},
{
+ "ci_platforms": [
+ "linux"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_with_poll_request_with_compressed_payload_unsecure_test",
@@ -6950,6 +10305,9 @@
]
},
{
+ "ci_platforms": [
+ "linux"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_with_poll_request_with_flags_unsecure_test",
@@ -6958,6 +10316,9 @@
]
},
{
+ "ci_platforms": [
+ "linux"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_with_poll_request_with_large_metadata_unsecure_test",
@@ -6966,6 +10327,9 @@
]
},
{
+ "ci_platforms": [
+ "linux"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_with_poll_request_with_payload_unsecure_test",
@@ -6974,6 +10338,9 @@
]
},
{
+ "ci_platforms": [
+ "linux"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_with_poll_server_finishes_request_unsecure_test",
@@ -6982,6 +10349,9 @@
]
},
{
+ "ci_platforms": [
+ "linux"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_with_poll_simple_delayed_request_unsecure_test",
@@ -6990,6 +10360,9 @@
]
},
{
+ "ci_platforms": [
+ "linux"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_with_poll_simple_request_unsecure_test",
@@ -6998,6 +10371,9 @@
]
},
{
+ "ci_platforms": [
+ "linux"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_with_poll_simple_request_with_high_initial_sequence_number_unsecure_test",
@@ -7006,6 +10382,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_with_proxy_bad_hostname_unsecure_test",
@@ -7017,6 +10398,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_with_proxy_cancel_after_accept_unsecure_test",
@@ -7028,6 +10414,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_with_proxy_cancel_after_accept_and_writes_closed_unsecure_test",
@@ -7039,6 +10430,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_with_proxy_cancel_after_invoke_unsecure_test",
@@ -7050,6 +10446,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_with_proxy_cancel_before_invoke_unsecure_test",
@@ -7061,6 +10462,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_with_proxy_cancel_in_a_vacuum_unsecure_test",
@@ -7072,6 +10478,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_with_proxy_census_simple_request_unsecure_test",
@@ -7083,6 +10494,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_with_proxy_default_host_unsecure_test",
@@ -7094,6 +10510,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_with_proxy_disappearing_server_unsecure_test",
@@ -7105,6 +10526,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_with_proxy_early_server_shutdown_finishes_inflight_calls_unsecure_test",
@@ -7116,6 +10542,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_with_proxy_early_server_shutdown_finishes_tags_unsecure_test",
@@ -7127,6 +10558,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_with_proxy_empty_batch_unsecure_test",
@@ -7138,6 +10574,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_with_proxy_graceful_server_shutdown_unsecure_test",
@@ -7149,6 +10590,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_with_proxy_invoke_large_request_unsecure_test",
@@ -7160,6 +10606,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_with_proxy_max_message_length_unsecure_test",
@@ -7171,6 +10622,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_with_proxy_no_op_unsecure_test",
@@ -7182,6 +10638,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_with_proxy_ping_pong_streaming_unsecure_test",
@@ -7193,6 +10654,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_with_proxy_registered_call_unsecure_test",
@@ -7204,6 +10670,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_with_proxy_request_response_with_binary_metadata_and_payload_unsecure_test",
@@ -7215,6 +10686,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_with_proxy_request_response_with_metadata_and_payload_unsecure_test",
@@ -7226,6 +10702,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_with_proxy_request_response_with_payload_unsecure_test",
@@ -7237,6 +10718,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_with_proxy_request_response_with_trailing_metadata_and_payload_unsecure_test",
@@ -7248,6 +10734,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_with_proxy_request_with_large_metadata_unsecure_test",
@@ -7259,6 +10750,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_with_proxy_request_with_payload_unsecure_test",
@@ -7270,6 +10766,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_with_proxy_server_finishes_request_unsecure_test",
@@ -7281,6 +10782,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_with_proxy_simple_delayed_request_unsecure_test",
@@ -7292,6 +10798,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_with_proxy_simple_request_unsecure_test",
@@ -7303,6 +10814,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_with_proxy_simple_request_with_high_initial_sequence_number_unsecure_test",
@@ -7314,6 +10830,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_socket_pair_bad_hostname_unsecure_test",
@@ -7325,6 +10846,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_socket_pair_cancel_after_accept_unsecure_test",
@@ -7336,6 +10862,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_socket_pair_cancel_after_accept_and_writes_closed_unsecure_test",
@@ -7347,6 +10878,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_socket_pair_cancel_after_invoke_unsecure_test",
@@ -7358,6 +10894,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_socket_pair_cancel_before_invoke_unsecure_test",
@@ -7369,6 +10910,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_socket_pair_cancel_in_a_vacuum_unsecure_test",
@@ -7380,6 +10926,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_socket_pair_census_simple_request_unsecure_test",
@@ -7391,6 +10942,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_socket_pair_early_server_shutdown_finishes_inflight_calls_unsecure_test",
@@ -7402,6 +10958,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_socket_pair_early_server_shutdown_finishes_tags_unsecure_test",
@@ -7413,6 +10974,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_socket_pair_empty_batch_unsecure_test",
@@ -7424,6 +10990,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_socket_pair_graceful_server_shutdown_unsecure_test",
@@ -7435,6 +11006,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_socket_pair_invoke_large_request_unsecure_test",
@@ -7446,6 +11022,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_socket_pair_max_concurrent_streams_unsecure_test",
@@ -7457,6 +11038,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_socket_pair_max_message_length_unsecure_test",
@@ -7468,6 +11054,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_socket_pair_no_op_unsecure_test",
@@ -7479,6 +11070,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_socket_pair_ping_pong_streaming_unsecure_test",
@@ -7490,6 +11086,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_socket_pair_registered_call_unsecure_test",
@@ -7501,6 +11102,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_socket_pair_request_response_with_binary_metadata_and_payload_unsecure_test",
@@ -7512,6 +11118,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_socket_pair_request_response_with_metadata_and_payload_unsecure_test",
@@ -7523,6 +11134,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_socket_pair_request_response_with_payload_unsecure_test",
@@ -7534,6 +11150,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_socket_pair_request_response_with_trailing_metadata_and_payload_unsecure_test",
@@ -7545,6 +11166,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_socket_pair_request_with_compressed_payload_unsecure_test",
@@ -7556,6 +11182,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_socket_pair_request_with_flags_unsecure_test",
@@ -7567,6 +11198,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_socket_pair_request_with_large_metadata_unsecure_test",
@@ -7578,6 +11214,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_socket_pair_request_with_payload_unsecure_test",
@@ -7589,6 +11230,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_socket_pair_server_finishes_request_unsecure_test",
@@ -7600,6 +11246,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_socket_pair_simple_request_unsecure_test",
@@ -7611,6 +11262,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_socket_pair_simple_request_with_high_initial_sequence_number_unsecure_test",
@@ -7622,6 +11278,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_socket_pair_one_byte_at_a_time_bad_hostname_unsecure_test",
@@ -7633,6 +11294,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_socket_pair_one_byte_at_a_time_cancel_after_accept_unsecure_test",
@@ -7644,6 +11310,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",
@@ -7655,6 +11326,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_socket_pair_one_byte_at_a_time_cancel_after_invoke_unsecure_test",
@@ -7666,6 +11342,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_socket_pair_one_byte_at_a_time_cancel_before_invoke_unsecure_test",
@@ -7677,6 +11358,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",
@@ -7688,6 +11374,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_socket_pair_one_byte_at_a_time_census_simple_request_unsecure_test",
@@ -7699,6 +11390,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",
@@ -7710,6 +11406,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",
@@ -7721,6 +11422,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_socket_pair_one_byte_at_a_time_empty_batch_unsecure_test",
@@ -7732,6 +11438,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_socket_pair_one_byte_at_a_time_graceful_server_shutdown_unsecure_test",
@@ -7743,6 +11454,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_socket_pair_one_byte_at_a_time_invoke_large_request_unsecure_test",
@@ -7754,6 +11470,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_socket_pair_one_byte_at_a_time_max_concurrent_streams_unsecure_test",
@@ -7765,6 +11486,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_socket_pair_one_byte_at_a_time_max_message_length_unsecure_test",
@@ -7776,6 +11502,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_socket_pair_one_byte_at_a_time_no_op_unsecure_test",
@@ -7787,6 +11518,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_socket_pair_one_byte_at_a_time_ping_pong_streaming_unsecure_test",
@@ -7798,6 +11534,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_socket_pair_one_byte_at_a_time_registered_call_unsecure_test",
@@ -7809,6 +11550,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",
@@ -7820,6 +11566,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",
@@ -7831,6 +11582,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",
@@ -7842,6 +11598,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",
@@ -7853,6 +11614,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",
@@ -7864,6 +11630,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_socket_pair_one_byte_at_a_time_request_with_flags_unsecure_test",
@@ -7875,6 +11646,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",
@@ -7886,6 +11662,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_socket_pair_one_byte_at_a_time_request_with_payload_unsecure_test",
@@ -7897,6 +11678,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_socket_pair_one_byte_at_a_time_server_finishes_request_unsecure_test",
@@ -7908,6 +11694,11 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_socket_pair_one_byte_at_a_time_simple_request_unsecure_test",
@@ -7919,6 +11710,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",
@@ -7930,6 +11726,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_socket_pair_with_grpc_trace_bad_hostname_unsecure_test",
@@ -7941,6 +11743,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_socket_pair_with_grpc_trace_cancel_after_accept_unsecure_test",
@@ -7952,6 +11760,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",
@@ -7963,6 +11777,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_socket_pair_with_grpc_trace_cancel_after_invoke_unsecure_test",
@@ -7974,6 +11794,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_socket_pair_with_grpc_trace_cancel_before_invoke_unsecure_test",
@@ -7985,6 +11811,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_socket_pair_with_grpc_trace_cancel_in_a_vacuum_unsecure_test",
@@ -7996,6 +11828,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_socket_pair_with_grpc_trace_census_simple_request_unsecure_test",
@@ -8007,6 +11845,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",
@@ -8018,6 +11862,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",
@@ -8029,6 +11879,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_socket_pair_with_grpc_trace_empty_batch_unsecure_test",
@@ -8040,6 +11896,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_socket_pair_with_grpc_trace_graceful_server_shutdown_unsecure_test",
@@ -8051,6 +11913,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_socket_pair_with_grpc_trace_invoke_large_request_unsecure_test",
@@ -8062,6 +11930,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_socket_pair_with_grpc_trace_max_concurrent_streams_unsecure_test",
@@ -8073,6 +11947,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_socket_pair_with_grpc_trace_max_message_length_unsecure_test",
@@ -8084,6 +11964,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_socket_pair_with_grpc_trace_no_op_unsecure_test",
@@ -8095,6 +11981,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_socket_pair_with_grpc_trace_ping_pong_streaming_unsecure_test",
@@ -8106,6 +11998,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_socket_pair_with_grpc_trace_registered_call_unsecure_test",
@@ -8117,6 +12015,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",
@@ -8128,6 +12032,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",
@@ -8139,6 +12049,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_socket_pair_with_grpc_trace_request_response_with_payload_unsecure_test",
@@ -8150,6 +12066,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",
@@ -8161,6 +12083,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_socket_pair_with_grpc_trace_request_with_compressed_payload_unsecure_test",
@@ -8172,6 +12100,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_socket_pair_with_grpc_trace_request_with_flags_unsecure_test",
@@ -8183,6 +12117,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_socket_pair_with_grpc_trace_request_with_large_metadata_unsecure_test",
@@ -8194,6 +12134,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_socket_pair_with_grpc_trace_request_with_payload_unsecure_test",
@@ -8205,6 +12151,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_socket_pair_with_grpc_trace_server_finishes_request_unsecure_test",
@@ -8216,6 +12168,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "chttp2_socket_pair_with_grpc_trace_simple_request_unsecure_test",
@@ -8227,6 +12185,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",
@@ -8238,6 +12202,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "connection_prefix_bad_client_test",
@@ -8249,6 +12219,12 @@
]
},
{
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"flaky": false,
"language": "c",
"name": "initial_settings_frame_bad_client_test",
@@ -8260,4 +12236,3 @@
]
}
]
-
diff --git a/vsprojects/grpc/grpc.vcxproj b/vsprojects/grpc/grpc.vcxproj
index 005a1b411c..067f341b95 100644
--- a/vsprojects/grpc/grpc.vcxproj
+++ b/vsprojects/grpc/grpc.vcxproj
@@ -229,10 +229,6 @@
<ClInclude Include="..\..\include\grpc\census.h" />
</ItemGroup>
<ItemGroup>
- <ClInclude Include="..\..\src\core\httpcli\format_request.h" />
- <ClInclude Include="..\..\src\core\httpcli\httpcli.h" />
- <ClInclude Include="..\..\src\core\httpcli\httpcli_security_connector.h" />
- <ClInclude Include="..\..\src\core\httpcli\parser.h" />
<ClInclude Include="..\..\src\core\security\auth_filters.h" />
<ClInclude Include="..\..\src\core\security\base64.h" />
<ClInclude Include="..\..\src\core\security\credentials.h" />
@@ -272,6 +268,9 @@
<ClInclude Include="..\..\src\core\client_config\uri_parser.h" />
<ClInclude Include="..\..\src\core\compression\message_compress.h" />
<ClInclude Include="..\..\src\core\debug\trace.h" />
+ <ClInclude Include="..\..\src\core\httpcli\format_request.h" />
+ <ClInclude Include="..\..\src\core\httpcli\httpcli.h" />
+ <ClInclude Include="..\..\src\core\httpcli\parser.h" />
<ClInclude Include="..\..\src\core\iomgr\alarm.h" />
<ClInclude Include="..\..\src\core\iomgr\alarm_heap.h" />
<ClInclude Include="..\..\src\core\iomgr\alarm_internal.h" />
@@ -346,14 +345,8 @@
<ClInclude Include="..\..\src\core\census\rpc_stat_id.h" />
</ItemGroup>
<ItemGroup>
- <ClCompile Include="..\..\src\core\httpcli\format_request.c">
- </ClCompile>
- <ClCompile Include="..\..\src\core\httpcli\httpcli.c">
- </ClCompile>
<ClCompile Include="..\..\src\core\httpcli\httpcli_security_connector.c">
</ClCompile>
- <ClCompile Include="..\..\src\core\httpcli\parser.c">
- </ClCompile>
<ClCompile Include="..\..\src\core\security\base64.c">
</ClCompile>
<ClCompile Include="..\..\src\core\security\client_auth_filter.c">
@@ -446,6 +439,12 @@
</ClCompile>
<ClCompile Include="..\..\src\core\debug\trace.c">
</ClCompile>
+ <ClCompile Include="..\..\src\core\httpcli\format_request.c">
+ </ClCompile>
+ <ClCompile Include="..\..\src\core\httpcli\httpcli.c">
+ </ClCompile>
+ <ClCompile Include="..\..\src\core\httpcli\parser.c">
+ </ClCompile>
<ClCompile Include="..\..\src\core\iomgr\alarm.c">
</ClCompile>
<ClCompile Include="..\..\src\core\iomgr\alarm_heap.c">
diff --git a/vsprojects/grpc/grpc.vcxproj.filters b/vsprojects/grpc/grpc.vcxproj.filters
index ab03d96a1b..fcc40c3a4b 100644
--- a/vsprojects/grpc/grpc.vcxproj.filters
+++ b/vsprojects/grpc/grpc.vcxproj.filters
@@ -1,18 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
- <ClCompile Include="..\..\src\core\httpcli\format_request.c">
- <Filter>src\core\httpcli</Filter>
- </ClCompile>
- <ClCompile Include="..\..\src\core\httpcli\httpcli.c">
- <Filter>src\core\httpcli</Filter>
- </ClCompile>
<ClCompile Include="..\..\src\core\httpcli\httpcli_security_connector.c">
<Filter>src\core\httpcli</Filter>
</ClCompile>
- <ClCompile Include="..\..\src\core\httpcli\parser.c">
- <Filter>src\core\httpcli</Filter>
- </ClCompile>
<ClCompile Include="..\..\src\core\security\base64.c">
<Filter>src\core\security</Filter>
</ClCompile>
@@ -151,6 +142,15 @@
<ClCompile Include="..\..\src\core\debug\trace.c">
<Filter>src\core\debug</Filter>
</ClCompile>
+ <ClCompile Include="..\..\src\core\httpcli\format_request.c">
+ <Filter>src\core\httpcli</Filter>
+ </ClCompile>
+ <ClCompile Include="..\..\src\core\httpcli\httpcli.c">
+ <Filter>src\core\httpcli</Filter>
+ </ClCompile>
+ <ClCompile Include="..\..\src\core\httpcli\parser.c">
+ <Filter>src\core\httpcli</Filter>
+ </ClCompile>
<ClCompile Include="..\..\src\core\iomgr\alarm.c">
<Filter>src\core\iomgr</Filter>
</ClCompile>
@@ -440,18 +440,6 @@
</ClInclude>
</ItemGroup>
<ItemGroup>
- <ClInclude Include="..\..\src\core\httpcli\format_request.h">
- <Filter>src\core\httpcli</Filter>
- </ClInclude>
- <ClInclude Include="..\..\src\core\httpcli\httpcli.h">
- <Filter>src\core\httpcli</Filter>
- </ClInclude>
- <ClInclude Include="..\..\src\core\httpcli\httpcli_security_connector.h">
- <Filter>src\core\httpcli</Filter>
- </ClInclude>
- <ClInclude Include="..\..\src\core\httpcli\parser.h">
- <Filter>src\core\httpcli</Filter>
- </ClInclude>
<ClInclude Include="..\..\src\core\security\auth_filters.h">
<Filter>src\core\security</Filter>
</ClInclude>
@@ -569,6 +557,15 @@
<ClInclude Include="..\..\src\core\debug\trace.h">
<Filter>src\core\debug</Filter>
</ClInclude>
+ <ClInclude Include="..\..\src\core\httpcli\format_request.h">
+ <Filter>src\core\httpcli</Filter>
+ </ClInclude>
+ <ClInclude Include="..\..\src\core\httpcli\httpcli.h">
+ <Filter>src\core\httpcli</Filter>
+ </ClInclude>
+ <ClInclude Include="..\..\src\core\httpcli\parser.h">
+ <Filter>src\core\httpcli</Filter>
+ </ClInclude>
<ClInclude Include="..\..\src\core\iomgr\alarm.h">
<Filter>src\core\iomgr</Filter>
</ClInclude>
diff --git a/vsprojects/grpc_unsecure/grpc_unsecure.vcxproj b/vsprojects/grpc_unsecure/grpc_unsecure.vcxproj
index a6113fd971..b95658b70c 100644
--- a/vsprojects/grpc_unsecure/grpc_unsecure.vcxproj
+++ b/vsprojects/grpc_unsecure/grpc_unsecure.vcxproj
@@ -251,6 +251,9 @@
<ClInclude Include="..\..\src\core\client_config\uri_parser.h" />
<ClInclude Include="..\..\src\core\compression\message_compress.h" />
<ClInclude Include="..\..\src\core\debug\trace.h" />
+ <ClInclude Include="..\..\src\core\httpcli\format_request.h" />
+ <ClInclude Include="..\..\src\core\httpcli\httpcli.h" />
+ <ClInclude Include="..\..\src\core\httpcli\parser.h" />
<ClInclude Include="..\..\src\core\iomgr\alarm.h" />
<ClInclude Include="..\..\src\core\iomgr\alarm_heap.h" />
<ClInclude Include="..\..\src\core\iomgr\alarm_internal.h" />
@@ -379,6 +382,12 @@
</ClCompile>
<ClCompile Include="..\..\src\core\debug\trace.c">
</ClCompile>
+ <ClCompile Include="..\..\src\core\httpcli\format_request.c">
+ </ClCompile>
+ <ClCompile Include="..\..\src\core\httpcli\httpcli.c">
+ </ClCompile>
+ <ClCompile Include="..\..\src\core\httpcli\parser.c">
+ </ClCompile>
<ClCompile Include="..\..\src\core\iomgr\alarm.c">
</ClCompile>
<ClCompile Include="..\..\src\core\iomgr\alarm_heap.c">
diff --git a/vsprojects/grpc_unsecure/grpc_unsecure.vcxproj.filters b/vsprojects/grpc_unsecure/grpc_unsecure.vcxproj.filters
index 0b86f87412..05e9d139e0 100644
--- a/vsprojects/grpc_unsecure/grpc_unsecure.vcxproj.filters
+++ b/vsprojects/grpc_unsecure/grpc_unsecure.vcxproj.filters
@@ -82,6 +82,15 @@
<ClCompile Include="..\..\src\core\debug\trace.c">
<Filter>src\core\debug</Filter>
</ClCompile>
+ <ClCompile Include="..\..\src\core\httpcli\format_request.c">
+ <Filter>src\core\httpcli</Filter>
+ </ClCompile>
+ <ClCompile Include="..\..\src\core\httpcli\httpcli.c">
+ <Filter>src\core\httpcli</Filter>
+ </ClCompile>
+ <ClCompile Include="..\..\src\core\httpcli\parser.c">
+ <Filter>src\core\httpcli</Filter>
+ </ClCompile>
<ClCompile Include="..\..\src\core\iomgr\alarm.c">
<Filter>src\core\iomgr</Filter>
</ClCompile>
@@ -446,6 +455,15 @@
<ClInclude Include="..\..\src\core\debug\trace.h">
<Filter>src\core\debug</Filter>
</ClInclude>
+ <ClInclude Include="..\..\src\core\httpcli\format_request.h">
+ <Filter>src\core\httpcli</Filter>
+ </ClInclude>
+ <ClInclude Include="..\..\src\core\httpcli\httpcli.h">
+ <Filter>src\core\httpcli</Filter>
+ </ClInclude>
+ <ClInclude Include="..\..\src\core\httpcli\parser.h">
+ <Filter>src\core\httpcli</Filter>
+ </ClInclude>
<ClInclude Include="..\..\src\core\iomgr\alarm.h">
<Filter>src\core\iomgr</Filter>
</ClInclude>
@@ -701,6 +719,9 @@
<Filter Include="src\core\debug">
<UniqueIdentifier>{6d8d5774-7291-554d-fafa-583463cd3fd9}</UniqueIdentifier>
</Filter>
+ <Filter Include="src\core\httpcli">
+ <UniqueIdentifier>{1ba3a245-47e7-89b5-b0c9-aca758bd0277}</UniqueIdentifier>
+ </Filter>
<Filter Include="src\core\iomgr">
<UniqueIdentifier>{a9df8b24-ecea-ff6d-8999-d8fa54cd70bf}</UniqueIdentifier>
</Filter>