--- /dev/null
+bazel-bin
+bazel-grpc
+bazel-out
+bazel-testlogs
+bins
+libs
+objs
+third_party/abseil-cpp
+third_party/googleapis
+third_party/protoc-gen-validate
+third_party/udpa
---
-Checks: 'modernize-use-nullptr,google-build-namespaces,google-build-explicit-make-pair,readability-function-size,performance-*,bugprone-*'
-WarningsAsErrors: 'modernize-use-nullptr,google-build-namespaces,google-build-explicit-make-pair,readability-function-size,performance-*,bugprone-*'
+# Disable abseil-no-namespace: https://bugs.llvm.org/show_bug.cgi?id=47947
+Checks: '-*,
+ abseil-*,
+ -abseil-no-namespace,
+ bugprone-*,
+ -bugprone-integer-division,
+ -bugprone-narrowing-conversions,
+ -bugprone-too-small-loop-variable,
+ performance-*,
+ -performance-unnecessary-copy-initialization,
+ -performance-unnecessary-value-param,
+ google-*,
+ -google-build-using-namespace,
+ -google-explicit-constructor,
+ -google-readability-casting,
+ -google-readability-todo,
+ -google-runtime-int,
+ -google-runtime-references,
+ misc-definitions-in-headers,
+ misc-static-assert,
+ misc-unconventional-assign-operator,
+ misc-uniqueptr-reset-release,
+ misc-unused-alias-decls,
+ misc-unused-using-decls,
+ modernize-make-unique,
+ -modernize-redundant-void-arg,
+ modernize-replace-auto-ptr,
+ modernize-shrink-to-fit,
+ modernize-use-bool-literals,
+ modernize-use-nullptr,
+ modernize-use-override,
+ readability-container-size-empty,
+ readability-deleted-default,
+ readability-function-size,
+ -readability-inconsistent-declaration-parameter-name,
+ readability-redundant-control-flow,
+ readability-redundant-smartptr-get,
+ readability-string-compare'
+WarningsAsErrors: '*'
CheckOptions:
- key: readability-function-size.StatementThreshold
value: '450'
+ - key: modernize-make-unique.MakeSmartPtrFunction
+ value: 'absl::make_unique'
+ - key: modernize-make-unique.MakeSmartPtrFunctionHeader
+ value: 'absl/memory/memory.h'
+ - key: google-readability-braces-around-statements.ShortStatementLines
+ value: 1
+++ /dev/null
--Wall
--Wc++-compat
--I.
--Igens
--Iinclude
--Isrc/core/ext/upb-generated
--Ithird_party/abseil-cpp
--Ithird_party/address_sorting/include
--Ithird_party/benchmark/include
--Ithird_party/boringssl-with-bazel/src/include
--Ithird_party/cares
--Ithird_party/cares/cares
--Ithird_party/googletest
--Ithird_party/googletest/googlemock/include
--Ithird_party/googletest/googletest/include
--Ithird_party/googletest/include
--Ithird_party/protobuf/src
--Ithird_party/re2
--Ithird_party/upb
--Ithird_party/zlib
exit 1
fi
-echo "Change a repo manager to $0"
+echo "Change repo manager to $1"
BASE_PATH=$(dirname $0)
*.xcuserstate
*.DS_Store
+# Swift Package Manager files
+Package.resolved
+
# Objective-C generated files
*.pbobjc.*
*.pbrpc.*
# pyenv config
.python-version
+
+# clang JSON compilation database file
+compile_commands.json
[submodule "third_party/protobuf"]
path = third_party/protobuf
url = https://github.com/google/protobuf.git
-[submodule "third_party/gflags"]
- path = third_party/gflags
- url = https://github.com/gflags/gflags.git
[submodule "third_party/googletest"]
path = third_party/googletest
url = https://github.com/google/googletest.git
- pod --version
# Recent pods aren't found if we don't explicitly update Cocoapods' repo.
- pod repo update
- - brew install gflags
install:
- pushd $TEST_PATH
- pod install
python_config_settings()
# This should be updated along with build_handwritten.yaml
-g_stands_for = "geeky"
+g_stands_for = "gauntlet"
-core_version = "13.0.0"
+core_version = "14.0.0"
-version = "1.33.2"
+version = "1.34.0"
GPR_PUBLIC_HDRS = [
"include/grpc/support/alloc.h",
"include/grpcpp/security/auth_metadata_processor.h",
"include/grpcpp/security/credentials.h",
"include/grpcpp/security/server_credentials.h",
+ "include/grpcpp/security/tls_certificate_provider.h",
"include/grpcpp/security/tls_credentials_options.h",
"include/grpcpp/server.h",
"include/grpcpp/server_builder.h",
"//conditions:default": [
"grpc_lb_policy_cds",
"grpc_lb_policy_eds",
- "grpc_lb_policy_eds_drop",
+ "grpc_lb_policy_xds_cluster_impl",
"grpc_lb_policy_xds_cluster_manager",
"grpc_resolver_xds",
"grpc_xds_credentials",
"src/cpp/common/secure_auth_context.cc",
"src/cpp/common/secure_channel_arguments.cc",
"src/cpp/common/secure_create_auth_context.cc",
+ "src/cpp/common/tls_certificate_provider.cc",
"src/cpp/common/tls_credentials_options.cc",
"src/cpp/common/tls_credentials_options_util.cc",
"src/cpp/server/insecure_server_credentials.cc",
],
language = "c++",
public_hdrs = GRPCXX_PUBLIC_HDRS,
+ select_deps = {
+ "grpc_no_xds": [],
+ "//conditions:default": [
+ "grpc++_xds_credentials",
+ ],
+ },
standalone = True,
deps = [
"gpr",
)
grpc_cc_library(
+ name = "grpc++_xds_credentials",
+ srcs = [
+ "src/cpp/client/xds_credentials.cc",
+ ],
+ hdrs = [
+ "src/cpp/client/secure_credentials.h",
+ ],
+ language = "c++",
+ deps = [
+ "grpc++_base",
+ ],
+)
+
+grpc_cc_library(
name = "grpc++_unsecure",
srcs = [
"src/cpp/client/insecure_credentials.cc",
"src/core/lib/gpr/tmpfile_windows.cc",
"src/core/lib/gpr/wrap_memcpy.cc",
"src/core/lib/gprpp/arena.cc",
+ "src/core/lib/gprpp/examine_stack.cc",
"src/core/lib/gprpp/fork.cc",
"src/core/lib/gprpp/global_config_env.cc",
"src/core/lib/gprpp/host_port.cc",
"src/core/lib/gprpp/mpscq.cc",
+ "src/core/lib/gprpp/stat_posix.cc",
+ "src/core/lib/gprpp/stat_windows.cc",
"src/core/lib/gprpp/thd_posix.cc",
"src/core/lib/gprpp/thd_windows.cc",
"src/core/lib/profiling/basic_timers.cc",
"src/core/lib/gpr/tls_gcc.h",
"src/core/lib/gpr/tls_msvc.h",
"src/core/lib/gpr/tls_pthread.h",
+ "src/core/lib/gpr/tls_stdcpp.h",
"src/core/lib/gpr/tmpfile.h",
"src/core/lib/gpr/useful.h",
"src/core/lib/gprpp/arena.h",
"src/core/lib/gprpp/atomic.h",
+ "src/core/lib/gprpp/examine_stack.h",
"src/core/lib/gprpp/fork.h",
"src/core/lib/gprpp/global_config.h",
"src/core/lib/gprpp/global_config_custom.h",
"src/core/lib/gprpp/map.h",
"src/core/lib/gprpp/memory.h",
"src/core/lib/gprpp/mpscq.h",
+ "src/core/lib/gprpp/stat.h",
"src/core/lib/gprpp/sync.h",
"src/core/lib/gprpp/thd.h",
"src/core/lib/profiling/timers.h",
external_deps = [
"absl/base",
"absl/memory",
+ "absl/status",
"absl/strings",
"absl/strings:str_format",
"absl/synchronization",
"absl/time:time",
+ "absl/types:optional",
],
language = "c++",
public_hdrs = GPR_PUBLIC_HDRS,
)
grpc_cc_library(
- name = "grpc_xds_api_header",
+ name = "grpc_xds_credentials",
+ srcs = [
+ "src/core/ext/xds/certificate_provider_registry.cc",
+ "src/core/ext/xds/certificate_provider_store.cc",
+ "src/core/ext/xds/xds_certificate_provider.cc",
+ "src/core/lib/security/credentials/xds/xds_credentials.cc",
+ ],
hdrs = [
- "src/core/ext/xds/xds_api.h",
- "src/core/ext/xds/xds_bootstrap.h",
- "src/core/ext/xds/xds_client_stats.h",
+ "src/core/ext/xds/certificate_provider_factory.h",
+ "src/core/ext/xds/certificate_provider_registry.h",
+ "src/core/ext/xds/certificate_provider_store.h",
+ "src/core/ext/xds/xds_certificate_provider.h",
+ "src/core/lib/security/credentials/xds/xds_credentials.h",
],
external_deps = [
- "upb_lib",
- "re2",
+ "absl/functional:bind_front",
],
language = "c++",
deps = [
- "grpc_base",
+ "grpc_secure",
],
)
"src/core/ext/xds/xds_client_stats.cc",
],
hdrs = [
+ "src/core/ext/xds/xds_api.h",
+ "src/core/ext/xds/xds_bootstrap.h",
"src/core/ext/xds/xds_channel_args.h",
"src/core/ext/xds/xds_client.h",
+ "src/core/ext/xds/xds_client_stats.h",
+ ],
+ external_deps = [
+ "upb_lib",
+ "upb_textformat_lib",
+ "re2",
],
language = "c++",
deps = [
"envoy_ads_upb",
+ "envoy_ads_upbdefs",
"grpc_base",
"grpc_client_channel",
+ "grpc_file_watcher_certificate_provider_factory",
"grpc_google_mesh_ca_certificate_provider_factory",
- "grpc_secure",
- "grpc_xds_api_header",
+ "grpc_transport_chttp2_client_secure",
+ "grpc_xds_credentials",
+ ],
+)
+
+grpc_cc_library(
+ name = "grpc_file_watcher_certificate_provider_factory",
+ srcs = [
+ "src/core/ext/xds/file_watcher_certificate_provider_factory.cc",
+ ],
+ hdrs = [
+ "src/core/ext/xds/file_watcher_certificate_provider_factory.h",
+ ],
+ language = "c++",
+ deps = [
+ "grpc_base",
+ "grpc_xds_credentials",
],
)
language = "c++",
deps = [
"grpc_base",
- "grpc_secure",
+ "grpc_xds_credentials",
],
)
)
grpc_cc_library(
+ name = "grpc_lb_xds_common",
+ hdrs = [
+ "src/core/ext/filters/client_channel/lb_policy/xds/xds.h",
+ ],
+ language = "c++",
+ deps = [
+ "grpc_base",
+ "grpc_client_channel",
+ "grpc_xds_client",
+ ],
+)
+
+grpc_cc_library(
name = "grpc_lb_policy_eds",
srcs = [
"src/core/ext/filters/client_channel/lb_policy/xds/eds.cc",
],
- hdrs = [
- "src/core/ext/filters/client_channel/lb_policy/xds/xds.h",
- ],
external_deps = [
"absl/strings",
],
"grpc_base",
"grpc_client_channel",
"grpc_lb_address_filtering",
+ "grpc_lb_xds_common",
"grpc_xds_client",
],
)
grpc_cc_library(
- name = "grpc_lb_policy_eds_drop",
+ name = "grpc_lb_policy_xds_cluster_impl",
srcs = [
- "src/core/ext/filters/client_channel/lb_policy/xds/eds_drop.cc",
+ "src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc",
],
external_deps = [
"absl/strings",
deps = [
"grpc_base",
"grpc_client_channel",
+ "grpc_lb_xds_common",
"grpc_xds_client",
],
)
"grpc_base",
"grpc_client_channel",
"grpc_resolver_xds_header",
- "grpc_xds_api_header",
],
)
grpc_cc_library(
name = "grpc_secure",
srcs = [
- "src/core/ext/xds/certificate_provider_registry.cc",
"src/core/lib/http/httpcli_security_connector.cc",
"src/core/lib/security/context/security_context.cc",
"src/core/lib/security/credentials/alts/alts_credentials.cc",
"src/core/lib/security/credentials/composite/composite_credentials.cc",
"src/core/lib/security/credentials/credentials.cc",
"src/core/lib/security/credentials/credentials_metadata.cc",
+ "src/core/lib/security/credentials/external/aws_request_signer.cc",
+ "src/core/lib/security/credentials/external/external_account_credentials.cc",
+ "src/core/lib/security/credentials/external/file_external_account_credentials.cc",
+ "src/core/lib/security/credentials/external/url_external_account_credentials.cc",
"src/core/lib/security/credentials/fake/fake_credentials.cc",
"src/core/lib/security/credentials/google_default/credentials_generic.cc",
"src/core/lib/security/credentials/google_default/google_default_credentials.cc",
"src/core/lib/security/credentials/iam/iam_credentials.cc",
+ "src/core/lib/security/credentials/insecure/insecure_credentials.cc",
"src/core/lib/security/credentials/jwt/json_token.cc",
"src/core/lib/security/credentials/jwt/jwt_credentials.cc",
"src/core/lib/security/credentials/jwt/jwt_verifier.cc",
"src/core/lib/security/credentials/plugin/plugin_credentials.cc",
"src/core/lib/security/credentials/ssl/ssl_credentials.cc",
"src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc",
+ "src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc",
"src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc",
"src/core/lib/security/credentials/tls/tls_credentials.cc",
"src/core/lib/security/security_connector/alts/alts_security_connector.cc",
"src/core/lib/security/security_connector/fake/fake_security_connector.cc",
+ "src/core/lib/security/security_connector/insecure/insecure_security_connector.cc",
"src/core/lib/security/security_connector/load_system_roots_fallback.cc",
"src/core/lib/security/security_connector/load_system_roots_linux.cc",
"src/core/lib/security/security_connector/local/local_security_connector.cc",
],
hdrs = [
"src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.h",
- "src/core/ext/xds/certificate_provider_factory.h",
- "src/core/ext/xds/certificate_provider_registry.h",
- "src/core/ext/xds/certificate_provider_store.h",
"src/core/ext/xds/xds_channel_args.h",
- "src/core/lib/security/certificate_provider.h",
"src/core/lib/security/context/security_context.h",
"src/core/lib/security/credentials/alts/alts_credentials.h",
"src/core/lib/security/credentials/composite/composite_credentials.h",
"src/core/lib/security/credentials/credentials.h",
+ "src/core/lib/security/credentials/external/aws_request_signer.h",
+ "src/core/lib/security/credentials/external/external_account_credentials.h",
+ "src/core/lib/security/credentials/external/file_external_account_credentials.h",
+ "src/core/lib/security/credentials/external/url_external_account_credentials.h",
"src/core/lib/security/credentials/fake/fake_credentials.h",
"src/core/lib/security/credentials/google_default/google_default_credentials.h",
"src/core/lib/security/credentials/iam/iam_credentials.h",
"src/core/lib/security/credentials/plugin/plugin_credentials.h",
"src/core/lib/security/credentials/ssl/ssl_credentials.h",
"src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h",
+ "src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h",
"src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h",
"src/core/lib/security/credentials/tls/tls_credentials.h",
"src/core/lib/security/security_connector/alts/alts_security_connector.h",
"src/core/lib/security/security_connector/fake/fake_security_connector.h",
+ "src/core/lib/security/security_connector/insecure/insecure_security_connector.h",
"src/core/lib/security/security_connector/load_system_roots.h",
"src/core/lib/security/security_connector/load_system_roots_linux.h",
"src/core/lib/security/security_connector/local/local_security_connector.h",
)
grpc_cc_library(
- name = "grpc_xds_credentials",
- srcs = [
- "src/core/lib/security/credentials/xds/xds_credentials.cc",
- ],
- hdrs = [
- "src/core/lib/security/credentials/xds/xds_credentials.h",
- ],
- deps = [
- "grpc_secure",
- ],
-)
-
-grpc_cc_library(
name = "grpc_mock_cel",
hdrs = [
"src/core/lib/security/authorization/mock_cel/activation.h",
"src/core/lib/security/authorization/mock_cel/cel_value.h",
"src/core/lib/security/authorization/mock_cel/evaluator_core.h",
"src/core/lib/security/authorization/mock_cel/flat_expr_builder.h",
- "src/core/lib/security/authorization/mock_cel/statusor.h",
],
language = "c++",
deps = [
language = "c++",
public_hdrs = [
"include/grpcpp/ext/channelz_service_plugin.h",
- "include/grpcpp/ext/channelz_service_plugin_impl.h",
],
deps = [
":grpc++",
],
external_deps = [
"upb_lib",
+ "upb_lib_descriptor",
],
language = "c++",
deps = [
)
grpc_cc_library(
+ name = "envoy_ads_upbdefs",
+ srcs = [
+ "src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.c",
+ "src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.c",
+ "src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c",
+ "src/core/ext/upbdefs-generated/envoy/config/cluster/v3/filter.upbdefs.c",
+ "src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.c",
+ "src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.c",
+ "src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.c",
+ "src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/load_report.upbdefs.c",
+ "src/core/ext/upbdefs-generated/envoy/config/listener/v3/api_listener.upbdefs.c",
+ "src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.c",
+ "src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.c",
+ "src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.c",
+ "src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.c",
+ "src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c",
+ "src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.c",
+ "src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.c",
+ "src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c",
+ "src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.c",
+ "src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c",
+ "src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.c",
+ "src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c",
+ "src/core/ext/upbdefs-generated/envoy/service/cluster/v3/cds.upbdefs.c",
+ "src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.c",
+ "src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.c",
+ "src/core/ext/upbdefs-generated/envoy/service/endpoint/v3/eds.upbdefs.c",
+ "src/core/ext/upbdefs-generated/envoy/service/listener/v3/lds.upbdefs.c",
+ "src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.c",
+ "src/core/ext/upbdefs-generated/envoy/service/route/v3/rds.upbdefs.c",
+ "src/core/ext/upbdefs-generated/envoy/service/route/v3/srds.upbdefs.c",
+ ],
+ hdrs = [
+ "src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.h",
+ "src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.h",
+ "src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.h",
+ "src/core/ext/upbdefs-generated/envoy/config/cluster/v3/filter.upbdefs.h",
+ "src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.h",
+ "src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.h",
+ "src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.h",
+ "src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/load_report.upbdefs.h",
+ "src/core/ext/upbdefs-generated/envoy/config/listener/v3/api_listener.upbdefs.h",
+ "src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.h",
+ "src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.h",
+ "src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.h",
+ "src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.h",
+ "src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.h",
+ "src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.h",
+ "src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.h",
+ "src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.h",
+ "src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.h",
+ "src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.h",
+ "src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.h",
+ "src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.h",
+ "src/core/ext/upbdefs-generated/envoy/service/cluster/v3/cds.upbdefs.h",
+ "src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.h",
+ "src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.h",
+ "src/core/ext/upbdefs-generated/envoy/service/endpoint/v3/eds.upbdefs.h",
+ "src/core/ext/upbdefs-generated/envoy/service/listener/v3/lds.upbdefs.h",
+ "src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.h",
+ "src/core/ext/upbdefs-generated/envoy/service/route/v3/rds.upbdefs.h",
+ "src/core/ext/upbdefs-generated/envoy/service/route/v3/srds.upbdefs.h",
+ ],
+ external_deps = [
+ "upb_lib",
+ "upb_lib_descriptor",
+ "upb_textformat_lib",
+ ],
+ language = "c++",
+ deps = [
+ ":envoy_ads_upb",
+ ":envoy_annotations_upbdefs",
+ ":envoy_core_upbdefs",
+ ":envoy_type_upbdefs",
+ ":google_api_upbdefs",
+ ":proto_gen_validate_upbdefs",
+ ":udpa_annotations_upbdefs",
+ ":udpa_core_upbdefs",
+ ],
+)
+
+grpc_cc_library(
name = "envoy_annotations_upb",
srcs = [
"src/core/ext/upb-generated/envoy/annotations/deprecation.upb.c",
],
external_deps = [
"upb_lib",
+ "upb_lib_descriptor",
],
language = "c++",
deps = [
)
grpc_cc_library(
+ name = "envoy_annotations_upbdefs",
+ srcs = [
+ "src/core/ext/upbdefs-generated/envoy/annotations/deprecation.upbdefs.c",
+ "src/core/ext/upbdefs-generated/envoy/annotations/resource.upbdefs.c",
+ ],
+ hdrs = [
+ "src/core/ext/upbdefs-generated/envoy/annotations/deprecation.upbdefs.h",
+ "src/core/ext/upbdefs-generated/envoy/annotations/resource.upbdefs.h",
+ ],
+ external_deps = [
+ "upb_lib",
+ "upb_lib_descriptor",
+ "upb_textformat_lib",
+ ],
+ language = "c++",
+ deps = [
+ ":envoy_annotations_upb",
+ ":google_api_upbdefs",
+ ],
+)
+
+grpc_cc_library(
name = "envoy_core_upb",
srcs = [
"src/core/ext/upb-generated/envoy/config/core/v3/address.upb.c",
],
external_deps = [
"upb_lib",
+ "upb_lib_descriptor",
],
language = "c++",
deps = [
)
grpc_cc_library(
+ name = "envoy_core_upbdefs",
+ srcs = [
+ "src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.c",
+ "src/core/ext/upbdefs-generated/envoy/config/core/v3/backoff.upbdefs.c",
+ "src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.c",
+ "src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.c",
+ "src/core/ext/upbdefs-generated/envoy/config/core/v3/event_service_config.upbdefs.c",
+ "src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.c",
+ "src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_service.upbdefs.c",
+ "src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.c",
+ "src/core/ext/upbdefs-generated/envoy/config/core/v3/http_uri.upbdefs.c",
+ "src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c",
+ "src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.c",
+ "src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.c",
+ "src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.c",
+ ],
+ hdrs = [
+ "src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.h",
+ "src/core/ext/upbdefs-generated/envoy/config/core/v3/backoff.upbdefs.h",
+ "src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.h",
+ "src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.h",
+ "src/core/ext/upbdefs-generated/envoy/config/core/v3/event_service_config.upbdefs.h",
+ "src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.h",
+ "src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_service.upbdefs.h",
+ "src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.h",
+ "src/core/ext/upbdefs-generated/envoy/config/core/v3/http_uri.upbdefs.h",
+ "src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.h",
+ "src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.h",
+ "src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.h",
+ "src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.h",
+ ],
+ external_deps = [
+ "upb_lib",
+ "upb_lib_descriptor",
+ "upb_textformat_lib",
+ ],
+ language = "c++",
+ deps = [
+ ":envoy_core_upb",
+ ":envoy_type_upbdefs",
+ ":google_api_upbdefs",
+ ":proto_gen_validate_upbdefs",
+ ],
+)
+
+grpc_cc_library(
name = "envoy_type_upb",
srcs = [
"src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.c",
],
external_deps = [
"upb_lib",
+ "upb_lib_descriptor",
],
language = "c++",
deps = [
)
grpc_cc_library(
+ name = "envoy_type_upbdefs",
+ srcs = [
+ "src/core/ext/upbdefs-generated/envoy/type/matcher/v3/metadata.upbdefs.c",
+ "src/core/ext/upbdefs-generated/envoy/type/matcher/v3/number.upbdefs.c",
+ "src/core/ext/upbdefs-generated/envoy/type/matcher/v3/path.upbdefs.c",
+ "src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.c",
+ "src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.c",
+ "src/core/ext/upbdefs-generated/envoy/type/matcher/v3/value.upbdefs.c",
+ "src/core/ext/upbdefs-generated/envoy/type/metadata/v3/metadata.upbdefs.c",
+ "src/core/ext/upbdefs-generated/envoy/type/tracing/v3/custom_tag.upbdefs.c",
+ "src/core/ext/upbdefs-generated/envoy/type/v3/http.upbdefs.c",
+ "src/core/ext/upbdefs-generated/envoy/type/v3/percent.upbdefs.c",
+ "src/core/ext/upbdefs-generated/envoy/type/v3/range.upbdefs.c",
+ "src/core/ext/upbdefs-generated/envoy/type/v3/semantic_version.upbdefs.c",
+ ],
+ hdrs = [
+ "src/core/ext/upbdefs-generated/envoy/type/matcher/v3/metadata.upbdefs.h",
+ "src/core/ext/upbdefs-generated/envoy/type/matcher/v3/number.upbdefs.h",
+ "src/core/ext/upbdefs-generated/envoy/type/matcher/v3/path.upbdefs.h",
+ "src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.h",
+ "src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.h",
+ "src/core/ext/upbdefs-generated/envoy/type/matcher/v3/value.upbdefs.h",
+ "src/core/ext/upbdefs-generated/envoy/type/metadata/v3/metadata.upbdefs.h",
+ "src/core/ext/upbdefs-generated/envoy/type/tracing/v3/custom_tag.upbdefs.h",
+ "src/core/ext/upbdefs-generated/envoy/type/v3/http.upbdefs.h",
+ "src/core/ext/upbdefs-generated/envoy/type/v3/percent.upbdefs.h",
+ "src/core/ext/upbdefs-generated/envoy/type/v3/range.upbdefs.h",
+ "src/core/ext/upbdefs-generated/envoy/type/v3/semantic_version.upbdefs.h",
+ ],
+ external_deps = [
+ "upb_lib",
+ "upb_lib_descriptor",
+ "upb_textformat_lib",
+ ],
+ language = "c++",
+ deps = [
+ ":envoy_type_upb",
+ ":google_api_upbdefs",
+ ":proto_gen_validate_upbdefs",
+ ],
+)
+
+grpc_cc_library(
name = "proto_gen_validate_upb",
srcs = [
"src/core/ext/upb-generated/validate/validate.upb.c",
],
external_deps = [
"upb_lib",
+ "upb_lib_descriptor",
],
language = "c++",
deps = [
],
)
+grpc_cc_library(
+ name = "proto_gen_validate_upbdefs",
+ srcs = [
+ "src/core/ext/upbdefs-generated/validate/validate.upbdefs.c",
+ ],
+ hdrs = [
+ "src/core/ext/upbdefs-generated/validate/validate.upbdefs.h",
+ ],
+ external_deps = [
+ "upb_lib",
+ "upb_lib_descriptor",
+ "upb_textformat_lib",
+ ],
+ language = "c++",
+ deps = [
+ ":google_api_upbdefs",
+ ":proto_gen_validate_upb",
+ ],
+)
+
# Once upb code-gen issue is resolved, replace udpa_orca_upb with this.
# grpc_upb_proto_library(
# name = "udpa_orca_upb",
],
external_deps = [
"upb_lib",
+ "upb_lib_descriptor",
],
language = "c++",
deps = [
],
external_deps = [
"upb_lib",
+ "upb_lib_descriptor",
],
language = "c++",
deps = [
)
grpc_cc_library(
+ name = "udpa_annotations_upbdefs",
+ srcs = [
+ "src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.c",
+ "src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.c",
+ "src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.c",
+ "src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.c",
+ "src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.c",
+ ],
+ hdrs = [
+ "src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.h",
+ "src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.h",
+ "src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.h",
+ "src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.h",
+ "src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.h",
+ ],
+ external_deps = [
+ "upb_lib",
+ "upb_lib_descriptor",
+ "upb_textformat_lib",
+ ],
+ language = "c++",
+ deps = [
+ ":google_api_upbdefs",
+ ":udpa_annotations_upb",
+ ],
+)
+
+grpc_cc_library(
name = "udpa_core_upb",
srcs = [
"src/core/ext/upb-generated/udpa/core/v1/authority.upb.c",
],
external_deps = [
"upb_lib",
+ "upb_lib_descriptor",
],
language = "c++",
deps = [
],
)
+grpc_cc_library(
+ name = "udpa_core_upbdefs",
+ srcs = [
+ "src/core/ext/upbdefs-generated/udpa/core/v1/authority.upbdefs.c",
+ "src/core/ext/upbdefs-generated/udpa/core/v1/collection_entry.upbdefs.c",
+ "src/core/ext/upbdefs-generated/udpa/core/v1/context_params.upbdefs.c",
+ "src/core/ext/upbdefs-generated/udpa/core/v1/resource.upbdefs.c",
+ "src/core/ext/upbdefs-generated/udpa/core/v1/resource_locator.upbdefs.c",
+ "src/core/ext/upbdefs-generated/udpa/core/v1/resource_name.upbdefs.c",
+ ],
+ hdrs = [
+ "src/core/ext/upbdefs-generated/udpa/core/v1/authority.upbdefs.h",
+ "src/core/ext/upbdefs-generated/udpa/core/v1/collection_entry.upbdefs.h",
+ "src/core/ext/upbdefs-generated/udpa/core/v1/context_params.upbdefs.h",
+ "src/core/ext/upbdefs-generated/udpa/core/v1/resource.upbdefs.h",
+ "src/core/ext/upbdefs-generated/udpa/core/v1/resource_locator.upbdefs.h",
+ "src/core/ext/upbdefs-generated/udpa/core/v1/resource_name.upbdefs.h",
+ ],
+ external_deps = [
+ "upb_lib",
+ "upb_lib_descriptor",
+ "upb_textformat_lib",
+ ],
+ language = "c++",
+ deps = [
+ ":google_api_upbdefs",
+ ":proto_gen_validate_upbdefs",
+ ":udpa_annotations_upbdefs",
+ ":udpa_core_upb",
+ ],
+)
+
# Once upb code-gen issue is resolved, replace grpc_health_upb with this.
# grpc_upb_proto_library(
# name = "grpc_health_upb",
],
external_deps = [
"upb_lib",
+ "upb_lib_descriptor",
],
language = "c++",
)
"src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.c",
"src/core/ext/upb-generated/google/api/http.upb.c",
"src/core/ext/upb-generated/google/protobuf/any.upb.c",
- "src/core/ext/upb-generated/google/protobuf/descriptor.upb.c",
"src/core/ext/upb-generated/google/protobuf/duration.upb.c",
"src/core/ext/upb-generated/google/protobuf/empty.upb.c",
"src/core/ext/upb-generated/google/protobuf/struct.upb.c",
"src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.h",
"src/core/ext/upb-generated/google/api/http.upb.h",
"src/core/ext/upb-generated/google/protobuf/any.upb.h",
- "src/core/ext/upb-generated/google/protobuf/descriptor.upb.h",
"src/core/ext/upb-generated/google/protobuf/duration.upb.h",
"src/core/ext/upb-generated/google/protobuf/empty.upb.h",
"src/core/ext/upb-generated/google/protobuf/struct.upb.h",
],
external_deps = [
"upb_lib",
+ "upb_lib_descriptor",
+ ],
+ language = "c++",
+)
+
+grpc_cc_library(
+ name = "google_api_upbdefs",
+ srcs = [
+ "src/core/ext/upbdefs-generated/google/api/annotations.upbdefs.c",
+ "src/core/ext/upbdefs-generated/google/api/http.upbdefs.c",
+ "src/core/ext/upbdefs-generated/google/protobuf/any.upbdefs.c",
+ "src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.c",
+ "src/core/ext/upbdefs-generated/google/protobuf/duration.upbdefs.c",
+ "src/core/ext/upbdefs-generated/google/protobuf/empty.upbdefs.c",
+ "src/core/ext/upbdefs-generated/google/protobuf/struct.upbdefs.c",
+ "src/core/ext/upbdefs-generated/google/protobuf/timestamp.upbdefs.c",
+ "src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.c",
+ "src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.c",
+ ],
+ hdrs = [
+ "src/core/ext/upbdefs-generated/google/api/annotations.upbdefs.h",
+ "src/core/ext/upbdefs-generated/google/api/http.upbdefs.h",
+ "src/core/ext/upbdefs-generated/google/protobuf/any.upbdefs.h",
+ "src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.h",
+ "src/core/ext/upbdefs-generated/google/protobuf/duration.upbdefs.h",
+ "src/core/ext/upbdefs-generated/google/protobuf/empty.upbdefs.h",
+ "src/core/ext/upbdefs-generated/google/protobuf/struct.upbdefs.h",
+ "src/core/ext/upbdefs-generated/google/protobuf/timestamp.upbdefs.h",
+ "src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.h",
+ "src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.h",
+ ],
+ external_deps = [
+ "upb_lib",
+ "upb_lib_descriptor",
+ "upb_textformat_lib",
],
language = "c++",
+ deps = [
+ ":google_api_upb",
+ ],
)
# Once upb code-gen issue is resolved, replace grpc_lb_upb with this.
],
external_deps = [
"upb_lib",
+ "upb_lib_descriptor",
],
language = "c++",
deps = [
],
external_deps = [
"upb_lib",
+ "upb_lib_descriptor",
],
language = "c++",
)
"src/core/lib/gpr/tls_msvc.h",
"src/core/lib/gpr/tls_pthread.cc",
"src/core/lib/gpr/tls_pthread.h",
+ "src/core/lib/gpr/tls_stdcpp.h",
"src/core/lib/gpr/tmpfile.h",
"src/core/lib/gpr/tmpfile_msys.cc",
"src/core/lib/gpr/tmpfile_posix.cc",
"src/core/lib/gprpp/arena.cc",
"src/core/lib/gprpp/arena.h",
"src/core/lib/gprpp/atomic.h",
+ "src/core/lib/gprpp/examine_stack.cc",
+ "src/core/lib/gprpp/examine_stack.h",
"src/core/lib/gprpp/fork.cc",
"src/core/lib/gprpp/fork.h",
"src/core/lib/gprpp/global_config.h",
"src/core/lib/gprpp/memory.h",
"src/core/lib/gprpp/mpscq.cc",
"src/core/lib/gprpp/mpscq.h",
+ "src/core/lib/gprpp/stat.h",
+ "src/core/lib/gprpp/stat_posix.cc",
+ "src/core/lib/gprpp/stat_windows.cc",
"src/core/lib/gprpp/sync.h",
"src/core/lib/gprpp/thd.h",
"src/core/lib/gprpp/thd_posix.cc",
"src/core/lib/profiling/timers.h",
]
deps = [
+ ":absl/types:optional",
":absl/time:time",
":absl/synchronization:synchronization",
":absl/strings:strings",
":absl/strings:str_format",
+ ":absl/status:status",
":absl/memory:memory",
":absl/base:base",
]
"src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc",
"src/core/ext/filters/client_channel/lb_policy/xds/cds.cc",
"src/core/ext/filters/client_channel/lb_policy/xds/eds.cc",
- "src/core/ext/filters/client_channel/lb_policy/xds/eds_drop.cc",
"src/core/ext/filters/client_channel/lb_policy/xds/xds.h",
+ "src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc",
"src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc",
"src/core/ext/filters/client_channel/lb_policy_factory.h",
"src/core/ext/filters/client_channel/lb_policy_registry.cc",
"src/core/ext/upb-generated/google/api/http.upb.h",
"src/core/ext/upb-generated/google/protobuf/any.upb.c",
"src/core/ext/upb-generated/google/protobuf/any.upb.h",
- "src/core/ext/upb-generated/google/protobuf/descriptor.upb.c",
- "src/core/ext/upb-generated/google/protobuf/descriptor.upb.h",
"src/core/ext/upb-generated/google/protobuf/duration.upb.c",
"src/core/ext/upb-generated/google/protobuf/duration.upb.h",
"src/core/ext/upb-generated/google/protobuf/empty.upb.c",
"src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.h",
"src/core/ext/upb-generated/validate/validate.upb.c",
"src/core/ext/upb-generated/validate/validate.upb.h",
+ "src/core/ext/upbdefs-generated/envoy/annotations/deprecation.upbdefs.c",
+ "src/core/ext/upbdefs-generated/envoy/annotations/deprecation.upbdefs.h",
+ "src/core/ext/upbdefs-generated/envoy/annotations/resource.upbdefs.c",
+ "src/core/ext/upbdefs-generated/envoy/annotations/resource.upbdefs.h",
+ "src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.c",
+ "src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.h",
+ "src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.c",
+ "src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.h",
+ "src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c",
+ "src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.h",
+ "src/core/ext/upbdefs-generated/envoy/config/cluster/v3/filter.upbdefs.c",
+ "src/core/ext/upbdefs-generated/envoy/config/cluster/v3/filter.upbdefs.h",
+ "src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.c",
+ "src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.h",
+ "src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.c",
+ "src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.h",
+ "src/core/ext/upbdefs-generated/envoy/config/core/v3/backoff.upbdefs.c",
+ "src/core/ext/upbdefs-generated/envoy/config/core/v3/backoff.upbdefs.h",
+ "src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.c",
+ "src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.h",
+ "src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.c",
+ "src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.h",
+ "src/core/ext/upbdefs-generated/envoy/config/core/v3/event_service_config.upbdefs.c",
+ "src/core/ext/upbdefs-generated/envoy/config/core/v3/event_service_config.upbdefs.h",
+ "src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.c",
+ "src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.h",
+ "src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_service.upbdefs.c",
+ "src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_service.upbdefs.h",
+ "src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.c",
+ "src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.h",
+ "src/core/ext/upbdefs-generated/envoy/config/core/v3/http_uri.upbdefs.c",
+ "src/core/ext/upbdefs-generated/envoy/config/core/v3/http_uri.upbdefs.h",
+ "src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c",
+ "src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.h",
+ "src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.c",
+ "src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.h",
+ "src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.c",
+ "src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.h",
+ "src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.c",
+ "src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.h",
+ "src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.c",
+ "src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.h",
+ "src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.c",
+ "src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.h",
+ "src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/load_report.upbdefs.c",
+ "src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/load_report.upbdefs.h",
+ "src/core/ext/upbdefs-generated/envoy/config/listener/v3/api_listener.upbdefs.c",
+ "src/core/ext/upbdefs-generated/envoy/config/listener/v3/api_listener.upbdefs.h",
+ "src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.c",
+ "src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.h",
+ "src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.c",
+ "src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.h",
+ "src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.c",
+ "src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.h",
+ "src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.c",
+ "src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.h",
+ "src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c",
+ "src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.h",
+ "src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.c",
+ "src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.h",
+ "src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.c",
+ "src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.h",
+ "src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c",
+ "src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.h",
+ "src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.c",
+ "src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.h",
+ "src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c",
+ "src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.h",
+ "src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.c",
+ "src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.h",
+ "src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c",
+ "src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.h",
+ "src/core/ext/upbdefs-generated/envoy/service/cluster/v3/cds.upbdefs.c",
+ "src/core/ext/upbdefs-generated/envoy/service/cluster/v3/cds.upbdefs.h",
+ "src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.c",
+ "src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.h",
+ "src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.c",
+ "src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.h",
+ "src/core/ext/upbdefs-generated/envoy/service/endpoint/v3/eds.upbdefs.c",
+ "src/core/ext/upbdefs-generated/envoy/service/endpoint/v3/eds.upbdefs.h",
+ "src/core/ext/upbdefs-generated/envoy/service/listener/v3/lds.upbdefs.c",
+ "src/core/ext/upbdefs-generated/envoy/service/listener/v3/lds.upbdefs.h",
+ "src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.c",
+ "src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.h",
+ "src/core/ext/upbdefs-generated/envoy/service/route/v3/rds.upbdefs.c",
+ "src/core/ext/upbdefs-generated/envoy/service/route/v3/rds.upbdefs.h",
+ "src/core/ext/upbdefs-generated/envoy/service/route/v3/srds.upbdefs.c",
+ "src/core/ext/upbdefs-generated/envoy/service/route/v3/srds.upbdefs.h",
+ "src/core/ext/upbdefs-generated/envoy/type/matcher/v3/metadata.upbdefs.c",
+ "src/core/ext/upbdefs-generated/envoy/type/matcher/v3/metadata.upbdefs.h",
+ "src/core/ext/upbdefs-generated/envoy/type/matcher/v3/number.upbdefs.c",
+ "src/core/ext/upbdefs-generated/envoy/type/matcher/v3/number.upbdefs.h",
+ "src/core/ext/upbdefs-generated/envoy/type/matcher/v3/path.upbdefs.c",
+ "src/core/ext/upbdefs-generated/envoy/type/matcher/v3/path.upbdefs.h",
+ "src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.c",
+ "src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.h",
+ "src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.c",
+ "src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.h",
+ "src/core/ext/upbdefs-generated/envoy/type/matcher/v3/value.upbdefs.c",
+ "src/core/ext/upbdefs-generated/envoy/type/matcher/v3/value.upbdefs.h",
+ "src/core/ext/upbdefs-generated/envoy/type/metadata/v3/metadata.upbdefs.c",
+ "src/core/ext/upbdefs-generated/envoy/type/metadata/v3/metadata.upbdefs.h",
+ "src/core/ext/upbdefs-generated/envoy/type/tracing/v3/custom_tag.upbdefs.c",
+ "src/core/ext/upbdefs-generated/envoy/type/tracing/v3/custom_tag.upbdefs.h",
+ "src/core/ext/upbdefs-generated/envoy/type/v3/http.upbdefs.c",
+ "src/core/ext/upbdefs-generated/envoy/type/v3/http.upbdefs.h",
+ "src/core/ext/upbdefs-generated/envoy/type/v3/percent.upbdefs.c",
+ "src/core/ext/upbdefs-generated/envoy/type/v3/percent.upbdefs.h",
+ "src/core/ext/upbdefs-generated/envoy/type/v3/range.upbdefs.c",
+ "src/core/ext/upbdefs-generated/envoy/type/v3/range.upbdefs.h",
+ "src/core/ext/upbdefs-generated/envoy/type/v3/semantic_version.upbdefs.c",
+ "src/core/ext/upbdefs-generated/envoy/type/v3/semantic_version.upbdefs.h",
+ "src/core/ext/upbdefs-generated/google/api/annotations.upbdefs.c",
+ "src/core/ext/upbdefs-generated/google/api/annotations.upbdefs.h",
+ "src/core/ext/upbdefs-generated/google/api/http.upbdefs.c",
+ "src/core/ext/upbdefs-generated/google/api/http.upbdefs.h",
+ "src/core/ext/upbdefs-generated/google/protobuf/any.upbdefs.c",
+ "src/core/ext/upbdefs-generated/google/protobuf/any.upbdefs.h",
+ "src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.c",
+ "src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.h",
+ "src/core/ext/upbdefs-generated/google/protobuf/duration.upbdefs.c",
+ "src/core/ext/upbdefs-generated/google/protobuf/duration.upbdefs.h",
+ "src/core/ext/upbdefs-generated/google/protobuf/empty.upbdefs.c",
+ "src/core/ext/upbdefs-generated/google/protobuf/empty.upbdefs.h",
+ "src/core/ext/upbdefs-generated/google/protobuf/struct.upbdefs.c",
+ "src/core/ext/upbdefs-generated/google/protobuf/struct.upbdefs.h",
+ "src/core/ext/upbdefs-generated/google/protobuf/timestamp.upbdefs.c",
+ "src/core/ext/upbdefs-generated/google/protobuf/timestamp.upbdefs.h",
+ "src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.c",
+ "src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.h",
+ "src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.c",
+ "src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.h",
+ "src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.c",
+ "src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.h",
+ "src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.c",
+ "src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.h",
+ "src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.c",
+ "src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.h",
+ "src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.c",
+ "src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.h",
+ "src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.c",
+ "src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.h",
+ "src/core/ext/upbdefs-generated/udpa/core/v1/authority.upbdefs.c",
+ "src/core/ext/upbdefs-generated/udpa/core/v1/authority.upbdefs.h",
+ "src/core/ext/upbdefs-generated/udpa/core/v1/collection_entry.upbdefs.c",
+ "src/core/ext/upbdefs-generated/udpa/core/v1/collection_entry.upbdefs.h",
+ "src/core/ext/upbdefs-generated/udpa/core/v1/context_params.upbdefs.c",
+ "src/core/ext/upbdefs-generated/udpa/core/v1/context_params.upbdefs.h",
+ "src/core/ext/upbdefs-generated/udpa/core/v1/resource.upbdefs.c",
+ "src/core/ext/upbdefs-generated/udpa/core/v1/resource.upbdefs.h",
+ "src/core/ext/upbdefs-generated/udpa/core/v1/resource_locator.upbdefs.c",
+ "src/core/ext/upbdefs-generated/udpa/core/v1/resource_locator.upbdefs.h",
+ "src/core/ext/upbdefs-generated/udpa/core/v1/resource_name.upbdefs.c",
+ "src/core/ext/upbdefs-generated/udpa/core/v1/resource_name.upbdefs.h",
+ "src/core/ext/upbdefs-generated/validate/validate.upbdefs.c",
+ "src/core/ext/upbdefs-generated/validate/validate.upbdefs.h",
"src/core/ext/xds/certificate_provider_factory.h",
"src/core/ext/xds/certificate_provider_registry.cc",
"src/core/ext/xds/certificate_provider_registry.h",
+ "src/core/ext/xds/certificate_provider_store.cc",
"src/core/ext/xds/certificate_provider_store.h",
+ "src/core/ext/xds/file_watcher_certificate_provider_factory.cc",
+ "src/core/ext/xds/file_watcher_certificate_provider_factory.h",
"src/core/ext/xds/google_mesh_ca_certificate_provider_factory.cc",
"src/core/ext/xds/google_mesh_ca_certificate_provider_factory.h",
"src/core/ext/xds/xds_api.cc",
"src/core/ext/xds/xds_api.h",
"src/core/ext/xds/xds_bootstrap.cc",
"src/core/ext/xds/xds_bootstrap.h",
+ "src/core/ext/xds/xds_certificate_provider.cc",
+ "src/core/ext/xds/xds_certificate_provider.h",
"src/core/ext/xds/xds_channel_args.h",
"src/core/ext/xds/xds_client.cc",
"src/core/ext/xds/xds_client.h",
"src/core/lib/security/authorization/mock_cel/cel_value.h",
"src/core/lib/security/authorization/mock_cel/evaluator_core.h",
"src/core/lib/security/authorization/mock_cel/flat_expr_builder.h",
- "src/core/lib/security/authorization/mock_cel/statusor.h",
- "src/core/lib/security/certificate_provider.h",
"src/core/lib/security/context/security_context.cc",
"src/core/lib/security/context/security_context.h",
"src/core/lib/security/credentials/alts/alts_credentials.cc",
"src/core/lib/security/credentials/credentials.cc",
"src/core/lib/security/credentials/credentials.h",
"src/core/lib/security/credentials/credentials_metadata.cc",
+ "src/core/lib/security/credentials/external/aws_request_signer.cc",
+ "src/core/lib/security/credentials/external/aws_request_signer.h",
+ "src/core/lib/security/credentials/external/external_account_credentials.cc",
+ "src/core/lib/security/credentials/external/external_account_credentials.h",
+ "src/core/lib/security/credentials/external/file_external_account_credentials.cc",
+ "src/core/lib/security/credentials/external/file_external_account_credentials.h",
+ "src/core/lib/security/credentials/external/url_external_account_credentials.cc",
+ "src/core/lib/security/credentials/external/url_external_account_credentials.h",
"src/core/lib/security/credentials/fake/fake_credentials.cc",
"src/core/lib/security/credentials/fake/fake_credentials.h",
"src/core/lib/security/credentials/google_default/credentials_generic.cc",
"src/core/lib/security/credentials/google_default/google_default_credentials.h",
"src/core/lib/security/credentials/iam/iam_credentials.cc",
"src/core/lib/security/credentials/iam/iam_credentials.h",
+ "src/core/lib/security/credentials/insecure/insecure_credentials.cc",
"src/core/lib/security/credentials/jwt/json_token.cc",
"src/core/lib/security/credentials/jwt/json_token.h",
"src/core/lib/security/credentials/jwt/jwt_credentials.cc",
"src/core/lib/security/credentials/ssl/ssl_credentials.h",
"src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc",
"src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h",
+ "src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc",
+ "src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h",
"src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc",
"src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h",
"src/core/lib/security/credentials/tls/tls_credentials.cc",
"src/core/lib/security/security_connector/alts/alts_security_connector.h",
"src/core/lib/security/security_connector/fake/fake_security_connector.cc",
"src/core/lib/security/security_connector/fake/fake_security_connector.h",
+ "src/core/lib/security/security_connector/insecure/insecure_security_connector.cc",
+ "src/core/lib/security/security_connector/insecure/insecure_security_connector.h",
"src/core/lib/security/security_connector/load_system_roots.h",
"src/core/lib/security/security_connector/load_system_roots_fallback.cc",
"src/core/lib/security/security_connector/load_system_roots_linux.cc",
":absl/types:optional",
":absl/strings:strings",
":absl/status:status",
+ ":absl/functional:bind_front",
":absl/container:inlined_vector",
":absl/container:flat_hash_set",
"//third_party/cares",
"include/grpcpp/security/auth_metadata_processor.h",
"include/grpcpp/security/credentials.h",
"include/grpcpp/security/server_credentials.h",
+ "include/grpcpp/security/tls_certificate_provider.h",
"include/grpcpp/security/tls_credentials_options.h",
"include/grpcpp/server.h",
"include/grpcpp/server_builder.h",
"src/cpp/client/insecure_credentials.cc",
"src/cpp/client/secure_credentials.cc",
"src/cpp/client/secure_credentials.h",
+ "src/cpp/client/xds_credentials.cc",
"src/cpp/codegen/codegen_init.cc",
"src/cpp/common/alarm.cc",
"src/cpp/common/auth_property_iterator.cc",
"src/cpp/common/secure_auth_context.h",
"src/cpp/common/secure_channel_arguments.cc",
"src/cpp/common/secure_create_auth_context.cc",
+ "src/cpp/common/tls_certificate_provider.cc",
"src/cpp/common/tls_credentials_options.cc",
"src/cpp/common/tls_credentials_options_util.cc",
"src/cpp/common/tls_credentials_options_util.h",
If you are a contributor and plan to build and run tests, install the following as well:
```sh
- $ # libgflags-dev is only required if building with make (deprecated)
- $ [sudo] apt-get install libgflags-dev
$ # clang and LLVM C++ lib is only required for sanitizer builds
$ [sudo] apt-get install clang-5.0 libc++-dev
```
If you plan to build using CMake, follow the instructions from https://cmake.org/download/
-If you are a contributor and plan to build and run tests, install the following as well:
-```sh
- $ # gflags is only required if building with make (deprecated)
- $ brew install gflags
-```
-
*Tip*: when building,
you *may* want to explicitly set the `LIBTOOL` and `LIBTOOLIZE`
environment variables when running `make` to ensure the version
cmake_minimum_required(VERSION 3.5.1)
set(PACKAGE_NAME "grpc")
-set(PACKAGE_VERSION "1.33.2")
-set(gRPC_CORE_VERSION "13.0.0")
-set(gRPC_CORE_SOVERSION "13")
-set(gRPC_CPP_VERSION "1.33.2")
+set(PACKAGE_VERSION "1.34.0")
+set(gRPC_CORE_VERSION "14.0.0")
+set(gRPC_CORE_SOVERSION "14")
+set(gRPC_CPP_VERSION "1.34.0")
set(gRPC_CPP_SOVERSION "1")
-set(gRPC_CSHARP_VERSION "2.33.2")
+set(gRPC_CSHARP_VERSION "2.34.0")
set(gRPC_CSHARP_SOVERSION "2")
set(PACKAGE_STRING "${PACKAGE_NAME} ${PACKAGE_VERSION}")
set(PACKAGE_TARNAME "${PACKAGE_NAME}-${PACKAGE_VERSION}")
set_property(CACHE gRPC_PROTOBUF_PACKAGE_TYPE PROPERTY STRINGS "CONFIG" "MODULE")
if(gRPC_BUILD_TESTS)
- set(gRPC_GFLAGS_PROVIDER "module" CACHE STRING "Provider of gflags library")
- set_property(CACHE gRPC_GFLAGS_PROVIDER PROPERTY STRINGS "module" "package")
-
set(gRPC_BENCHMARK_PROVIDER "module" CACHE STRING "Provider of benchmark library")
set_property(CACHE gRPC_BENCHMARK_PROVIDER PROPERTY STRINGS "module" "package")
else()
- set(gRPC_GFLAGS_PROVIDER "none")
set(gRPC_BENCHMARK_PROVIDER "none")
endif()
absl_bad_variant_access
absl_base
absl_base_internal
+ absl_bind_front
absl_bits
absl_city
absl_civil_time
if(gRPC_BACKWARDS_COMPATIBILITY_MODE)
add_definitions(-DGPR_BACKWARDS_COMPATIBILITY_MODE)
if(_gRPC_PLATFORM_MAC)
- # some C++11 constructs not supported before OS X 10.9
- set(CMAKE_OSX_DEPLOYMENT_TARGET 10.9)
+ # some C++11 constructs not supported before OS X 10.10
+ set(CMAKE_OSX_DEPLOYMENT_TARGET 10.10)
endif()
endif()
include(cmake/address_sorting.cmake)
include(cmake/benchmark.cmake)
include(cmake/cares.cmake)
-include(cmake/gflags.cmake)
include(cmake/protobuf.cmake)
include(cmake/re2.cmake)
include(cmake/ssl.cmake)
src/proto/grpc/testing/xds/v3/percent.proto
)
protobuf_generate_grpc_cpp(
+ src/proto/grpc/testing/xds/v3/protocol.proto
+)
+protobuf_generate_grpc_cpp(
src/proto/grpc/testing/xds/v3/range.proto
)
protobuf_generate_grpc_cpp(
add_dependencies(buildtests_c concurrent_connectivity_test)
add_dependencies(buildtests_c connection_refused_test)
add_dependencies(buildtests_c cpu_test)
- add_dependencies(buildtests_c dns_resolver_connectivity_using_ares_resolver_test)
- add_dependencies(buildtests_c dns_resolver_connectivity_using_native_resolver_test)
+ add_dependencies(buildtests_c dns_resolver_connectivity_using_ares_test)
+ add_dependencies(buildtests_c dns_resolver_connectivity_using_native_test)
add_dependencies(buildtests_c dns_resolver_cooldown_test)
add_dependencies(buildtests_c dns_resolver_test)
if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX)
if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX)
add_dependencies(buildtests_cxx alarm_test)
endif()
- if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX)
+ if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_POSIX)
add_dependencies(buildtests_cxx alts_concurrent_connectivity_test)
endif()
add_dependencies(buildtests_cxx alts_util_test)
add_dependencies(buildtests_cxx async_end2end_test)
add_dependencies(buildtests_cxx auth_property_iterator_test)
add_dependencies(buildtests_cxx authorization_engine_test)
+ add_dependencies(buildtests_cxx aws_request_signer_test)
add_dependencies(buildtests_cxx backoff_test)
add_dependencies(buildtests_cxx bad_streaming_id_bad_client_test)
add_dependencies(buildtests_cxx badreq_bad_client_test)
add_dependencies(buildtests_cxx byte_stream_test)
add_dependencies(buildtests_cxx cancel_ares_query_test)
add_dependencies(buildtests_cxx certificate_provider_registry_test)
+ add_dependencies(buildtests_cxx certificate_provider_store_test)
add_dependencies(buildtests_cxx cfstream_test)
add_dependencies(buildtests_cxx channel_arguments_test)
add_dependencies(buildtests_cxx channel_filter_test)
add_dependencies(buildtests_cxx error_details_test)
add_dependencies(buildtests_cxx evaluate_args_test)
add_dependencies(buildtests_cxx eventmanager_libuv_test)
+ if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX)
+ add_dependencies(buildtests_cxx examine_stack_test)
+ endif()
add_dependencies(buildtests_cxx exception_test)
+ add_dependencies(buildtests_cxx file_watcher_certificate_provider_factory_test)
add_dependencies(buildtests_cxx filter_end2end_test)
add_dependencies(buildtests_cxx flaky_network_test)
add_dependencies(buildtests_cxx generic_end2end_test)
add_dependencies(buildtests_cxx hybrid_end2end_test)
add_dependencies(buildtests_cxx init_test)
add_dependencies(buildtests_cxx initial_settings_frame_bad_client_test)
+ add_dependencies(buildtests_cxx insecure_security_connector_test)
add_dependencies(buildtests_cxx interop_client)
add_dependencies(buildtests_cxx interop_server)
if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX)
add_dependencies(buildtests_cxx settings_timeout_test)
add_dependencies(buildtests_cxx shutdown_test)
add_dependencies(buildtests_cxx simple_request_bad_client_test)
+ if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX)
+ add_dependencies(buildtests_cxx stack_tracer_test)
+ endif()
+ add_dependencies(buildtests_cxx stat_test)
add_dependencies(buildtests_cxx static_metadata_test)
add_dependencies(buildtests_cxx stats_test)
add_dependencies(buildtests_cxx status_metadata_test)
endif()
add_dependencies(buildtests_cxx string_ref_test)
add_dependencies(buildtests_cxx test_cpp_client_credentials_test)
+ add_dependencies(buildtests_cxx test_cpp_server_credentials_test)
add_dependencies(buildtests_cxx test_cpp_util_slice_test)
add_dependencies(buildtests_cxx test_cpp_util_time_test)
add_dependencies(buildtests_cxx thread_manager_test)
add_dependencies(buildtests_cxx writes_per_rpc_test)
endif()
add_dependencies(buildtests_cxx xds_bootstrap_test)
+ add_dependencies(buildtests_cxx xds_certificate_provider_test)
+ add_dependencies(buildtests_cxx xds_credentials_end2end_test)
if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX)
add_dependencies(buildtests_cxx xds_end2end_test)
endif()
src/core/lib/gpr/tmpfile_windows.cc
src/core/lib/gpr/wrap_memcpy.cc
src/core/lib/gprpp/arena.cc
+ src/core/lib/gprpp/examine_stack.cc
src/core/lib/gprpp/fork.cc
src/core/lib/gprpp/global_config_env.cc
src/core/lib/gprpp/host_port.cc
src/core/lib/gprpp/mpscq.cc
+ src/core/lib/gprpp/stat_posix.cc
+ src/core/lib/gprpp/stat_windows.cc
src/core/lib/gprpp/thd_posix.cc
src/core/lib/gprpp/thd_windows.cc
src/core/lib/profiling/basic_timers.cc
)
target_link_libraries(gpr
${_gRPC_ALLTARGETS_LIBRARIES}
+ absl::optional
absl::time
absl::synchronization
absl::strings
absl::str_format
+ absl::status
absl::memory
absl::base
)
src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc
src/core/ext/filters/client_channel/lb_policy/xds/cds.cc
src/core/ext/filters/client_channel/lb_policy/xds/eds.cc
- src/core/ext/filters/client_channel/lb_policy/xds/eds_drop.cc
+ src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc
src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc
src/core/ext/filters/client_channel/lb_policy_registry.cc
src/core/ext/filters/client_channel/local_subchannel_pool.cc
src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.c
src/core/ext/upb-generated/google/api/http.upb.c
src/core/ext/upb-generated/google/protobuf/any.upb.c
- src/core/ext/upb-generated/google/protobuf/descriptor.upb.c
src/core/ext/upb-generated/google/protobuf/duration.upb.c
src/core/ext/upb-generated/google/protobuf/empty.upb.c
src/core/ext/upb-generated/google/protobuf/struct.upb.c
src/core/ext/upb-generated/udpa/core/v1/resource_name.upb.c
src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.c
src/core/ext/upb-generated/validate/validate.upb.c
+ src/core/ext/upbdefs-generated/envoy/annotations/deprecation.upbdefs.c
+ src/core/ext/upbdefs-generated/envoy/annotations/resource.upbdefs.c
+ src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.c
+ src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.c
+ src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c
+ src/core/ext/upbdefs-generated/envoy/config/cluster/v3/filter.upbdefs.c
+ src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.c
+ src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.c
+ src/core/ext/upbdefs-generated/envoy/config/core/v3/backoff.upbdefs.c
+ src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.c
+ src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.c
+ src/core/ext/upbdefs-generated/envoy/config/core/v3/event_service_config.upbdefs.c
+ src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.c
+ src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_service.upbdefs.c
+ src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.c
+ src/core/ext/upbdefs-generated/envoy/config/core/v3/http_uri.upbdefs.c
+ src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c
+ src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.c
+ src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.c
+ src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.c
+ src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.c
+ src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.c
+ src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/load_report.upbdefs.c
+ src/core/ext/upbdefs-generated/envoy/config/listener/v3/api_listener.upbdefs.c
+ src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.c
+ src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.c
+ src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.c
+ src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.c
+ src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c
+ src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.c
+ src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.c
+ src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c
+ src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.c
+ src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c
+ src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.c
+ src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c
+ src/core/ext/upbdefs-generated/envoy/service/cluster/v3/cds.upbdefs.c
+ src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.c
+ src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.c
+ src/core/ext/upbdefs-generated/envoy/service/endpoint/v3/eds.upbdefs.c
+ src/core/ext/upbdefs-generated/envoy/service/listener/v3/lds.upbdefs.c
+ src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.c
+ src/core/ext/upbdefs-generated/envoy/service/route/v3/rds.upbdefs.c
+ src/core/ext/upbdefs-generated/envoy/service/route/v3/srds.upbdefs.c
+ src/core/ext/upbdefs-generated/envoy/type/matcher/v3/metadata.upbdefs.c
+ src/core/ext/upbdefs-generated/envoy/type/matcher/v3/number.upbdefs.c
+ src/core/ext/upbdefs-generated/envoy/type/matcher/v3/path.upbdefs.c
+ src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.c
+ src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.c
+ src/core/ext/upbdefs-generated/envoy/type/matcher/v3/value.upbdefs.c
+ src/core/ext/upbdefs-generated/envoy/type/metadata/v3/metadata.upbdefs.c
+ src/core/ext/upbdefs-generated/envoy/type/tracing/v3/custom_tag.upbdefs.c
+ src/core/ext/upbdefs-generated/envoy/type/v3/http.upbdefs.c
+ src/core/ext/upbdefs-generated/envoy/type/v3/percent.upbdefs.c
+ src/core/ext/upbdefs-generated/envoy/type/v3/range.upbdefs.c
+ src/core/ext/upbdefs-generated/envoy/type/v3/semantic_version.upbdefs.c
+ src/core/ext/upbdefs-generated/google/api/annotations.upbdefs.c
+ src/core/ext/upbdefs-generated/google/api/http.upbdefs.c
+ src/core/ext/upbdefs-generated/google/protobuf/any.upbdefs.c
+ src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.c
+ src/core/ext/upbdefs-generated/google/protobuf/duration.upbdefs.c
+ src/core/ext/upbdefs-generated/google/protobuf/empty.upbdefs.c
+ src/core/ext/upbdefs-generated/google/protobuf/struct.upbdefs.c
+ src/core/ext/upbdefs-generated/google/protobuf/timestamp.upbdefs.c
+ src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.c
+ src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.c
+ src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.c
+ src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.c
+ src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.c
+ src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.c
+ src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.c
+ src/core/ext/upbdefs-generated/udpa/core/v1/authority.upbdefs.c
+ src/core/ext/upbdefs-generated/udpa/core/v1/collection_entry.upbdefs.c
+ src/core/ext/upbdefs-generated/udpa/core/v1/context_params.upbdefs.c
+ src/core/ext/upbdefs-generated/udpa/core/v1/resource.upbdefs.c
+ src/core/ext/upbdefs-generated/udpa/core/v1/resource_locator.upbdefs.c
+ src/core/ext/upbdefs-generated/udpa/core/v1/resource_name.upbdefs.c
+ src/core/ext/upbdefs-generated/validate/validate.upbdefs.c
src/core/ext/xds/certificate_provider_registry.cc
+ src/core/ext/xds/certificate_provider_store.cc
+ src/core/ext/xds/file_watcher_certificate_provider_factory.cc
src/core/ext/xds/google_mesh_ca_certificate_provider_factory.cc
src/core/ext/xds/xds_api.cc
src/core/ext/xds/xds_bootstrap.cc
+ src/core/ext/xds/xds_certificate_provider.cc
src/core/ext/xds/xds_client.cc
src/core/ext/xds/xds_client_stats.cc
src/core/lib/avl/avl.cc
src/core/lib/security/credentials/composite/composite_credentials.cc
src/core/lib/security/credentials/credentials.cc
src/core/lib/security/credentials/credentials_metadata.cc
+ src/core/lib/security/credentials/external/aws_request_signer.cc
+ src/core/lib/security/credentials/external/external_account_credentials.cc
+ src/core/lib/security/credentials/external/file_external_account_credentials.cc
+ src/core/lib/security/credentials/external/url_external_account_credentials.cc
src/core/lib/security/credentials/fake/fake_credentials.cc
src/core/lib/security/credentials/google_default/credentials_generic.cc
src/core/lib/security/credentials/google_default/google_default_credentials.cc
src/core/lib/security/credentials/iam/iam_credentials.cc
+ src/core/lib/security/credentials/insecure/insecure_credentials.cc
src/core/lib/security/credentials/jwt/json_token.cc
src/core/lib/security/credentials/jwt/jwt_credentials.cc
src/core/lib/security/credentials/jwt/jwt_verifier.cc
src/core/lib/security/credentials/plugin/plugin_credentials.cc
src/core/lib/security/credentials/ssl/ssl_credentials.cc
src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc
+ src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc
src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc
src/core/lib/security/credentials/tls/tls_credentials.cc
src/core/lib/security/credentials/xds/xds_credentials.cc
src/core/lib/security/security_connector/alts/alts_security_connector.cc
src/core/lib/security/security_connector/fake/fake_security_connector.cc
+ src/core/lib/security/security_connector/insecure/insecure_security_connector.cc
src/core/lib/security/security_connector/load_system_roots_fallback.cc
src/core/lib/security/security_connector/load_system_roots_linux.cc
src/core/lib/security/security_connector/local/local_security_connector.cc
absl::optional
absl::strings
absl::status
+ absl::bind_front
absl::inlined_vector
absl::flat_hash_set
)
test/core/util/cmdline.cc
test/core/util/debugger_macros.cc
test/core/util/eval_args_mock_endpoint.cc
- test/core/util/examine_stack.cc
test/core/util/fuzzer_util.cc
test/core/util/grpc_profiler.cc
test/core/util/histogram.cc
test/core/util/port_isolated_runtime_environment.cc
test/core/util/port_server_client.cc
test/core/util/reconnect_server.cc
+ test/core/util/resolve_localhost_ip46.cc
test/core/util/slice_splitter.cc
+ test/core/util/stack_tracer.cc
test/core/util/subprocess_posix.cc
test/core/util/subprocess_windows.cc
test/core/util/test_config.cc
test/core/util/cmdline.cc
test/core/util/debugger_macros.cc
test/core/util/eval_args_mock_endpoint.cc
- test/core/util/examine_stack.cc
test/core/util/fuzzer_util.cc
test/core/util/grpc_profiler.cc
test/core/util/histogram.cc
test/core/util/port_isolated_runtime_environment.cc
test/core/util/port_server_client.cc
test/core/util/reconnect_server.cc
+ test/core/util/resolve_localhost_ip46.cc
test/core/util/slice_splitter.cc
+ test/core/util/stack_tracer.cc
test/core/util/subprocess_posix.cc
test/core/util/subprocess_windows.cc
test/core/util/test_config.cc
src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.c
src/core/ext/upb-generated/google/api/http.upb.c
src/core/ext/upb-generated/google/protobuf/any.upb.c
- src/core/ext/upb-generated/google/protobuf/descriptor.upb.c
src/core/ext/upb-generated/google/protobuf/duration.upb.c
src/core/ext/upb-generated/google/protobuf/empty.upb.c
src/core/ext/upb-generated/google/protobuf/struct.upb.c
address_sorting
upb
${_gRPC_BENCHMARK_LIBRARIES}
- ${_gRPC_GFLAGS_LIBRARIES}
)
endif()
src/cpp/client/credentials_cc.cc
src/cpp/client/insecure_credentials.cc
src/cpp/client/secure_credentials.cc
+ src/cpp/client/xds_credentials.cc
src/cpp/codegen/codegen_init.cc
src/cpp/common/alarm.cc
src/cpp/common/auth_property_iterator.cc
src/cpp/common/secure_auth_context.cc
src/cpp/common/secure_channel_arguments.cc
src/cpp/common/secure_create_auth_context.cc
+ src/cpp/common/tls_certificate_provider.cc
src/cpp/common/tls_credentials_options.cc
src/cpp/common/tls_credentials_options_util.cc
src/cpp/common/validate_service_config.cc
include/grpcpp/security/auth_metadata_processor.h
include/grpcpp/security/credentials.h
include/grpcpp/security/server_credentials.h
+ include/grpcpp/security/tls_certificate_provider.h
include/grpcpp/security/tls_credentials_options.h
include/grpcpp/server.h
include/grpcpp/server_builder.h
gpr
address_sorting
upb
- ${_gRPC_GFLAGS_LIBRARIES}
)
foreach(_hdr
${_gRPC_PROTOBUF_LIBRARIES}
${_gRPC_ALLTARGETS_LIBRARIES}
gpr
- ${_gRPC_GFLAGS_LIBRARIES}
+ absl::flags_parse
)
gpr
address_sorting
upb
- ${_gRPC_GFLAGS_LIBRARIES}
+ absl::flags
)
include/grpcpp/security/auth_metadata_processor.h
include/grpcpp/security/credentials.h
include/grpcpp/security/server_credentials.h
+ include/grpcpp/security/tls_certificate_provider.h
include/grpcpp/security/tls_credentials_options.h
include/grpcpp/server.h
include/grpcpp/server_builder.h
foreach(_hdr
include/grpcpp/ext/channelz_service_plugin.h
- include/grpcpp/ext/channelz_service_plugin_impl.h
)
string(REPLACE "include/" "" _path ${_hdr})
get_filename_component(_path ${_path} PATH)
third_party/upb/upb/port.c
third_party/upb/upb/table.c
third_party/upb/upb/upb.c
+ third_party/upb/upb/def.c
+ third_party/upb/upb/reflection.c
+ third_party/upb/upb/text_encode.c
+ src/core/ext/upb-generated/google/protobuf/any.upb.c
+ src/core/ext/upb-generated/google/protobuf/descriptor.upb.c
+ src/core/ext/upb-generated/google/protobuf/duration.upb.c
+ src/core/ext/upb-generated/google/protobuf/empty.upb.c
+ src/core/ext/upb-generated/google/protobuf/struct.upb.c
+ src/core/ext/upb-generated/google/protobuf/timestamp.upb.c
+ src/core/ext/upb-generated/google/protobuf/wrappers.upb.c
+ src/core/ext/upbdefs-generated/google/protobuf/any.upbdefs.c
+ src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.c
+ src/core/ext/upbdefs-generated/google/protobuf/duration.upbdefs.c
+ src/core/ext/upbdefs-generated/google/protobuf/empty.upbdefs.c
+ src/core/ext/upbdefs-generated/google/protobuf/struct.upbdefs.c
+ src/core/ext/upbdefs-generated/google/protobuf/timestamp.upbdefs.c
+ src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.c
)
set_target_properties(upb PROPERTIES
endif()
if(gRPC_BUILD_TESTS)
-add_executable(dns_resolver_connectivity_using_ares_resolver_test
+add_executable(dns_resolver_connectivity_using_ares_test
test/core/client_channel/resolvers/dns_resolver_connectivity_test.cc
)
-target_include_directories(dns_resolver_connectivity_using_ares_resolver_test
+target_include_directories(dns_resolver_connectivity_using_ares_test
PRIVATE
${CMAKE_CURRENT_SOURCE_DIR}
${CMAKE_CURRENT_SOURCE_DIR}/include
${_gRPC_ZLIB_INCLUDE_DIR}
)
-target_link_libraries(dns_resolver_connectivity_using_ares_resolver_test
+target_link_libraries(dns_resolver_connectivity_using_ares_test
${_gRPC_ALLTARGETS_LIBRARIES}
grpc_test_util
grpc
endif()
if(gRPC_BUILD_TESTS)
-add_executable(dns_resolver_connectivity_using_native_resolver_test
+add_executable(dns_resolver_connectivity_using_native_test
test/core/client_channel/resolvers/dns_resolver_connectivity_test.cc
)
-target_include_directories(dns_resolver_connectivity_using_native_resolver_test
+target_include_directories(dns_resolver_connectivity_using_native_test
PRIVATE
${CMAKE_CURRENT_SOURCE_DIR}
${CMAKE_CURRENT_SOURCE_DIR}/include
${_gRPC_ZLIB_INCLUDE_DIR}
)
-target_link_libraries(dns_resolver_connectivity_using_native_resolver_test
+target_link_libraries(dns_resolver_connectivity_using_native_test
${_gRPC_ALLTARGETS_LIBRARIES}
grpc_test_util
grpc
gpr
address_sorting
upb
- ${_gRPC_GFLAGS_LIBRARIES}
)
gpr
address_sorting
upb
- ${_gRPC_GFLAGS_LIBRARIES}
)
gpr
address_sorting
upb
- ${_gRPC_GFLAGS_LIBRARIES}
)
endif()
endif()
if(gRPC_BUILD_TESTS)
-if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX)
+if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_POSIX)
add_executable(alts_concurrent_connectivity_test
${_gRPC_PROTO_GENS_DIR}/test/core/tsi/alts/fake_handshaker/handshaker.pb.cc
gpr
address_sorting
upb
- ${_gRPC_GFLAGS_LIBRARIES}
)
gpr
address_sorting
upb
- ${_gRPC_GFLAGS_LIBRARIES}
)
gpr
address_sorting
upb
- ${_gRPC_GFLAGS_LIBRARIES}
)
gpr
address_sorting
upb
- ${_gRPC_GFLAGS_LIBRARIES}
)
gpr
address_sorting
upb
- ${_gRPC_GFLAGS_LIBRARIES}
+)
+
+
+endif()
+if(gRPC_BUILD_TESTS)
+
+add_executable(aws_request_signer_test
+ test/core/security/aws_request_signer_test.cc
+ third_party/googletest/googletest/src/gtest-all.cc
+ third_party/googletest/googlemock/src/gmock-all.cc
+)
+
+target_include_directories(aws_request_signer_test
+ PRIVATE
+ ${CMAKE_CURRENT_SOURCE_DIR}
+ ${CMAKE_CURRENT_SOURCE_DIR}/include
+ ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+ ${_gRPC_RE2_INCLUDE_DIR}
+ ${_gRPC_SSL_INCLUDE_DIR}
+ ${_gRPC_UPB_GENERATED_DIR}
+ ${_gRPC_UPB_GRPC_GENERATED_DIR}
+ ${_gRPC_UPB_INCLUDE_DIR}
+ ${_gRPC_ZLIB_INCLUDE_DIR}
+ third_party/googletest/googletest/include
+ third_party/googletest/googletest
+ third_party/googletest/googlemock/include
+ third_party/googletest/googlemock
+ ${_gRPC_PROTO_GENS_DIR}
+)
+
+target_link_libraries(aws_request_signer_test
+ ${_gRPC_PROTOBUF_LIBRARIES}
+ ${_gRPC_ALLTARGETS_LIBRARIES}
+ grpc_test_util
+ grpc
+ gpr
+ address_sorting
+ upb
)
gpr
address_sorting
upb
- ${_gRPC_GFLAGS_LIBRARIES}
)
gpr
address_sorting
upb
- ${_gRPC_GFLAGS_LIBRARIES}
)
gpr
address_sorting
upb
- ${_gRPC_GFLAGS_LIBRARIES}
)
gpr
address_sorting
upb
- ${_gRPC_GFLAGS_LIBRARIES}
)
address_sorting
upb
${_gRPC_BENCHMARK_LIBRARIES}
- ${_gRPC_GFLAGS_LIBRARIES}
)
address_sorting
upb
${_gRPC_BENCHMARK_LIBRARIES}
- ${_gRPC_GFLAGS_LIBRARIES}
)
address_sorting
upb
${_gRPC_BENCHMARK_LIBRARIES}
- ${_gRPC_GFLAGS_LIBRARIES}
)
address_sorting
upb
${_gRPC_BENCHMARK_LIBRARIES}
- ${_gRPC_GFLAGS_LIBRARIES}
)
address_sorting
upb
${_gRPC_BENCHMARK_LIBRARIES}
- ${_gRPC_GFLAGS_LIBRARIES}
)
address_sorting
upb
${_gRPC_BENCHMARK_LIBRARIES}
- ${_gRPC_GFLAGS_LIBRARIES}
)
address_sorting
upb
${_gRPC_BENCHMARK_LIBRARIES}
- ${_gRPC_GFLAGS_LIBRARIES}
)
address_sorting
upb
${_gRPC_BENCHMARK_LIBRARIES}
- ${_gRPC_GFLAGS_LIBRARIES}
)
address_sorting
upb
${_gRPC_BENCHMARK_LIBRARIES}
- ${_gRPC_GFLAGS_LIBRARIES}
)
address_sorting
upb
${_gRPC_BENCHMARK_LIBRARIES}
- ${_gRPC_GFLAGS_LIBRARIES}
)
address_sorting
upb
${_gRPC_BENCHMARK_LIBRARIES}
- ${_gRPC_GFLAGS_LIBRARIES}
)
address_sorting
upb
${_gRPC_BENCHMARK_LIBRARIES}
- ${_gRPC_GFLAGS_LIBRARIES}
)
address_sorting
upb
${_gRPC_BENCHMARK_LIBRARIES}
- ${_gRPC_GFLAGS_LIBRARIES}
)
address_sorting
upb
${_gRPC_BENCHMARK_LIBRARIES}
- ${_gRPC_GFLAGS_LIBRARIES}
)
address_sorting
upb
${_gRPC_BENCHMARK_LIBRARIES}
- ${_gRPC_GFLAGS_LIBRARIES}
)
address_sorting
upb
${_gRPC_BENCHMARK_LIBRARIES}
- ${_gRPC_GFLAGS_LIBRARIES}
+ absl::flags
)
address_sorting
upb
${_gRPC_BENCHMARK_LIBRARIES}
- ${_gRPC_GFLAGS_LIBRARIES}
)
address_sorting
upb
${_gRPC_BENCHMARK_LIBRARIES}
- ${_gRPC_GFLAGS_LIBRARIES}
)
address_sorting
upb
${_gRPC_BENCHMARK_LIBRARIES}
- ${_gRPC_GFLAGS_LIBRARIES}
)
address_sorting
upb
${_gRPC_BENCHMARK_LIBRARIES}
- ${_gRPC_GFLAGS_LIBRARIES}
)
address_sorting
upb
${_gRPC_BENCHMARK_LIBRARIES}
- ${_gRPC_GFLAGS_LIBRARIES}
)
gpr
address_sorting
upb
- ${_gRPC_GFLAGS_LIBRARIES}
)
gpr
address_sorting
upb
- ${_gRPC_GFLAGS_LIBRARIES}
)
gpr
address_sorting
upb
- ${_gRPC_GFLAGS_LIBRARIES}
)
gpr
address_sorting
upb
- ${_gRPC_GFLAGS_LIBRARIES}
+)
+
+
+endif()
+if(gRPC_BUILD_TESTS)
+
+add_executable(certificate_provider_store_test
+ test/core/xds/certificate_provider_store_test.cc
+ third_party/googletest/googletest/src/gtest-all.cc
+ third_party/googletest/googlemock/src/gmock-all.cc
+)
+
+target_include_directories(certificate_provider_store_test
+ PRIVATE
+ ${CMAKE_CURRENT_SOURCE_DIR}
+ ${CMAKE_CURRENT_SOURCE_DIR}/include
+ ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+ ${_gRPC_RE2_INCLUDE_DIR}
+ ${_gRPC_SSL_INCLUDE_DIR}
+ ${_gRPC_UPB_GENERATED_DIR}
+ ${_gRPC_UPB_GRPC_GENERATED_DIR}
+ ${_gRPC_UPB_INCLUDE_DIR}
+ ${_gRPC_ZLIB_INCLUDE_DIR}
+ third_party/googletest/googletest/include
+ third_party/googletest/googletest
+ third_party/googletest/googlemock/include
+ third_party/googletest/googlemock
+ ${_gRPC_PROTO_GENS_DIR}
+)
+
+target_link_libraries(certificate_provider_store_test
+ ${_gRPC_PROTOBUF_LIBRARIES}
+ ${_gRPC_ALLTARGETS_LIBRARIES}
+ grpc_test_util
+ grpc
+ gpr
+ address_sorting
+ upb
)
gpr
address_sorting
upb
- ${_gRPC_GFLAGS_LIBRARIES}
)
gpr
address_sorting
upb
- ${_gRPC_GFLAGS_LIBRARIES}
)
gpr
address_sorting
upb
- ${_gRPC_GFLAGS_LIBRARIES}
)
gpr
address_sorting
upb
- ${_gRPC_GFLAGS_LIBRARIES}
)
gpr
address_sorting
upb
- ${_gRPC_GFLAGS_LIBRARIES}
)
gpr
address_sorting
upb
- ${_gRPC_GFLAGS_LIBRARIES}
)
gpr
address_sorting
upb
- ${_gRPC_GFLAGS_LIBRARIES}
)
gpr
address_sorting
upb
- ${_gRPC_GFLAGS_LIBRARIES}
+ absl::flags
)
gpr
address_sorting
upb
- ${_gRPC_GFLAGS_LIBRARIES}
)
gpr
address_sorting
upb
- ${_gRPC_GFLAGS_LIBRARIES}
)
gpr
address_sorting
upb
- ${_gRPC_GFLAGS_LIBRARIES}
)
gpr
address_sorting
upb
- ${_gRPC_GFLAGS_LIBRARIES}
)
gpr
address_sorting
upb
- ${_gRPC_GFLAGS_LIBRARIES}
)
gpr
address_sorting
upb
- ${_gRPC_GFLAGS_LIBRARIES}
)
gpr
address_sorting
upb
- ${_gRPC_GFLAGS_LIBRARIES}
)
gpr
address_sorting
upb
- ${_gRPC_GFLAGS_LIBRARIES}
)
gpr
address_sorting
upb
- ${_gRPC_GFLAGS_LIBRARIES}
)
gpr
address_sorting
upb
- ${_gRPC_GFLAGS_LIBRARIES}
)
gpr
address_sorting
upb
- ${_gRPC_GFLAGS_LIBRARIES}
)
gpr
address_sorting
upb
- ${_gRPC_GFLAGS_LIBRARIES}
)
gpr
address_sorting
upb
- ${_gRPC_GFLAGS_LIBRARIES}
)
gpr
address_sorting
upb
- ${_gRPC_GFLAGS_LIBRARIES}
)
gpr
address_sorting
upb
- ${_gRPC_GFLAGS_LIBRARIES}
)
gpr
address_sorting
upb
- ${_gRPC_GFLAGS_LIBRARIES}
)
gpr
address_sorting
upb
- ${_gRPC_GFLAGS_LIBRARIES}
)
endif()
if(gRPC_BUILD_TESTS)
+if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX)
+
+ add_executable(examine_stack_test
+ test/core/gprpp/examine_stack_test.cc
+ third_party/googletest/googletest/src/gtest-all.cc
+ third_party/googletest/googlemock/src/gmock-all.cc
+ )
+
+ target_include_directories(examine_stack_test
+ PRIVATE
+ ${CMAKE_CURRENT_SOURCE_DIR}
+ ${CMAKE_CURRENT_SOURCE_DIR}/include
+ ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+ ${_gRPC_RE2_INCLUDE_DIR}
+ ${_gRPC_SSL_INCLUDE_DIR}
+ ${_gRPC_UPB_GENERATED_DIR}
+ ${_gRPC_UPB_GRPC_GENERATED_DIR}
+ ${_gRPC_UPB_INCLUDE_DIR}
+ ${_gRPC_ZLIB_INCLUDE_DIR}
+ third_party/googletest/googletest/include
+ third_party/googletest/googletest
+ third_party/googletest/googlemock/include
+ third_party/googletest/googlemock
+ ${_gRPC_PROTO_GENS_DIR}
+ )
+
+ target_link_libraries(examine_stack_test
+ ${_gRPC_PROTOBUF_LIBRARIES}
+ ${_gRPC_ALLTARGETS_LIBRARIES}
+ grpc_test_util
+ grpc
+ gpr
+ address_sorting
+ upb
+ absl::symbolize
+ absl::stacktrace
+ )
+
+
+endif()
+endif()
+if(gRPC_BUILD_TESTS)
add_executable(exception_test
${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/testing/echo.pb.cc
gpr
address_sorting
upb
- ${_gRPC_GFLAGS_LIBRARIES}
+)
+
+
+endif()
+if(gRPC_BUILD_TESTS)
+
+add_executable(file_watcher_certificate_provider_factory_test
+ test/core/xds/file_watcher_certificate_provider_factory_test.cc
+ third_party/googletest/googletest/src/gtest-all.cc
+ third_party/googletest/googlemock/src/gmock-all.cc
+)
+
+target_include_directories(file_watcher_certificate_provider_factory_test
+ PRIVATE
+ ${CMAKE_CURRENT_SOURCE_DIR}
+ ${CMAKE_CURRENT_SOURCE_DIR}/include
+ ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+ ${_gRPC_RE2_INCLUDE_DIR}
+ ${_gRPC_SSL_INCLUDE_DIR}
+ ${_gRPC_UPB_GENERATED_DIR}
+ ${_gRPC_UPB_GRPC_GENERATED_DIR}
+ ${_gRPC_UPB_INCLUDE_DIR}
+ ${_gRPC_ZLIB_INCLUDE_DIR}
+ third_party/googletest/googletest/include
+ third_party/googletest/googletest
+ third_party/googletest/googlemock/include
+ third_party/googletest/googlemock
+ ${_gRPC_PROTO_GENS_DIR}
+)
+
+target_link_libraries(file_watcher_certificate_provider_factory_test
+ ${_gRPC_PROTOBUF_LIBRARIES}
+ ${_gRPC_ALLTARGETS_LIBRARIES}
+ grpc_test_util
+ grpc
+ gpr
+ address_sorting
+ upb
)
gpr
address_sorting
upb
- ${_gRPC_GFLAGS_LIBRARIES}
)
gpr
address_sorting
upb
- ${_gRPC_GFLAGS_LIBRARIES}
)
gpr
address_sorting
upb
- ${_gRPC_GFLAGS_LIBRARIES}
)
gpr
address_sorting
upb
- ${_gRPC_GFLAGS_LIBRARIES}
)
gpr
address_sorting
upb
- ${_gRPC_GFLAGS_LIBRARIES}
)
gpr
address_sorting
upb
- ${_gRPC_GFLAGS_LIBRARIES}
)
gpr
address_sorting
upb
- ${_gRPC_GFLAGS_LIBRARIES}
+ absl::flags
)
gpr
address_sorting
upb
- ${_gRPC_GFLAGS_LIBRARIES}
)
gpr
address_sorting
upb
- ${_gRPC_GFLAGS_LIBRARIES}
)
gpr
address_sorting
upb
- ${_gRPC_GFLAGS_LIBRARIES}
+ absl::flags
)
gpr
address_sorting
upb
- ${_gRPC_GFLAGS_LIBRARIES}
)
gpr
address_sorting
upb
- ${_gRPC_GFLAGS_LIBRARIES}
)
gpr
address_sorting
upb
- ${_gRPC_GFLAGS_LIBRARIES}
)
gpr
address_sorting
upb
- ${_gRPC_GFLAGS_LIBRARIES}
)
gpr
address_sorting
upb
- ${_gRPC_GFLAGS_LIBRARIES}
)
gpr
address_sorting
upb
- ${_gRPC_GFLAGS_LIBRARIES}
)
gpr
address_sorting
upb
- ${_gRPC_GFLAGS_LIBRARIES}
+ absl::flags
)
gpr
address_sorting
upb
- ${_gRPC_GFLAGS_LIBRARIES}
)
gpr
address_sorting
upb
- ${_gRPC_GFLAGS_LIBRARIES}
)
gpr
address_sorting
upb
- ${_gRPC_GFLAGS_LIBRARIES}
+)
+
+
+endif()
+if(gRPC_BUILD_TESTS)
+
+add_executable(insecure_security_connector_test
+ test/core/security/insecure_security_connector_test.cc
+ third_party/googletest/googletest/src/gtest-all.cc
+ third_party/googletest/googlemock/src/gmock-all.cc
+)
+
+target_include_directories(insecure_security_connector_test
+ PRIVATE
+ ${CMAKE_CURRENT_SOURCE_DIR}
+ ${CMAKE_CURRENT_SOURCE_DIR}/include
+ ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+ ${_gRPC_RE2_INCLUDE_DIR}
+ ${_gRPC_SSL_INCLUDE_DIR}
+ ${_gRPC_UPB_GENERATED_DIR}
+ ${_gRPC_UPB_GRPC_GENERATED_DIR}
+ ${_gRPC_UPB_INCLUDE_DIR}
+ ${_gRPC_ZLIB_INCLUDE_DIR}
+ third_party/googletest/googletest/include
+ third_party/googletest/googletest
+ third_party/googletest/googlemock/include
+ third_party/googletest/googlemock
+ ${_gRPC_PROTO_GENS_DIR}
+)
+
+target_link_libraries(insecure_security_connector_test
+ ${_gRPC_PROTOBUF_LIBRARIES}
+ ${_gRPC_ALLTARGETS_LIBRARIES}
+ grpc_test_util
+ grpc
+ gpr
+ address_sorting
+ upb
)
gpr
address_sorting
upb
- ${_gRPC_GFLAGS_LIBRARIES}
+ absl::flags
)
gpr
address_sorting
upb
- ${_gRPC_GFLAGS_LIBRARIES}
+ absl::flags
)
gpr
address_sorting
upb
- ${_gRPC_GFLAGS_LIBRARIES}
+ absl::flags
)
gpr
address_sorting
upb
- ${_gRPC_GFLAGS_LIBRARIES}
)
gpr
address_sorting
upb
- ${_gRPC_GFLAGS_LIBRARIES}
)
gpr
address_sorting
upb
- ${_gRPC_GFLAGS_LIBRARIES}
)
gpr
address_sorting
upb
- ${_gRPC_GFLAGS_LIBRARIES}
)
gpr
address_sorting
upb
- ${_gRPC_GFLAGS_LIBRARIES}
)
gpr
address_sorting
upb
- ${_gRPC_GFLAGS_LIBRARIES}
)
gpr
address_sorting
upb
- ${_gRPC_GFLAGS_LIBRARIES}
)
gpr
address_sorting
upb
- ${_gRPC_GFLAGS_LIBRARIES}
)
address_sorting
upb
${_gRPC_BENCHMARK_LIBRARIES}
- ${_gRPC_GFLAGS_LIBRARIES}
)
gpr
address_sorting
upb
- ${_gRPC_GFLAGS_LIBRARIES}
)
gpr
address_sorting
upb
- ${_gRPC_GFLAGS_LIBRARIES}
)
gpr
address_sorting
upb
- ${_gRPC_GFLAGS_LIBRARIES}
)
gpr
address_sorting
upb
- ${_gRPC_GFLAGS_LIBRARIES}
)
gpr
address_sorting
upb
- ${_gRPC_GFLAGS_LIBRARIES}
)
gpr
address_sorting
upb
- ${_gRPC_GFLAGS_LIBRARIES}
)
gpr
address_sorting
upb
- ${_gRPC_GFLAGS_LIBRARIES}
+ absl::flags
)
gpr
address_sorting
upb
- ${_gRPC_GFLAGS_LIBRARIES}
+ absl::flags
)
gpr
address_sorting
upb
- ${_gRPC_GFLAGS_LIBRARIES}
)
gpr
address_sorting
upb
- ${_gRPC_GFLAGS_LIBRARIES}
)
gpr
address_sorting
upb
- ${_gRPC_GFLAGS_LIBRARIES}
)
gpr
address_sorting
upb
- ${_gRPC_GFLAGS_LIBRARIES}
)
gpr
address_sorting
upb
- ${_gRPC_GFLAGS_LIBRARIES}
)
gpr
address_sorting
upb
- ${_gRPC_GFLAGS_LIBRARIES}
)
gpr
address_sorting
upb
- ${_gRPC_GFLAGS_LIBRARIES}
)
gpr
address_sorting
upb
- ${_gRPC_GFLAGS_LIBRARIES}
)
gpr
address_sorting
upb
- ${_gRPC_GFLAGS_LIBRARIES}
)
gpr
address_sorting
upb
- ${_gRPC_GFLAGS_LIBRARIES}
)
gpr
address_sorting
upb
- ${_gRPC_GFLAGS_LIBRARIES}
)
gpr
address_sorting
upb
- ${_gRPC_GFLAGS_LIBRARIES}
)
gpr
address_sorting
upb
- ${_gRPC_GFLAGS_LIBRARIES}
)
gpr
address_sorting
upb
- ${_gRPC_GFLAGS_LIBRARIES}
)
gpr
address_sorting
upb
- ${_gRPC_GFLAGS_LIBRARIES}
)
gpr
address_sorting
upb
- ${_gRPC_GFLAGS_LIBRARIES}
)
gpr
address_sorting
upb
- ${_gRPC_GFLAGS_LIBRARIES}
)
gpr
address_sorting
upb
- ${_gRPC_GFLAGS_LIBRARIES}
)
gpr
address_sorting
upb
- ${_gRPC_GFLAGS_LIBRARIES}
)
gpr
address_sorting
upb
- ${_gRPC_GFLAGS_LIBRARIES}
+)
+
+
+endif()
+if(gRPC_BUILD_TESTS)
+if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX)
+
+ add_executable(stack_tracer_test
+ test/core/util/stack_tracer_test.cc
+ third_party/googletest/googletest/src/gtest-all.cc
+ third_party/googletest/googlemock/src/gmock-all.cc
+ )
+
+ target_include_directories(stack_tracer_test
+ PRIVATE
+ ${CMAKE_CURRENT_SOURCE_DIR}
+ ${CMAKE_CURRENT_SOURCE_DIR}/include
+ ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+ ${_gRPC_RE2_INCLUDE_DIR}
+ ${_gRPC_SSL_INCLUDE_DIR}
+ ${_gRPC_UPB_GENERATED_DIR}
+ ${_gRPC_UPB_GRPC_GENERATED_DIR}
+ ${_gRPC_UPB_INCLUDE_DIR}
+ ${_gRPC_ZLIB_INCLUDE_DIR}
+ third_party/googletest/googletest/include
+ third_party/googletest/googletest
+ third_party/googletest/googlemock/include
+ third_party/googletest/googlemock
+ ${_gRPC_PROTO_GENS_DIR}
+ )
+
+ target_link_libraries(stack_tracer_test
+ ${_gRPC_PROTOBUF_LIBRARIES}
+ ${_gRPC_ALLTARGETS_LIBRARIES}
+ grpc_test_util
+ grpc
+ gpr
+ address_sorting
+ upb
+ absl::symbolize
+ )
+
+
+endif()
+endif()
+if(gRPC_BUILD_TESTS)
+
+add_executable(stat_test
+ test/core/gprpp/stat_test.cc
+ third_party/googletest/googletest/src/gtest-all.cc
+ third_party/googletest/googlemock/src/gmock-all.cc
+)
+
+target_include_directories(stat_test
+ PRIVATE
+ ${CMAKE_CURRENT_SOURCE_DIR}
+ ${CMAKE_CURRENT_SOURCE_DIR}/include
+ ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+ ${_gRPC_RE2_INCLUDE_DIR}
+ ${_gRPC_SSL_INCLUDE_DIR}
+ ${_gRPC_UPB_GENERATED_DIR}
+ ${_gRPC_UPB_GRPC_GENERATED_DIR}
+ ${_gRPC_UPB_INCLUDE_DIR}
+ ${_gRPC_ZLIB_INCLUDE_DIR}
+ third_party/googletest/googletest/include
+ third_party/googletest/googletest
+ third_party/googletest/googlemock/include
+ third_party/googletest/googlemock
+ ${_gRPC_PROTO_GENS_DIR}
+)
+
+target_link_libraries(stat_test
+ ${_gRPC_PROTOBUF_LIBRARIES}
+ ${_gRPC_ALLTARGETS_LIBRARIES}
+ grpc_test_util
+ grpc
+ gpr
+ address_sorting
+ upb
)
gpr
address_sorting
upb
- ${_gRPC_GFLAGS_LIBRARIES}
)
gpr
address_sorting
upb
- ${_gRPC_GFLAGS_LIBRARIES}
)
gpr
address_sorting
upb
- ${_gRPC_GFLAGS_LIBRARIES}
)
gpr
address_sorting
upb
- ${_gRPC_GFLAGS_LIBRARIES}
)
gpr
address_sorting
upb
- ${_gRPC_GFLAGS_LIBRARIES}
)
gpr
address_sorting
upb
- ${_gRPC_GFLAGS_LIBRARIES}
)
gpr
address_sorting
upb
- ${_gRPC_GFLAGS_LIBRARIES}
)
gpr
address_sorting
upb
- ${_gRPC_GFLAGS_LIBRARIES}
+)
+
+
+endif()
+if(gRPC_BUILD_TESTS)
+
+add_executable(test_cpp_server_credentials_test
+ test/cpp/server/credentials_test.cc
+ third_party/googletest/googletest/src/gtest-all.cc
+ third_party/googletest/googlemock/src/gmock-all.cc
+)
+
+target_include_directories(test_cpp_server_credentials_test
+ PRIVATE
+ ${CMAKE_CURRENT_SOURCE_DIR}
+ ${CMAKE_CURRENT_SOURCE_DIR}/include
+ ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+ ${_gRPC_RE2_INCLUDE_DIR}
+ ${_gRPC_SSL_INCLUDE_DIR}
+ ${_gRPC_UPB_GENERATED_DIR}
+ ${_gRPC_UPB_GRPC_GENERATED_DIR}
+ ${_gRPC_UPB_INCLUDE_DIR}
+ ${_gRPC_ZLIB_INCLUDE_DIR}
+ third_party/googletest/googletest/include
+ third_party/googletest/googletest
+ third_party/googletest/googlemock/include
+ third_party/googletest/googlemock
+ ${_gRPC_PROTO_GENS_DIR}
+)
+
+target_link_libraries(test_cpp_server_credentials_test
+ ${_gRPC_PROTOBUF_LIBRARIES}
+ ${_gRPC_ALLTARGETS_LIBRARIES}
+ grpc_test_util
+ grpc++
+ grpc
+ gpr
+ address_sorting
+ upb
)
gpr
address_sorting
upb
- ${_gRPC_GFLAGS_LIBRARIES}
)
gpr
address_sorting
upb
- ${_gRPC_GFLAGS_LIBRARIES}
)
gpr
address_sorting
upb
- ${_gRPC_GFLAGS_LIBRARIES}
)
gpr
address_sorting
upb
- ${_gRPC_GFLAGS_LIBRARIES}
)
gpr
address_sorting
upb
- ${_gRPC_GFLAGS_LIBRARIES}
)
gpr
address_sorting
upb
- ${_gRPC_GFLAGS_LIBRARIES}
)
gpr
address_sorting
upb
- ${_gRPC_GFLAGS_LIBRARIES}
)
gpr
address_sorting
upb
- ${_gRPC_GFLAGS_LIBRARIES}
)
gpr
address_sorting
upb
- ${_gRPC_GFLAGS_LIBRARIES}
)
gpr
address_sorting
upb
- ${_gRPC_GFLAGS_LIBRARIES}
)
gpr
address_sorting
upb
- ${_gRPC_GFLAGS_LIBRARIES}
)
test/core/util/cmdline.cc
test/core/util/debugger_macros.cc
test/core/util/eval_args_mock_endpoint.cc
- test/core/util/examine_stack.cc
test/core/util/fuzzer_util.cc
test/core/util/grpc_profiler.cc
test/core/util/histogram.cc
test/core/util/port_isolated_runtime_environment.cc
test/core/util/port_server_client.cc
test/core/util/reconnect_server.cc
+ test/core/util/resolve_localhost_ip46.cc
test/core/util/slice_splitter.cc
+ test/core/util/stack_tracer.cc
test/core/util/subprocess_posix.cc
test/core/util/subprocess_windows.cc
test/core/util/test_config.cc
absl::symbolize
absl::stacktrace
absl::failure_signal_handler
- ${_gRPC_GFLAGS_LIBRARIES}
)
if(gRPC_BUILD_TESTS)
add_executable(xds_bootstrap_test
- test/core/client_channel/xds_bootstrap_test.cc
+ test/core/xds/xds_bootstrap_test.cc
third_party/googletest/googletest/src/gtest-all.cc
third_party/googletest/googlemock/src/gmock-all.cc
)
gpr
address_sorting
upb
- ${_gRPC_GFLAGS_LIBRARIES}
+)
+
+
+endif()
+if(gRPC_BUILD_TESTS)
+
+add_executable(xds_certificate_provider_test
+ test/core/xds/xds_certificate_provider_test.cc
+ third_party/googletest/googletest/src/gtest-all.cc
+ third_party/googletest/googlemock/src/gmock-all.cc
+)
+
+target_include_directories(xds_certificate_provider_test
+ PRIVATE
+ ${CMAKE_CURRENT_SOURCE_DIR}
+ ${CMAKE_CURRENT_SOURCE_DIR}/include
+ ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+ ${_gRPC_RE2_INCLUDE_DIR}
+ ${_gRPC_SSL_INCLUDE_DIR}
+ ${_gRPC_UPB_GENERATED_DIR}
+ ${_gRPC_UPB_GRPC_GENERATED_DIR}
+ ${_gRPC_UPB_INCLUDE_DIR}
+ ${_gRPC_ZLIB_INCLUDE_DIR}
+ third_party/googletest/googletest/include
+ third_party/googletest/googletest
+ third_party/googletest/googlemock/include
+ third_party/googletest/googlemock
+ ${_gRPC_PROTO_GENS_DIR}
+)
+
+target_link_libraries(xds_certificate_provider_test
+ ${_gRPC_PROTOBUF_LIBRARIES}
+ ${_gRPC_ALLTARGETS_LIBRARIES}
+ grpc_test_util
+ grpc
+ gpr
+ address_sorting
+ upb
+)
+
+
+endif()
+if(gRPC_BUILD_TESTS)
+
+add_executable(xds_credentials_end2end_test
+ ${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/testing/echo.pb.cc
+ ${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/testing/echo.grpc.pb.cc
+ ${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/testing/echo.pb.h
+ ${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/testing/echo.grpc.pb.h
+ ${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/testing/echo_messages.pb.cc
+ ${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/testing/echo_messages.grpc.pb.cc
+ ${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/testing/echo_messages.pb.h
+ ${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/testing/echo_messages.grpc.pb.h
+ ${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/testing/simple_messages.pb.cc
+ ${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/testing/simple_messages.grpc.pb.cc
+ ${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/testing/simple_messages.pb.h
+ ${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/testing/simple_messages.grpc.pb.h
+ test/cpp/end2end/test_service_impl.cc
+ test/cpp/end2end/xds_credentials_end2end_test.cc
+ third_party/googletest/googletest/src/gtest-all.cc
+ third_party/googletest/googlemock/src/gmock-all.cc
+)
+
+target_include_directories(xds_credentials_end2end_test
+ PRIVATE
+ ${CMAKE_CURRENT_SOURCE_DIR}
+ ${CMAKE_CURRENT_SOURCE_DIR}/include
+ ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+ ${_gRPC_RE2_INCLUDE_DIR}
+ ${_gRPC_SSL_INCLUDE_DIR}
+ ${_gRPC_UPB_GENERATED_DIR}
+ ${_gRPC_UPB_GRPC_GENERATED_DIR}
+ ${_gRPC_UPB_INCLUDE_DIR}
+ ${_gRPC_ZLIB_INCLUDE_DIR}
+ third_party/googletest/googletest/include
+ third_party/googletest/googletest
+ third_party/googletest/googlemock/include
+ third_party/googletest/googlemock
+ ${_gRPC_PROTO_GENS_DIR}
+)
+
+target_link_libraries(xds_credentials_end2end_test
+ ${_gRPC_PROTOBUF_LIBRARIES}
+ ${_gRPC_ALLTARGETS_LIBRARIES}
+ grpc++_test_util
+ grpc_test_util
+ grpc++
+ grpc
+ gpr
+ address_sorting
+ upb
)
${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/testing/xds/v3/percent.grpc.pb.cc
${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/testing/xds/v3/percent.pb.h
${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/testing/xds/v3/percent.grpc.pb.h
+ ${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/testing/xds/v3/protocol.pb.cc
+ ${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/testing/xds/v3/protocol.grpc.pb.cc
+ ${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/testing/xds/v3/protocol.pb.h
+ ${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/testing/xds/v3/protocol.grpc.pb.h
${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/testing/xds/v3/range.pb.cc
${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/testing/xds/v3/range.grpc.pb.cc
${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/testing/xds/v3/range.pb.h
gpr
address_sorting
upb
- ${_gRPC_GFLAGS_LIBRARIES}
)
gpr
address_sorting
upb
- ${_gRPC_GFLAGS_LIBRARIES}
+ absl::flags
)
gpr
address_sorting
upb
- ${_gRPC_GFLAGS_LIBRARIES}
+ absl::flags
)
gpr
address_sorting
upb
- ${_gRPC_GFLAGS_LIBRARIES}
+ absl::flags
)
gpr
address_sorting
upb
- ${_gRPC_GFLAGS_LIBRARIES}
+ absl::flags
)
gpr
address_sorting
upb
- ${_gRPC_GFLAGS_LIBRARIES}
+ absl::flags
)
gpr
address_sorting
upb
- ${_gRPC_GFLAGS_LIBRARIES}
+ absl::flags
)
gpr
address_sorting
upb
- ${_gRPC_GFLAGS_LIBRARIES}
+ absl::flags
)
gpr
address_sorting
upb
- ${_gRPC_GFLAGS_LIBRARIES}
+ absl::flags
)
gpr
address_sorting
upb
- ${_gRPC_GFLAGS_LIBRARIES}
+ absl::flags
)
gpr
address_sorting
upb
- ${_gRPC_GFLAGS_LIBRARIES}
+ absl::flags
)
gpr
address_sorting
upb
- ${_gRPC_GFLAGS_LIBRARIES}
+ absl::flags
)
gpr
address_sorting
upb
- ${_gRPC_GFLAGS_LIBRARIES}
+ absl::flags
)
gpr
address_sorting
upb
- ${_gRPC_GFLAGS_LIBRARIES}
+ absl::flags
)
gpr
address_sorting
upb
- ${_gRPC_GFLAGS_LIBRARIES}
+ absl::flags
)
gpr
address_sorting
upb
- ${_gRPC_GFLAGS_LIBRARIES}
+ absl::flags
)
"gRPC platform support library"
"${gRPC_CORE_VERSION}"
""
- "-lgpr -labsl_str_format_internal -labsl_synchronization -labsl_graphcycles_internal -labsl_symbolize -labsl_demangle_internal -labsl_stacktrace -labsl_debugging_internal -labsl_malloc_internal -labsl_time -labsl_time_zone -labsl_civil_time -labsl_strings -labsl_strings_internal -labsl_throw_delegate -labsl_int128 -labsl_base -labsl_spinlock_wait -labsl_raw_logging_internal -labsl_log_severity -labsl_dynamic_annotations"
+ "-lgpr -labsl_status -labsl_cord -labsl_str_format_internal -labsl_synchronization -labsl_graphcycles_internal -labsl_symbolize -labsl_demangle_internal -labsl_stacktrace -labsl_debugging_internal -labsl_malloc_internal -labsl_time -labsl_time_zone -labsl_civil_time -labsl_strings -labsl_strings_internal -labsl_throw_delegate -labsl_int128 -labsl_base -labsl_spinlock_wait -labsl_bad_optional_access -labsl_raw_logging_internal -labsl_log_severity"
""
"gpr.pc")
"high performance general RPC framework"
"${gRPC_CORE_VERSION}"
"gpr openssl"
- "-lgrpc -laddress_sorting -lre2 -lupb -lcares -lz -labsl_raw_hash_set -labsl_hashtablez_sampler -labsl_exponential_biased -labsl_hash -labsl_bad_variant_access -labsl_city -labsl_status -labsl_cord -labsl_bad_optional_access -labsl_str_format_internal -labsl_synchronization -labsl_graphcycles_internal -labsl_symbolize -labsl_demangle_internal -labsl_stacktrace -labsl_debugging_internal -labsl_malloc_internal -labsl_time -labsl_time_zone -labsl_civil_time -labsl_strings -labsl_strings_internal -labsl_throw_delegate -labsl_int128 -labsl_base -labsl_spinlock_wait -labsl_raw_logging_internal -labsl_log_severity -labsl_dynamic_annotations"
+ "-lgrpc -laddress_sorting -lre2 -lupb -lcares -lz -labsl_raw_hash_set -labsl_hashtablez_sampler -labsl_exponential_biased -labsl_hash -labsl_bad_variant_access -labsl_city -labsl_status -labsl_cord -labsl_str_format_internal -labsl_synchronization -labsl_graphcycles_internal -labsl_symbolize -labsl_demangle_internal -labsl_stacktrace -labsl_debugging_internal -labsl_malloc_internal -labsl_time -labsl_time_zone -labsl_civil_time -labsl_strings -labsl_strings_internal -labsl_throw_delegate -labsl_int128 -labsl_base -labsl_spinlock_wait -labsl_bad_optional_access -labsl_raw_logging_internal -labsl_log_severity"
""
"grpc.pc")
"high performance general RPC framework without SSL"
"${gRPC_CORE_VERSION}"
"gpr"
- "-lgrpc_unsecure -labsl_status -labsl_cord -labsl_bad_optional_access -labsl_str_format_internal -labsl_synchronization -labsl_graphcycles_internal -labsl_symbolize -labsl_demangle_internal -labsl_stacktrace -labsl_debugging_internal -labsl_malloc_internal -labsl_time -labsl_time_zone -labsl_civil_time -labsl_strings -labsl_strings_internal -labsl_throw_delegate -labsl_int128 -labsl_base -labsl_spinlock_wait -labsl_raw_logging_internal -labsl_log_severity -labsl_dynamic_annotations"
+ "-lgrpc_unsecure -labsl_status -labsl_cord -labsl_str_format_internal -labsl_synchronization -labsl_graphcycles_internal -labsl_symbolize -labsl_demangle_internal -labsl_stacktrace -labsl_debugging_internal -labsl_malloc_internal -labsl_time -labsl_time_zone -labsl_civil_time -labsl_strings -labsl_strings_internal -labsl_throw_delegate -labsl_int128 -labsl_base -labsl_spinlock_wait -labsl_bad_optional_access -labsl_raw_logging_internal -labsl_log_severity"
""
"grpc_unsecure.pc")
"C++ wrapper for gRPC"
"${gRPC_CPP_VERSION}"
"grpc"
- "-lgrpc++ -labsl_raw_hash_set -labsl_hashtablez_sampler -labsl_exponential_biased -labsl_hash -labsl_bad_variant_access -labsl_city -labsl_status -labsl_cord -labsl_bad_optional_access -labsl_str_format_internal -labsl_synchronization -labsl_graphcycles_internal -labsl_symbolize -labsl_demangle_internal -labsl_stacktrace -labsl_debugging_internal -labsl_malloc_internal -labsl_time -labsl_time_zone -labsl_civil_time -labsl_strings -labsl_strings_internal -labsl_throw_delegate -labsl_int128 -labsl_base -labsl_spinlock_wait -labsl_raw_logging_internal -labsl_log_severity -labsl_dynamic_annotations"
+ "-lgrpc++ -labsl_raw_hash_set -labsl_hashtablez_sampler -labsl_exponential_biased -labsl_hash -labsl_bad_variant_access -labsl_city -labsl_status -labsl_cord -labsl_str_format_internal -labsl_synchronization -labsl_graphcycles_internal -labsl_symbolize -labsl_demangle_internal -labsl_stacktrace -labsl_debugging_internal -labsl_malloc_internal -labsl_time -labsl_time_zone -labsl_civil_time -labsl_strings -labsl_strings_internal -labsl_throw_delegate -labsl_int128 -labsl_base -labsl_spinlock_wait -labsl_bad_optional_access -labsl_raw_logging_internal -labsl_log_severity"
""
"grpc++.pc")
"C++ wrapper for gRPC without SSL"
"${gRPC_CPP_VERSION}"
"grpc_unsecure"
- "-lgrpc++_unsecure -labsl_status -labsl_cord -labsl_bad_optional_access -labsl_str_format_internal -labsl_synchronization -labsl_graphcycles_internal -labsl_symbolize -labsl_demangle_internal -labsl_stacktrace -labsl_debugging_internal -labsl_malloc_internal -labsl_time -labsl_time_zone -labsl_civil_time -labsl_strings -labsl_strings_internal -labsl_throw_delegate -labsl_int128 -labsl_base -labsl_spinlock_wait -labsl_raw_logging_internal -labsl_log_severity -labsl_dynamic_annotations"
+ "-lgrpc++_unsecure -labsl_status -labsl_cord -labsl_str_format_internal -labsl_synchronization -labsl_graphcycles_internal -labsl_symbolize -labsl_demangle_internal -labsl_stacktrace -labsl_debugging_internal -labsl_malloc_internal -labsl_time -labsl_time_zone -labsl_civil_time -labsl_strings -labsl_strings_internal -labsl_throw_delegate -labsl_int128 -labsl_base -labsl_spinlock_wait -labsl_bad_optional_access -labsl_raw_logging_internal -labsl_log_severity"
""
"grpc++_unsecure.pc")
# Configurations (as defined under "configs" section in build_handwritten.yaml)
-VALID_CONFIG_opt = 1
-CC_opt = $(DEFAULT_CC)
-CXX_opt = $(DEFAULT_CXX)
-LD_opt = $(DEFAULT_CC)
-LDXX_opt = $(DEFAULT_CXX)
-CPPFLAGS_opt = -O2 -Wframe-larger-than=16384
-DEFINES_opt = NDEBUG
-
-VALID_CONFIG_asan-trace-cmp = 1
-REQUIRE_CUSTOM_LIBRARIES_asan-trace-cmp = 1
-CC_asan-trace-cmp = clang
-CXX_asan-trace-cmp = clang++
-LD_asan-trace-cmp = clang++
-LDXX_asan-trace-cmp = clang++
-CPPFLAGS_asan-trace-cmp = -O0 -fsanitize-coverage=edge,trace-pc-guard -fsanitize-coverage=trace-cmp -fsanitize=address -fno-omit-frame-pointer -Wno-unused-command-line-argument -DGPR_NO_DIRECT_SYSCALLS
-LDFLAGS_asan-trace-cmp = -fsanitize=address
-
-VALID_CONFIG_dbg = 1
-CC_dbg = $(DEFAULT_CC)
-CXX_dbg = $(DEFAULT_CXX)
-LD_dbg = $(DEFAULT_CC)
-LDXX_dbg = $(DEFAULT_CXX)
-CPPFLAGS_dbg = -O0
-DEFINES_dbg = _DEBUG DEBUG
-
VALID_CONFIG_asan = 1
REQUIRE_CUSTOM_LIBRARIES_asan = 1
CC_asan = clang
CPPFLAGS_asan = -O0 -fsanitize-coverage=edge,trace-pc-guard -fsanitize=address -fno-omit-frame-pointer -Wno-unused-command-line-argument -DGPR_NO_DIRECT_SYSCALLS
LDFLAGS_asan = -fsanitize=address
-VALID_CONFIG_msan = 1
-REQUIRE_CUSTOM_LIBRARIES_msan = 1
-CC_msan = clang
-CXX_msan = clang++
-LD_msan = clang++
-LDXX_msan = clang++
-CPPFLAGS_msan = -O0 -stdlib=libc++ -fsanitize-coverage=edge,trace-pc-guard -fsanitize=memory -fsanitize-memory-track-origins -fsanitize-memory-use-after-dtor -fno-omit-frame-pointer -DGTEST_HAS_TR1_TUPLE=0 -DGTEST_USE_OWN_TR1_TUPLE=1 -Wno-unused-command-line-argument -fPIE -pie -DGPR_NO_DIRECT_SYSCALLS
-LDFLAGS_msan = -stdlib=libc++ -fsanitize=memory -DGTEST_HAS_TR1_TUPLE=0 -DGTEST_USE_OWN_TR1_TUPLE=1 -fPIE -pie $(if $(JENKINS_BUILD),-Wl$(comma)-Ttext-segment=0x7e0000000000,)
-DEFINES_msan = NDEBUG
-
-VALID_CONFIG_basicprof = 1
-CC_basicprof = $(DEFAULT_CC)
-CXX_basicprof = $(DEFAULT_CXX)
-LD_basicprof = $(DEFAULT_CC)
-LDXX_basicprof = $(DEFAULT_CXX)
-CPPFLAGS_basicprof = -O2 -DGRPC_BASIC_PROFILER -DGRPC_TIMERS_RDTSC
-DEFINES_basicprof = NDEBUG
-
-VALID_CONFIG_helgrind = 1
-CC_helgrind = $(DEFAULT_CC)
-CXX_helgrind = $(DEFAULT_CXX)
-LD_helgrind = $(DEFAULT_CC)
-LDXX_helgrind = $(DEFAULT_CXX)
-CPPFLAGS_helgrind = -O0
-LDFLAGS_helgrind = -rdynamic
-DEFINES_helgrind = _DEBUG DEBUG
-
VALID_CONFIG_asan-noleaks = 1
REQUIRE_CUSTOM_LIBRARIES_asan-noleaks = 1
CC_asan-noleaks = clang
CPPFLAGS_asan-noleaks = -O0 -fsanitize-coverage=edge,trace-pc-guard -fsanitize=address -fno-omit-frame-pointer -Wno-unused-command-line-argument -DGPR_NO_DIRECT_SYSCALLS
LDFLAGS_asan-noleaks = fsanitize=address
-VALID_CONFIG_noexcept = 1
-CC_noexcept = $(DEFAULT_CC)
-CXX_noexcept = $(DEFAULT_CXX)
-LD_noexcept = $(DEFAULT_CC)
-LDXX_noexcept = $(DEFAULT_CXX)
-CXXFLAGS_noexcept = -fno-exceptions
-CPPFLAGS_noexcept = -O2 -Wframe-larger-than=16384
-DEFINES_noexcept = NDEBUG
+VALID_CONFIG_asan-trace-cmp = 1
+REQUIRE_CUSTOM_LIBRARIES_asan-trace-cmp = 1
+CC_asan-trace-cmp = clang
+CXX_asan-trace-cmp = clang++
+LD_asan-trace-cmp = clang++
+LDXX_asan-trace-cmp = clang++
+CPPFLAGS_asan-trace-cmp = -O0 -fsanitize-coverage=edge,trace-pc-guard -fsanitize-coverage=trace-cmp -fsanitize=address -fno-omit-frame-pointer -Wno-unused-command-line-argument -DGPR_NO_DIRECT_SYSCALLS
+LDFLAGS_asan-trace-cmp = -fsanitize=address
-VALID_CONFIG_ubsan = 1
-REQUIRE_CUSTOM_LIBRARIES_ubsan = 1
-CC_ubsan = clang
-CXX_ubsan = clang++
-LD_ubsan = clang++
-LDXX_ubsan = clang++
-CPPFLAGS_ubsan = -O0 -stdlib=libc++ -fsanitize-coverage=edge,trace-pc-guard -fsanitize=undefined -fno-omit-frame-pointer -Wno-unused-command-line-argument -Wvarargs
-LDFLAGS_ubsan = -stdlib=libc++ -fsanitize=undefined,unsigned-integer-overflow
-DEFINES_ubsan = NDEBUG GRPC_UBSAN
+VALID_CONFIG_basicprof = 1
+CC_basicprof = $(DEFAULT_CC)
+CXX_basicprof = $(DEFAULT_CXX)
+LD_basicprof = $(DEFAULT_CC)
+LDXX_basicprof = $(DEFAULT_CXX)
+CPPFLAGS_basicprof = -O2 -DGRPC_BASIC_PROFILER -DGRPC_TIMERS_RDTSC
+DEFINES_basicprof = NDEBUG
-VALID_CONFIG_tsan = 1
-REQUIRE_CUSTOM_LIBRARIES_tsan = 1
-CC_tsan = clang
-CXX_tsan = clang++
-LD_tsan = clang++
-LDXX_tsan = clang++
-CPPFLAGS_tsan = -O0 -fsanitize=thread -fno-omit-frame-pointer -Wno-unused-command-line-argument -DGPR_NO_DIRECT_SYSCALLS
-LDFLAGS_tsan = -fsanitize=thread
-DEFINES_tsan = GRPC_TSAN
+VALID_CONFIG_c++-compat = 1
+CC_c++-compat = $(DEFAULT_CC)
+CXX_c++-compat = $(DEFAULT_CXX)
+LD_c++-compat = $(DEFAULT_CC)
+LDXX_c++-compat = $(DEFAULT_CXX)
+CFLAGS_c++-compat = -Wc++-compat
+CPPFLAGS_c++-compat = -O0
+DEFINES_c++-compat = _DEBUG DEBUG
+
+VALID_CONFIG_counters = 1
+CC_counters = $(DEFAULT_CC)
+CXX_counters = $(DEFAULT_CXX)
+LD_counters = $(DEFAULT_CC)
+LDXX_counters = $(DEFAULT_CXX)
+CPPFLAGS_counters = -O2 -DGPR_LOW_LEVEL_COUNTERS
+DEFINES_counters = NDEBUG
VALID_CONFIG_counters_with_memory_counter = 1
CC_counters_with_memory_counter = $(DEFAULT_CC)
LDFLAGS_counters_with_memory_counter = -Wl,--wrap=malloc -Wl,--wrap=calloc -Wl,--wrap=realloc -Wl,--wrap=free
DEFINES_counters_with_memory_counter = NDEBUG
-VALID_CONFIG_stapprof = 1
-CC_stapprof = $(DEFAULT_CC)
-CXX_stapprof = $(DEFAULT_CXX)
-LD_stapprof = $(DEFAULT_CC)
-LDXX_stapprof = $(DEFAULT_CXX)
-CPPFLAGS_stapprof = -O2 -DGRPC_STAP_PROFILER
-DEFINES_stapprof = NDEBUG
+VALID_CONFIG_dbg = 1
+CC_dbg = $(DEFAULT_CC)
+CXX_dbg = $(DEFAULT_CXX)
+LD_dbg = $(DEFAULT_CC)
+LDXX_dbg = $(DEFAULT_CXX)
+CPPFLAGS_dbg = -O0
+DEFINES_dbg = _DEBUG DEBUG
VALID_CONFIG_gcov = 1
CC_gcov = gcc
LDFLAGS_gcov = -fprofile-arcs -ftest-coverage -rdynamic -lstdc++
DEFINES_gcov = _DEBUG DEBUG GPR_GCOV
-VALID_CONFIG_memcheck = 1
-CC_memcheck = $(DEFAULT_CC)
-CXX_memcheck = $(DEFAULT_CXX)
-LD_memcheck = $(DEFAULT_CC)
-LDXX_memcheck = $(DEFAULT_CXX)
-CPPFLAGS_memcheck = -O0
-LDFLAGS_memcheck = -rdynamic
-DEFINES_memcheck = _DEBUG DEBUG
+VALID_CONFIG_helgrind = 1
+CC_helgrind = $(DEFAULT_CC)
+CXX_helgrind = $(DEFAULT_CXX)
+LD_helgrind = $(DEFAULT_CC)
+LDXX_helgrind = $(DEFAULT_CXX)
+CPPFLAGS_helgrind = -O0
+LDFLAGS_helgrind = -rdynamic
+DEFINES_helgrind = _DEBUG DEBUG
VALID_CONFIG_lto = 1
CC_lto = $(DEFAULT_CC)
CPPFLAGS_lto = -O2
DEFINES_lto = NDEBUG
-VALID_CONFIG_c++-compat = 1
-CC_c++-compat = $(DEFAULT_CC)
-CXX_c++-compat = $(DEFAULT_CXX)
-LD_c++-compat = $(DEFAULT_CC)
-LDXX_c++-compat = $(DEFAULT_CXX)
-CFLAGS_c++-compat = -Wc++-compat
-CPPFLAGS_c++-compat = -O0
-DEFINES_c++-compat = _DEBUG DEBUG
+VALID_CONFIG_memcheck = 1
+CC_memcheck = $(DEFAULT_CC)
+CXX_memcheck = $(DEFAULT_CXX)
+LD_memcheck = $(DEFAULT_CC)
+LDXX_memcheck = $(DEFAULT_CXX)
+CPPFLAGS_memcheck = -O0
+LDFLAGS_memcheck = -rdynamic
+DEFINES_memcheck = _DEBUG DEBUG
+
+VALID_CONFIG_msan = 1
+REQUIRE_CUSTOM_LIBRARIES_msan = 1
+CC_msan = clang
+CXX_msan = clang++
+LD_msan = clang++
+LDXX_msan = clang++
+CPPFLAGS_msan = -O0 -stdlib=libc++ -fsanitize-coverage=edge,trace-pc-guard -fsanitize=memory -fsanitize-memory-track-origins -fsanitize-memory-use-after-dtor -fno-omit-frame-pointer -DGTEST_HAS_TR1_TUPLE=0 -DGTEST_USE_OWN_TR1_TUPLE=1 -Wno-unused-command-line-argument -fPIE -pie -DGPR_NO_DIRECT_SYSCALLS
+LDFLAGS_msan = -stdlib=libc++ -fsanitize=memory -DGTEST_HAS_TR1_TUPLE=0 -DGTEST_USE_OWN_TR1_TUPLE=1 -fPIE -pie $(if $(JENKINS_BUILD),-Wl$(comma)-Ttext-segment=0x7e0000000000,)
+DEFINES_msan = NDEBUG
VALID_CONFIG_mutrace = 1
CC_mutrace = $(DEFAULT_CC)
LDFLAGS_mutrace = -rdynamic
DEFINES_mutrace = NDEBUG
-VALID_CONFIG_counters = 1
-CC_counters = $(DEFAULT_CC)
-CXX_counters = $(DEFAULT_CXX)
-LD_counters = $(DEFAULT_CC)
-LDXX_counters = $(DEFAULT_CXX)
-CPPFLAGS_counters = -O2 -DGPR_LOW_LEVEL_COUNTERS
-DEFINES_counters = NDEBUG
+VALID_CONFIG_noexcept = 1
+CC_noexcept = $(DEFAULT_CC)
+CXX_noexcept = $(DEFAULT_CXX)
+LD_noexcept = $(DEFAULT_CC)
+LDXX_noexcept = $(DEFAULT_CXX)
+CXXFLAGS_noexcept = -fno-exceptions
+CPPFLAGS_noexcept = -O2 -Wframe-larger-than=16384
+DEFINES_noexcept = NDEBUG
+
+VALID_CONFIG_opt = 1
+CC_opt = $(DEFAULT_CC)
+CXX_opt = $(DEFAULT_CXX)
+LD_opt = $(DEFAULT_CC)
+LDXX_opt = $(DEFAULT_CXX)
+CPPFLAGS_opt = -O2 -Wframe-larger-than=16384
+DEFINES_opt = NDEBUG
+
+VALID_CONFIG_stapprof = 1
+CC_stapprof = $(DEFAULT_CC)
+CXX_stapprof = $(DEFAULT_CXX)
+LD_stapprof = $(DEFAULT_CC)
+LDXX_stapprof = $(DEFAULT_CXX)
+CPPFLAGS_stapprof = -O2 -DGRPC_STAP_PROFILER
+DEFINES_stapprof = NDEBUG
+
+VALID_CONFIG_tsan = 1
+REQUIRE_CUSTOM_LIBRARIES_tsan = 1
+CC_tsan = clang
+CXX_tsan = clang++
+LD_tsan = clang++
+LDXX_tsan = clang++
+CPPFLAGS_tsan = -O0 -fsanitize=thread -fno-omit-frame-pointer -Wno-unused-command-line-argument -DGPR_NO_DIRECT_SYSCALLS
+LDFLAGS_tsan = -fsanitize=thread
+DEFINES_tsan = GRPC_TSAN
+
+VALID_CONFIG_ubsan = 1
+REQUIRE_CUSTOM_LIBRARIES_ubsan = 1
+CC_ubsan = clang
+CXX_ubsan = clang++
+LD_ubsan = clang++
+LDXX_ubsan = clang++
+CPPFLAGS_ubsan = -O0 -stdlib=libc++ -fsanitize-coverage=edge,trace-pc-guard -fsanitize=undefined -fno-omit-frame-pointer -Wno-unused-command-line-argument -Wvarargs
+LDFLAGS_ubsan = -stdlib=libc++ -fsanitize=undefined,unsigned-integer-overflow
+DEFINES_ubsan = NDEBUG GRPC_UBSAN
Q = @
endif
-CORE_VERSION = 13.0.0
-CPP_VERSION = 1.33.2
-CSHARP_VERSION = 2.33.2
+CORE_VERSION = 14.0.0
+CPP_VERSION = 1.34.0
+CSHARP_VERSION = 2.34.0
CPPFLAGS_NO_ARCH += $(addprefix -I, $(INCLUDES)) $(addprefix -D, $(DEFINES))
CPPFLAGS += $(CPPFLAGS_NO_ARCH) $(ARCH_FLAGS)
SHARED_EXT_CPP = dll
SHARED_EXT_CSHARP = dll
SHARED_PREFIX =
-SHARED_VERSION_CORE = -13
+SHARED_VERSION_CORE = -14
SHARED_VERSION_CPP = -1
SHARED_VERSION_CSHARP = -2
else ifeq ($(SYSTEM),Darwin)
$(GENDIR)/src/proto/grpc/testing/xds/v3/http_connection_manager.grpc.pb.cc: protoc_dep_error
else
-$(GENDIR)/src/proto/grpc/testing/xds/v3/http_connection_manager.pb.cc: src/proto/grpc/testing/xds/v3/http_connection_manager.proto $(PROTOBUF_DEP) $(PROTOC_PLUGINS) $(GENDIR)/src/proto/grpc/testing/xds/v3/config_source.pb.cc $(GENDIR)/src/proto/grpc/testing/xds/v3/route.pb.cc
+$(GENDIR)/src/proto/grpc/testing/xds/v3/http_connection_manager.pb.cc: src/proto/grpc/testing/xds/v3/http_connection_manager.proto $(PROTOBUF_DEP) $(PROTOC_PLUGINS) $(GENDIR)/src/proto/grpc/testing/xds/v3/config_source.pb.cc $(GENDIR)/src/proto/grpc/testing/xds/v3/protocol.pb.cc $(GENDIR)/src/proto/grpc/testing/xds/v3/route.pb.cc
$(E) "[PROTOC] Generating protobuf CC file from $<"
$(Q) mkdir -p `dirname $@`
$(Q) $(PROTOC) -Ithird_party/protobuf/src -I. --cpp_out=$(GENDIR) $<
-$(GENDIR)/src/proto/grpc/testing/xds/v3/http_connection_manager.grpc.pb.cc: src/proto/grpc/testing/xds/v3/http_connection_manager.proto $(GENDIR)/src/proto/grpc/testing/xds/v3/http_connection_manager.pb.cc $(PROTOBUF_DEP) $(PROTOC_PLUGINS) $(GENDIR)/src/proto/grpc/testing/xds/v3/config_source.pb.cc $(GENDIR)/src/proto/grpc/testing/xds/v3/config_source.grpc.pb.cc $(GENDIR)/src/proto/grpc/testing/xds/v3/route.pb.cc $(GENDIR)/src/proto/grpc/testing/xds/v3/route.grpc.pb.cc
+$(GENDIR)/src/proto/grpc/testing/xds/v3/http_connection_manager.grpc.pb.cc: src/proto/grpc/testing/xds/v3/http_connection_manager.proto $(GENDIR)/src/proto/grpc/testing/xds/v3/http_connection_manager.pb.cc $(PROTOBUF_DEP) $(PROTOC_PLUGINS) $(GENDIR)/src/proto/grpc/testing/xds/v3/config_source.pb.cc $(GENDIR)/src/proto/grpc/testing/xds/v3/config_source.grpc.pb.cc $(GENDIR)/src/proto/grpc/testing/xds/v3/protocol.pb.cc $(GENDIR)/src/proto/grpc/testing/xds/v3/protocol.grpc.pb.cc $(GENDIR)/src/proto/grpc/testing/xds/v3/route.pb.cc $(GENDIR)/src/proto/grpc/testing/xds/v3/route.grpc.pb.cc
$(E) "[GRPC] Generating gRPC's protobuf service CC file from $<"
$(Q) mkdir -p `dirname $@`
$(Q) $(PROTOC) -Ithird_party/protobuf/src -I. --grpc_out=$(GENDIR) --plugin=protoc-gen-grpc=$(PROTOC_PLUGINS_DIR)/grpc_cpp_plugin$(EXECUTABLE_SUFFIX) $<
endif
ifeq ($(NO_PROTOC),true)
+$(GENDIR)/src/proto/grpc/testing/xds/v3/protocol.pb.cc: protoc_dep_error
+$(GENDIR)/src/proto/grpc/testing/xds/v3/protocol.grpc.pb.cc: protoc_dep_error
+else
+
+$(GENDIR)/src/proto/grpc/testing/xds/v3/protocol.pb.cc: src/proto/grpc/testing/xds/v3/protocol.proto $(PROTOBUF_DEP) $(PROTOC_PLUGINS)
+ $(E) "[PROTOC] Generating protobuf CC file from $<"
+ $(Q) mkdir -p `dirname $@`
+ $(Q) $(PROTOC) -Ithird_party/protobuf/src -I. --cpp_out=$(GENDIR) $<
+
+$(GENDIR)/src/proto/grpc/testing/xds/v3/protocol.grpc.pb.cc: src/proto/grpc/testing/xds/v3/protocol.proto $(GENDIR)/src/proto/grpc/testing/xds/v3/protocol.pb.cc $(PROTOBUF_DEP) $(PROTOC_PLUGINS)
+ $(E) "[GRPC] Generating gRPC's protobuf service CC file from $<"
+ $(Q) mkdir -p `dirname $@`
+ $(Q) $(PROTOC) -Ithird_party/protobuf/src -I. --grpc_out=$(GENDIR) --plugin=protoc-gen-grpc=$(PROTOC_PLUGINS_DIR)/grpc_cpp_plugin$(EXECUTABLE_SUFFIX) $<
+endif
+
+ifeq ($(NO_PROTOC),true)
$(GENDIR)/src/proto/grpc/testing/xds/v3/range.pb.cc: protoc_dep_error
$(GENDIR)/src/proto/grpc/testing/xds/v3/range.grpc.pb.cc: protoc_dep_error
else
ifeq ($(SYSTEM),Darwin)
$(Q) $(LDXX) $(LDFLAGS) -L$(LIBDIR)/$(CONFIG) -install_name $(SHARED_PREFIX)address_sorting$(SHARED_VERSION_CORE).$(SHARED_EXT_CORE) -dynamiclib -o $(LIBDIR)/$(CONFIG)/libaddress_sorting$(SHARED_VERSION_CORE).$(SHARED_EXT_CORE) $(LIBADDRESS_SORTING_OBJS) $(ZLIB_MERGE_LIBS) $(CARES_MERGE_LIBS) $(ADDRESS_SORTING_MERGE_LIBS) $(RE2_MERGE_LIBS) $(UPB_MERGE_LIBS) $(GRPC_ABSEIL_MERGE_LIBS) $(LDLIBS)
else
- $(Q) $(LDXX) $(LDFLAGS) -L$(LIBDIR)/$(CONFIG) -shared -Wl,-soname,libaddress_sorting.so.13 -o $(LIBDIR)/$(CONFIG)/libaddress_sorting$(SHARED_VERSION_CORE).$(SHARED_EXT_CORE) $(LIBADDRESS_SORTING_OBJS) $(ZLIB_MERGE_LIBS) $(CARES_MERGE_LIBS) $(ADDRESS_SORTING_MERGE_LIBS) $(RE2_MERGE_LIBS) $(UPB_MERGE_LIBS) $(GRPC_ABSEIL_MERGE_LIBS) $(LDLIBS)
- $(Q) ln -sf $(SHARED_PREFIX)address_sorting$(SHARED_VERSION_CORE).$(SHARED_EXT_CORE) $(LIBDIR)/$(CONFIG)/libaddress_sorting$(SHARED_VERSION_CORE).so.13
+ $(Q) $(LDXX) $(LDFLAGS) -L$(LIBDIR)/$(CONFIG) -shared -Wl,-soname,libaddress_sorting.so.14 -o $(LIBDIR)/$(CONFIG)/libaddress_sorting$(SHARED_VERSION_CORE).$(SHARED_EXT_CORE) $(LIBADDRESS_SORTING_OBJS) $(ZLIB_MERGE_LIBS) $(CARES_MERGE_LIBS) $(ADDRESS_SORTING_MERGE_LIBS) $(RE2_MERGE_LIBS) $(UPB_MERGE_LIBS) $(GRPC_ABSEIL_MERGE_LIBS) $(LDLIBS)
+ $(Q) ln -sf $(SHARED_PREFIX)address_sorting$(SHARED_VERSION_CORE).$(SHARED_EXT_CORE) $(LIBDIR)/$(CONFIG)/libaddress_sorting$(SHARED_VERSION_CORE).so.14
$(Q) ln -sf $(SHARED_PREFIX)address_sorting$(SHARED_VERSION_CORE).$(SHARED_EXT_CORE) $(LIBDIR)/$(CONFIG)/libaddress_sorting$(SHARED_VERSION_CORE).so
endif
endif
src/core/lib/gpr/tmpfile_windows.cc \
src/core/lib/gpr/wrap_memcpy.cc \
src/core/lib/gprpp/arena.cc \
+ src/core/lib/gprpp/examine_stack.cc \
src/core/lib/gprpp/fork.cc \
src/core/lib/gprpp/global_config_env.cc \
src/core/lib/gprpp/host_port.cc \
src/core/lib/gprpp/mpscq.cc \
+ src/core/lib/gprpp/stat_posix.cc \
+ src/core/lib/gprpp/stat_windows.cc \
src/core/lib/gprpp/thd_posix.cc \
src/core/lib/gprpp/thd_windows.cc \
src/core/lib/profiling/basic_timers.cc \
ifeq ($(SYSTEM),Darwin)
$(Q) $(LDXX) $(LDFLAGS) -L$(LIBDIR)/$(CONFIG) -install_name $(SHARED_PREFIX)gpr$(SHARED_VERSION_CORE).$(SHARED_EXT_CORE) -dynamiclib -o $(LIBDIR)/$(CONFIG)/libgpr$(SHARED_VERSION_CORE).$(SHARED_EXT_CORE) $(LIBGPR_OBJS) $(ZLIB_MERGE_LIBS) $(CARES_MERGE_LIBS) $(ADDRESS_SORTING_MERGE_LIBS) $(RE2_MERGE_LIBS) $(UPB_MERGE_LIBS) $(GRPC_ABSEIL_MERGE_LIBS) $(LDLIBS)
else
- $(Q) $(LDXX) $(LDFLAGS) -L$(LIBDIR)/$(CONFIG) -shared -Wl,-soname,libgpr.so.13 -o $(LIBDIR)/$(CONFIG)/libgpr$(SHARED_VERSION_CORE).$(SHARED_EXT_CORE) $(LIBGPR_OBJS) $(ZLIB_MERGE_LIBS) $(CARES_MERGE_LIBS) $(ADDRESS_SORTING_MERGE_LIBS) $(RE2_MERGE_LIBS) $(UPB_MERGE_LIBS) $(GRPC_ABSEIL_MERGE_LIBS) $(LDLIBS)
- $(Q) ln -sf $(SHARED_PREFIX)gpr$(SHARED_VERSION_CORE).$(SHARED_EXT_CORE) $(LIBDIR)/$(CONFIG)/libgpr$(SHARED_VERSION_CORE).so.13
+ $(Q) $(LDXX) $(LDFLAGS) -L$(LIBDIR)/$(CONFIG) -shared -Wl,-soname,libgpr.so.14 -o $(LIBDIR)/$(CONFIG)/libgpr$(SHARED_VERSION_CORE).$(SHARED_EXT_CORE) $(LIBGPR_OBJS) $(ZLIB_MERGE_LIBS) $(CARES_MERGE_LIBS) $(ADDRESS_SORTING_MERGE_LIBS) $(RE2_MERGE_LIBS) $(UPB_MERGE_LIBS) $(GRPC_ABSEIL_MERGE_LIBS) $(LDLIBS)
+ $(Q) ln -sf $(SHARED_PREFIX)gpr$(SHARED_VERSION_CORE).$(SHARED_EXT_CORE) $(LIBDIR)/$(CONFIG)/libgpr$(SHARED_VERSION_CORE).so.14
$(Q) ln -sf $(SHARED_PREFIX)gpr$(SHARED_VERSION_CORE).$(SHARED_EXT_CORE) $(LIBDIR)/$(CONFIG)/libgpr$(SHARED_VERSION_CORE).so
endif
endif
src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc \
src/core/ext/filters/client_channel/lb_policy/xds/cds.cc \
src/core/ext/filters/client_channel/lb_policy/xds/eds.cc \
- src/core/ext/filters/client_channel/lb_policy/xds/eds_drop.cc \
+ src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc \
src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc \
src/core/ext/filters/client_channel/lb_policy_registry.cc \
src/core/ext/filters/client_channel/local_subchannel_pool.cc \
src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.c \
src/core/ext/upb-generated/google/api/http.upb.c \
src/core/ext/upb-generated/google/protobuf/any.upb.c \
- src/core/ext/upb-generated/google/protobuf/descriptor.upb.c \
src/core/ext/upb-generated/google/protobuf/duration.upb.c \
src/core/ext/upb-generated/google/protobuf/empty.upb.c \
src/core/ext/upb-generated/google/protobuf/struct.upb.c \
src/core/ext/upb-generated/udpa/core/v1/resource_name.upb.c \
src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.c \
src/core/ext/upb-generated/validate/validate.upb.c \
+ src/core/ext/upbdefs-generated/envoy/annotations/deprecation.upbdefs.c \
+ src/core/ext/upbdefs-generated/envoy/annotations/resource.upbdefs.c \
+ src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.c \
+ src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.c \
+ src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c \
+ src/core/ext/upbdefs-generated/envoy/config/cluster/v3/filter.upbdefs.c \
+ src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.c \
+ src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.c \
+ src/core/ext/upbdefs-generated/envoy/config/core/v3/backoff.upbdefs.c \
+ src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.c \
+ src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.c \
+ src/core/ext/upbdefs-generated/envoy/config/core/v3/event_service_config.upbdefs.c \
+ src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.c \
+ src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_service.upbdefs.c \
+ src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.c \
+ src/core/ext/upbdefs-generated/envoy/config/core/v3/http_uri.upbdefs.c \
+ src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c \
+ src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.c \
+ src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.c \
+ src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.c \
+ src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.c \
+ src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.c \
+ src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/load_report.upbdefs.c \
+ src/core/ext/upbdefs-generated/envoy/config/listener/v3/api_listener.upbdefs.c \
+ src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.c \
+ src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.c \
+ src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.c \
+ src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.c \
+ src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c \
+ src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.c \
+ src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.c \
+ src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c \
+ src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.c \
+ src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c \
+ src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.c \
+ src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c \
+ src/core/ext/upbdefs-generated/envoy/service/cluster/v3/cds.upbdefs.c \
+ src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.c \
+ src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.c \
+ src/core/ext/upbdefs-generated/envoy/service/endpoint/v3/eds.upbdefs.c \
+ src/core/ext/upbdefs-generated/envoy/service/listener/v3/lds.upbdefs.c \
+ src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.c \
+ src/core/ext/upbdefs-generated/envoy/service/route/v3/rds.upbdefs.c \
+ src/core/ext/upbdefs-generated/envoy/service/route/v3/srds.upbdefs.c \
+ src/core/ext/upbdefs-generated/envoy/type/matcher/v3/metadata.upbdefs.c \
+ src/core/ext/upbdefs-generated/envoy/type/matcher/v3/number.upbdefs.c \
+ src/core/ext/upbdefs-generated/envoy/type/matcher/v3/path.upbdefs.c \
+ src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.c \
+ src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.c \
+ src/core/ext/upbdefs-generated/envoy/type/matcher/v3/value.upbdefs.c \
+ src/core/ext/upbdefs-generated/envoy/type/metadata/v3/metadata.upbdefs.c \
+ src/core/ext/upbdefs-generated/envoy/type/tracing/v3/custom_tag.upbdefs.c \
+ src/core/ext/upbdefs-generated/envoy/type/v3/http.upbdefs.c \
+ src/core/ext/upbdefs-generated/envoy/type/v3/percent.upbdefs.c \
+ src/core/ext/upbdefs-generated/envoy/type/v3/range.upbdefs.c \
+ src/core/ext/upbdefs-generated/envoy/type/v3/semantic_version.upbdefs.c \
+ src/core/ext/upbdefs-generated/google/api/annotations.upbdefs.c \
+ src/core/ext/upbdefs-generated/google/api/http.upbdefs.c \
+ src/core/ext/upbdefs-generated/google/protobuf/any.upbdefs.c \
+ src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.c \
+ src/core/ext/upbdefs-generated/google/protobuf/duration.upbdefs.c \
+ src/core/ext/upbdefs-generated/google/protobuf/empty.upbdefs.c \
+ src/core/ext/upbdefs-generated/google/protobuf/struct.upbdefs.c \
+ src/core/ext/upbdefs-generated/google/protobuf/timestamp.upbdefs.c \
+ src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.c \
+ src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.c \
+ src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.c \
+ src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.c \
+ src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.c \
+ src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.c \
+ src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.c \
+ src/core/ext/upbdefs-generated/udpa/core/v1/authority.upbdefs.c \
+ src/core/ext/upbdefs-generated/udpa/core/v1/collection_entry.upbdefs.c \
+ src/core/ext/upbdefs-generated/udpa/core/v1/context_params.upbdefs.c \
+ src/core/ext/upbdefs-generated/udpa/core/v1/resource.upbdefs.c \
+ src/core/ext/upbdefs-generated/udpa/core/v1/resource_locator.upbdefs.c \
+ src/core/ext/upbdefs-generated/udpa/core/v1/resource_name.upbdefs.c \
+ src/core/ext/upbdefs-generated/validate/validate.upbdefs.c \
src/core/ext/xds/certificate_provider_registry.cc \
+ src/core/ext/xds/certificate_provider_store.cc \
+ src/core/ext/xds/file_watcher_certificate_provider_factory.cc \
src/core/ext/xds/google_mesh_ca_certificate_provider_factory.cc \
src/core/ext/xds/xds_api.cc \
src/core/ext/xds/xds_bootstrap.cc \
+ src/core/ext/xds/xds_certificate_provider.cc \
src/core/ext/xds/xds_client.cc \
src/core/ext/xds/xds_client_stats.cc \
src/core/lib/avl/avl.cc \
src/core/lib/security/credentials/composite/composite_credentials.cc \
src/core/lib/security/credentials/credentials.cc \
src/core/lib/security/credentials/credentials_metadata.cc \
+ src/core/lib/security/credentials/external/aws_request_signer.cc \
+ src/core/lib/security/credentials/external/external_account_credentials.cc \
+ src/core/lib/security/credentials/external/file_external_account_credentials.cc \
+ src/core/lib/security/credentials/external/url_external_account_credentials.cc \
src/core/lib/security/credentials/fake/fake_credentials.cc \
src/core/lib/security/credentials/google_default/credentials_generic.cc \
src/core/lib/security/credentials/google_default/google_default_credentials.cc \
src/core/lib/security/credentials/iam/iam_credentials.cc \
+ src/core/lib/security/credentials/insecure/insecure_credentials.cc \
src/core/lib/security/credentials/jwt/json_token.cc \
src/core/lib/security/credentials/jwt/jwt_credentials.cc \
src/core/lib/security/credentials/jwt/jwt_verifier.cc \
src/core/lib/security/credentials/plugin/plugin_credentials.cc \
src/core/lib/security/credentials/ssl/ssl_credentials.cc \
src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc \
+ src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc \
src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc \
src/core/lib/security/credentials/tls/tls_credentials.cc \
src/core/lib/security/credentials/xds/xds_credentials.cc \
src/core/lib/security/security_connector/alts/alts_security_connector.cc \
src/core/lib/security/security_connector/fake/fake_security_connector.cc \
+ src/core/lib/security/security_connector/insecure/insecure_security_connector.cc \
src/core/lib/security/security_connector/load_system_roots_fallback.cc \
src/core/lib/security/security_connector/load_system_roots_linux.cc \
src/core/lib/security/security_connector/local/local_security_connector.cc \
ifeq ($(SYSTEM),Darwin)
$(Q) $(LDXX) $(LDFLAGS) -L$(LIBDIR)/$(CONFIG) -install_name $(SHARED_PREFIX)grpc$(SHARED_VERSION_CORE).$(SHARED_EXT_CORE) -dynamiclib -o $(LIBDIR)/$(CONFIG)/libgrpc$(SHARED_VERSION_CORE).$(SHARED_EXT_CORE) $(LIBGRPC_OBJS) $(LIBDIR)/$(CONFIG)/libgpr.a $(LIBDIR)/$(CONFIG)/libaddress_sorting.a $(LIBDIR)/$(CONFIG)/libupb.a $(OPENSSL_MERGE_LIBS) $(LDLIBS_SECURE) $(ZLIB_MERGE_LIBS) $(CARES_MERGE_LIBS) $(ADDRESS_SORTING_MERGE_LIBS) $(RE2_MERGE_LIBS) $(UPB_MERGE_LIBS) $(GRPC_ABSEIL_MERGE_LIBS) $(LDLIBS)
else
- $(Q) $(LDXX) $(LDFLAGS) -L$(LIBDIR)/$(CONFIG) -shared -Wl,-soname,libgrpc.so.13 -o $(LIBDIR)/$(CONFIG)/libgrpc$(SHARED_VERSION_CORE).$(SHARED_EXT_CORE) $(LIBGRPC_OBJS) $(LIBDIR)/$(CONFIG)/libgpr.a $(LIBDIR)/$(CONFIG)/libaddress_sorting.a $(LIBDIR)/$(CONFIG)/libupb.a $(OPENSSL_MERGE_LIBS) $(LDLIBS_SECURE) $(ZLIB_MERGE_LIBS) $(CARES_MERGE_LIBS) $(ADDRESS_SORTING_MERGE_LIBS) $(RE2_MERGE_LIBS) $(UPB_MERGE_LIBS) $(GRPC_ABSEIL_MERGE_LIBS) $(LDLIBS)
- $(Q) ln -sf $(SHARED_PREFIX)grpc$(SHARED_VERSION_CORE).$(SHARED_EXT_CORE) $(LIBDIR)/$(CONFIG)/libgrpc$(SHARED_VERSION_CORE).so.13
+ $(Q) $(LDXX) $(LDFLAGS) -L$(LIBDIR)/$(CONFIG) -shared -Wl,-soname,libgrpc.so.14 -o $(LIBDIR)/$(CONFIG)/libgrpc$(SHARED_VERSION_CORE).$(SHARED_EXT_CORE) $(LIBGRPC_OBJS) $(LIBDIR)/$(CONFIG)/libgpr.a $(LIBDIR)/$(CONFIG)/libaddress_sorting.a $(LIBDIR)/$(CONFIG)/libupb.a $(OPENSSL_MERGE_LIBS) $(LDLIBS_SECURE) $(ZLIB_MERGE_LIBS) $(CARES_MERGE_LIBS) $(ADDRESS_SORTING_MERGE_LIBS) $(RE2_MERGE_LIBS) $(UPB_MERGE_LIBS) $(GRPC_ABSEIL_MERGE_LIBS) $(LDLIBS)
+ $(Q) ln -sf $(SHARED_PREFIX)grpc$(SHARED_VERSION_CORE).$(SHARED_EXT_CORE) $(LIBDIR)/$(CONFIG)/libgrpc$(SHARED_VERSION_CORE).so.14
$(Q) ln -sf $(SHARED_PREFIX)grpc$(SHARED_VERSION_CORE).$(SHARED_EXT_CORE) $(LIBDIR)/$(CONFIG)/libgrpc$(SHARED_VERSION_CORE).so
endif
endif
ifeq ($(SYSTEM),Darwin)
$(Q) $(LDXX) $(LDFLAGS) -L$(LIBDIR)/$(CONFIG) -install_name $(SHARED_PREFIX)grpc_csharp_ext$(SHARED_VERSION_CORE).$(SHARED_EXT_CORE) -dynamiclib -o $(LIBDIR)/$(CONFIG)/libgrpc_csharp_ext$(SHARED_VERSION_CORE).$(SHARED_EXT_CORE) $(LIBGRPC_CSHARP_EXT_OBJS) $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr.a $(LIBDIR)/$(CONFIG)/libaddress_sorting.a $(LIBDIR)/$(CONFIG)/libupb.a $(ZLIB_MERGE_LIBS) $(CARES_MERGE_LIBS) $(ADDRESS_SORTING_MERGE_LIBS) $(RE2_MERGE_LIBS) $(UPB_MERGE_LIBS) $(GRPC_ABSEIL_MERGE_LIBS) $(LDLIBS)
else
- $(Q) $(LDXX) $(LDFLAGS) -L$(LIBDIR)/$(CONFIG) -shared -Wl,-soname,libgrpc_csharp_ext.so.13 -o $(LIBDIR)/$(CONFIG)/libgrpc_csharp_ext$(SHARED_VERSION_CORE).$(SHARED_EXT_CORE) $(LIBGRPC_CSHARP_EXT_OBJS) $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr.a $(LIBDIR)/$(CONFIG)/libaddress_sorting.a $(LIBDIR)/$(CONFIG)/libupb.a $(ZLIB_MERGE_LIBS) $(CARES_MERGE_LIBS) $(ADDRESS_SORTING_MERGE_LIBS) $(RE2_MERGE_LIBS) $(UPB_MERGE_LIBS) $(GRPC_ABSEIL_MERGE_LIBS) $(LDLIBS)
- $(Q) ln -sf $(SHARED_PREFIX)grpc_csharp_ext$(SHARED_VERSION_CORE).$(SHARED_EXT_CORE) $(LIBDIR)/$(CONFIG)/libgrpc_csharp_ext$(SHARED_VERSION_CORE).so.13
+ $(Q) $(LDXX) $(LDFLAGS) -L$(LIBDIR)/$(CONFIG) -shared -Wl,-soname,libgrpc_csharp_ext.so.14 -o $(LIBDIR)/$(CONFIG)/libgrpc_csharp_ext$(SHARED_VERSION_CORE).$(SHARED_EXT_CORE) $(LIBGRPC_CSHARP_EXT_OBJS) $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr.a $(LIBDIR)/$(CONFIG)/libaddress_sorting.a $(LIBDIR)/$(CONFIG)/libupb.a $(ZLIB_MERGE_LIBS) $(CARES_MERGE_LIBS) $(ADDRESS_SORTING_MERGE_LIBS) $(RE2_MERGE_LIBS) $(UPB_MERGE_LIBS) $(GRPC_ABSEIL_MERGE_LIBS) $(LDLIBS)
+ $(Q) ln -sf $(SHARED_PREFIX)grpc_csharp_ext$(SHARED_VERSION_CORE).$(SHARED_EXT_CORE) $(LIBDIR)/$(CONFIG)/libgrpc_csharp_ext$(SHARED_VERSION_CORE).so.14
$(Q) ln -sf $(SHARED_PREFIX)grpc_csharp_ext$(SHARED_VERSION_CORE).$(SHARED_EXT_CORE) $(LIBDIR)/$(CONFIG)/libgrpc_csharp_ext$(SHARED_VERSION_CORE).so
endif
endif
src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.c \
src/core/ext/upb-generated/google/api/http.upb.c \
src/core/ext/upb-generated/google/protobuf/any.upb.c \
- src/core/ext/upb-generated/google/protobuf/descriptor.upb.c \
src/core/ext/upb-generated/google/protobuf/duration.upb.c \
src/core/ext/upb-generated/google/protobuf/empty.upb.c \
src/core/ext/upb-generated/google/protobuf/struct.upb.c \
ifeq ($(SYSTEM),Darwin)
$(Q) $(LDXX) $(LDFLAGS) -L$(LIBDIR)/$(CONFIG) -install_name $(SHARED_PREFIX)grpc_unsecure$(SHARED_VERSION_CORE).$(SHARED_EXT_CORE) -dynamiclib -o $(LIBDIR)/$(CONFIG)/libgrpc_unsecure$(SHARED_VERSION_CORE).$(SHARED_EXT_CORE) $(LIBGRPC_UNSECURE_OBJS) $(LIBDIR)/$(CONFIG)/libgpr.a $(LIBDIR)/$(CONFIG)/libaddress_sorting.a $(LIBDIR)/$(CONFIG)/libupb.a $(ZLIB_MERGE_LIBS) $(CARES_MERGE_LIBS) $(ADDRESS_SORTING_MERGE_LIBS) $(RE2_MERGE_LIBS) $(UPB_MERGE_LIBS) $(GRPC_ABSEIL_MERGE_LIBS) $(LDLIBS)
else
- $(Q) $(LDXX) $(LDFLAGS) -L$(LIBDIR)/$(CONFIG) -shared -Wl,-soname,libgrpc_unsecure.so.13 -o $(LIBDIR)/$(CONFIG)/libgrpc_unsecure$(SHARED_VERSION_CORE).$(SHARED_EXT_CORE) $(LIBGRPC_UNSECURE_OBJS) $(LIBDIR)/$(CONFIG)/libgpr.a $(LIBDIR)/$(CONFIG)/libaddress_sorting.a $(LIBDIR)/$(CONFIG)/libupb.a $(ZLIB_MERGE_LIBS) $(CARES_MERGE_LIBS) $(ADDRESS_SORTING_MERGE_LIBS) $(RE2_MERGE_LIBS) $(UPB_MERGE_LIBS) $(GRPC_ABSEIL_MERGE_LIBS) $(LDLIBS)
- $(Q) ln -sf $(SHARED_PREFIX)grpc_unsecure$(SHARED_VERSION_CORE).$(SHARED_EXT_CORE) $(LIBDIR)/$(CONFIG)/libgrpc_unsecure$(SHARED_VERSION_CORE).so.13
+ $(Q) $(LDXX) $(LDFLAGS) -L$(LIBDIR)/$(CONFIG) -shared -Wl,-soname,libgrpc_unsecure.so.14 -o $(LIBDIR)/$(CONFIG)/libgrpc_unsecure$(SHARED_VERSION_CORE).$(SHARED_EXT_CORE) $(LIBGRPC_UNSECURE_OBJS) $(LIBDIR)/$(CONFIG)/libgpr.a $(LIBDIR)/$(CONFIG)/libaddress_sorting.a $(LIBDIR)/$(CONFIG)/libupb.a $(ZLIB_MERGE_LIBS) $(CARES_MERGE_LIBS) $(ADDRESS_SORTING_MERGE_LIBS) $(RE2_MERGE_LIBS) $(UPB_MERGE_LIBS) $(GRPC_ABSEIL_MERGE_LIBS) $(LDLIBS)
+ $(Q) ln -sf $(SHARED_PREFIX)grpc_unsecure$(SHARED_VERSION_CORE).$(SHARED_EXT_CORE) $(LIBDIR)/$(CONFIG)/libgrpc_unsecure$(SHARED_VERSION_CORE).so.14
$(Q) ln -sf $(SHARED_PREFIX)grpc_unsecure$(SHARED_VERSION_CORE).$(SHARED_EXT_CORE) $(LIBDIR)/$(CONFIG)/libgrpc_unsecure$(SHARED_VERSION_CORE).so
endif
endif
src/cpp/client/credentials_cc.cc \
src/cpp/client/insecure_credentials.cc \
src/cpp/client/secure_credentials.cc \
+ src/cpp/client/xds_credentials.cc \
src/cpp/codegen/codegen_init.cc \
src/cpp/common/alarm.cc \
src/cpp/common/auth_property_iterator.cc \
src/cpp/common/secure_auth_context.cc \
src/cpp/common/secure_channel_arguments.cc \
src/cpp/common/secure_create_auth_context.cc \
+ src/cpp/common/tls_certificate_provider.cc \
src/cpp/common/tls_credentials_options.cc \
src/cpp/common/tls_credentials_options_util.cc \
src/cpp/common/validate_service_config.cc \
include/grpcpp/security/auth_metadata_processor.h \
include/grpcpp/security/credentials.h \
include/grpcpp/security/server_credentials.h \
+ include/grpcpp/security/tls_certificate_provider.h \
include/grpcpp/security/tls_credentials_options.h \
include/grpcpp/server.h \
include/grpcpp/server_builder.h \
include/grpcpp/security/auth_metadata_processor.h \
include/grpcpp/security/credentials.h \
include/grpcpp/security/server_credentials.h \
+ include/grpcpp/security/tls_certificate_provider.h \
include/grpcpp/security/tls_credentials_options.h \
include/grpcpp/server.h \
include/grpcpp/server_builder.h \
PUBLIC_HEADERS_CXX += \
include/grpcpp/ext/channelz_service_plugin.h \
- include/grpcpp/ext/channelz_service_plugin_impl.h \
LIBGRPCPP_CHANNELZ_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(LIBGRPCPP_CHANNELZ_SRC))))
third_party/boringssl-with-bazel/src/crypto/thread_win.c \
third_party/boringssl-with-bazel/src/crypto/trust_token/pmbtoken.c \
third_party/boringssl-with-bazel/src/crypto/trust_token/trust_token.c \
+ third_party/boringssl-with-bazel/src/crypto/trust_token/voprf.c \
third_party/boringssl-with-bazel/src/crypto/x509/a_digest.c \
third_party/boringssl-with-bazel/src/crypto/x509/a_sign.c \
third_party/boringssl-with-bazel/src/crypto/x509/a_strex.c \
LIBBORINGSSL_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(LIBBORINGSSL_SRC))))
+$(LIBBORINGSSL_OBJS): CFLAGS += -g
$(LIBBORINGSSL_OBJS): CPPFLAGS += -Ithird_party/boringssl-with-bazel/src/include -fvisibility=hidden -DOPENSSL_NO_ASM -D_GNU_SOURCE -DWIN32_LEAN_AND_MEAN -D_HAS_EXCEPTIONS=0 -DNOMINMAX
$(LIBBORINGSSL_OBJS): CXXFLAGS += -fno-exceptions
-$(LIBBORINGSSL_OBJS): CFLAGS += -g
$(LIBDIR)/$(CONFIG)/libboringssl.a: $(ZLIB_DEP) $(CARES_DEP) $(ADDRESS_SORTING_DEP) $(RE2_DEP) $(UPB_DEP) $(GRPC_ABSEIL_DEP) $(LIBBORINGSSL_OBJS)
$(E) "[AR] Creating $@"
third_party/upb/upb/port.c \
third_party/upb/upb/table.c \
third_party/upb/upb/upb.c \
+ third_party/upb/upb/def.c \
+ third_party/upb/upb/reflection.c \
+ third_party/upb/upb/text_encode.c \
+ src/core/ext/upb-generated/google/protobuf/any.upb.c \
+ src/core/ext/upb-generated/google/protobuf/descriptor.upb.c \
+ src/core/ext/upb-generated/google/protobuf/duration.upb.c \
+ src/core/ext/upb-generated/google/protobuf/empty.upb.c \
+ src/core/ext/upb-generated/google/protobuf/struct.upb.c \
+ src/core/ext/upb-generated/google/protobuf/timestamp.upb.c \
+ src/core/ext/upb-generated/google/protobuf/wrappers.upb.c \
+ src/core/ext/upbdefs-generated/google/protobuf/any.upbdefs.c \
+ src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.c \
+ src/core/ext/upbdefs-generated/google/protobuf/duration.upbdefs.c \
+ src/core/ext/upbdefs-generated/google/protobuf/empty.upbdefs.c \
+ src/core/ext/upbdefs-generated/google/protobuf/struct.upbdefs.c \
+ src/core/ext/upbdefs-generated/google/protobuf/timestamp.upbdefs.c \
+ src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.c \
PUBLIC_HEADERS_C += \
ifeq ($(SYSTEM),Darwin)
$(Q) $(LDXX) $(LDFLAGS) -L$(LIBDIR)/$(CONFIG) -install_name $(SHARED_PREFIX)upb$(SHARED_VERSION_CORE).$(SHARED_EXT_CORE) -dynamiclib -o $(LIBDIR)/$(CONFIG)/libupb$(SHARED_VERSION_CORE).$(SHARED_EXT_CORE) $(LIBUPB_OBJS) $(ZLIB_MERGE_LIBS) $(CARES_MERGE_LIBS) $(ADDRESS_SORTING_MERGE_LIBS) $(RE2_MERGE_LIBS) $(UPB_MERGE_LIBS) $(GRPC_ABSEIL_MERGE_LIBS) $(LDLIBS)
else
- $(Q) $(LDXX) $(LDFLAGS) -L$(LIBDIR)/$(CONFIG) -shared -Wl,-soname,libupb.so.13 -o $(LIBDIR)/$(CONFIG)/libupb$(SHARED_VERSION_CORE).$(SHARED_EXT_CORE) $(LIBUPB_OBJS) $(ZLIB_MERGE_LIBS) $(CARES_MERGE_LIBS) $(ADDRESS_SORTING_MERGE_LIBS) $(RE2_MERGE_LIBS) $(UPB_MERGE_LIBS) $(GRPC_ABSEIL_MERGE_LIBS) $(LDLIBS)
- $(Q) ln -sf $(SHARED_PREFIX)upb$(SHARED_VERSION_CORE).$(SHARED_EXT_CORE) $(LIBDIR)/$(CONFIG)/libupb$(SHARED_VERSION_CORE).so.13
+ $(Q) $(LDXX) $(LDFLAGS) -L$(LIBDIR)/$(CONFIG) -shared -Wl,-soname,libupb.so.14 -o $(LIBDIR)/$(CONFIG)/libupb$(SHARED_VERSION_CORE).$(SHARED_EXT_CORE) $(LIBUPB_OBJS) $(ZLIB_MERGE_LIBS) $(CARES_MERGE_LIBS) $(ADDRESS_SORTING_MERGE_LIBS) $(RE2_MERGE_LIBS) $(UPB_MERGE_LIBS) $(GRPC_ABSEIL_MERGE_LIBS) $(LDLIBS)
+ $(Q) ln -sf $(SHARED_PREFIX)upb$(SHARED_VERSION_CORE).$(SHARED_EXT_CORE) $(LIBDIR)/$(CONFIG)/libupb$(SHARED_VERSION_CORE).so.14
$(Q) ln -sf $(SHARED_PREFIX)upb$(SHARED_VERSION_CORE).$(SHARED_EXT_CORE) $(LIBDIR)/$(CONFIG)/libupb$(SHARED_VERSION_CORE).so
endif
endif
LIBARES_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(LIBARES_SRC))))
-$(LIBARES_OBJS): CPPFLAGS += -Ithird_party/cares -Ithird_party/cares/cares -fvisibility=hidden -D_GNU_SOURCE $(if $(subst Darwin,,$(SYSTEM)),,-Ithird_party/cares/config_darwin) $(if $(subst FreeBSD,,$(SYSTEM)),,-Ithird_party/cares/config_freebsd) $(if $(subst Linux,,$(SYSTEM)),,-Ithird_party/cares/config_linux) $(if $(subst OpenBSD,,$(SYSTEM)),,-Ithird_party/cares/config_openbsd) -DWIN32_LEAN_AND_MEAN -D_HAS_EXCEPTIONS=0 -DNOMINMAX $(if $(subst MINGW32,,$(SYSTEM)),-DHAVE_CONFIG_H,)
$(LIBARES_OBJS): CFLAGS += -g
+$(LIBARES_OBJS): CPPFLAGS += -Ithird_party/cares -Ithird_party/cares/cares -fvisibility=hidden -D_GNU_SOURCE $(if $(subst Darwin,,$(SYSTEM)),,-Ithird_party/cares/config_darwin) $(if $(subst FreeBSD,,$(SYSTEM)),,-Ithird_party/cares/config_freebsd) $(if $(subst Linux,,$(SYSTEM)),,-Ithird_party/cares/config_linux) $(if $(subst OpenBSD,,$(SYSTEM)),,-Ithird_party/cares/config_openbsd) -DWIN32_LEAN_AND_MEAN -D_HAS_EXCEPTIONS=0 -DNOMINMAX $(if $(subst MINGW32,,$(SYSTEM)),-DHAVE_CONFIG_H,)
$(LIBDIR)/$(CONFIG)/libares.a: $(LIBARES_OBJS)
$(E) "[AR] Creating $@"
# start of build recipe for library "grpc_abseil" (generated by makelib(lib) template function)
LIBGRPC_ABSEIL_SRC = \
- third_party/abseil-cpp/absl/base/dynamic_annotations.cc \
third_party/abseil-cpp/absl/base/internal/cycleclock.cc \
third_party/abseil-cpp/absl/base/internal/exponential_biased.cc \
third_party/abseil-cpp/absl/base/internal/low_level_alloc.cc \
src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc: $(OPENSSL_DEP)
src/core/ext/filters/client_channel/lb_policy/xds/cds.cc: $(OPENSSL_DEP)
src/core/ext/filters/client_channel/lb_policy/xds/eds.cc: $(OPENSSL_DEP)
-src/core/ext/filters/client_channel/lb_policy/xds/eds_drop.cc: $(OPENSSL_DEP)
+src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc: $(OPENSSL_DEP)
src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc: $(OPENSSL_DEP)
src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc: $(OPENSSL_DEP)
src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc: $(OPENSSL_DEP)
src/core/ext/upb-generated/udpa/core/v1/resource.upb.c: $(OPENSSL_DEP)
src/core/ext/upb-generated/udpa/core/v1/resource_locator.upb.c: $(OPENSSL_DEP)
src/core/ext/upb-generated/udpa/core/v1/resource_name.upb.c: $(OPENSSL_DEP)
+src/core/ext/upbdefs-generated/envoy/annotations/deprecation.upbdefs.c: $(OPENSSL_DEP)
+src/core/ext/upbdefs-generated/envoy/annotations/resource.upbdefs.c: $(OPENSSL_DEP)
+src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.c: $(OPENSSL_DEP)
+src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.c: $(OPENSSL_DEP)
+src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c: $(OPENSSL_DEP)
+src/core/ext/upbdefs-generated/envoy/config/cluster/v3/filter.upbdefs.c: $(OPENSSL_DEP)
+src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.c: $(OPENSSL_DEP)
+src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.c: $(OPENSSL_DEP)
+src/core/ext/upbdefs-generated/envoy/config/core/v3/backoff.upbdefs.c: $(OPENSSL_DEP)
+src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.c: $(OPENSSL_DEP)
+src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.c: $(OPENSSL_DEP)
+src/core/ext/upbdefs-generated/envoy/config/core/v3/event_service_config.upbdefs.c: $(OPENSSL_DEP)
+src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.c: $(OPENSSL_DEP)
+src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_service.upbdefs.c: $(OPENSSL_DEP)
+src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.c: $(OPENSSL_DEP)
+src/core/ext/upbdefs-generated/envoy/config/core/v3/http_uri.upbdefs.c: $(OPENSSL_DEP)
+src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c: $(OPENSSL_DEP)
+src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.c: $(OPENSSL_DEP)
+src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.c: $(OPENSSL_DEP)
+src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.c: $(OPENSSL_DEP)
+src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.c: $(OPENSSL_DEP)
+src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.c: $(OPENSSL_DEP)
+src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/load_report.upbdefs.c: $(OPENSSL_DEP)
+src/core/ext/upbdefs-generated/envoy/config/listener/v3/api_listener.upbdefs.c: $(OPENSSL_DEP)
+src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.c: $(OPENSSL_DEP)
+src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.c: $(OPENSSL_DEP)
+src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.c: $(OPENSSL_DEP)
+src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.c: $(OPENSSL_DEP)
+src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c: $(OPENSSL_DEP)
+src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.c: $(OPENSSL_DEP)
+src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.c: $(OPENSSL_DEP)
+src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c: $(OPENSSL_DEP)
+src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.c: $(OPENSSL_DEP)
+src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c: $(OPENSSL_DEP)
+src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.c: $(OPENSSL_DEP)
+src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c: $(OPENSSL_DEP)
+src/core/ext/upbdefs-generated/envoy/service/cluster/v3/cds.upbdefs.c: $(OPENSSL_DEP)
+src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.c: $(OPENSSL_DEP)
+src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.c: $(OPENSSL_DEP)
+src/core/ext/upbdefs-generated/envoy/service/endpoint/v3/eds.upbdefs.c: $(OPENSSL_DEP)
+src/core/ext/upbdefs-generated/envoy/service/listener/v3/lds.upbdefs.c: $(OPENSSL_DEP)
+src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.c: $(OPENSSL_DEP)
+src/core/ext/upbdefs-generated/envoy/service/route/v3/rds.upbdefs.c: $(OPENSSL_DEP)
+src/core/ext/upbdefs-generated/envoy/service/route/v3/srds.upbdefs.c: $(OPENSSL_DEP)
+src/core/ext/upbdefs-generated/envoy/type/matcher/v3/metadata.upbdefs.c: $(OPENSSL_DEP)
+src/core/ext/upbdefs-generated/envoy/type/matcher/v3/number.upbdefs.c: $(OPENSSL_DEP)
+src/core/ext/upbdefs-generated/envoy/type/matcher/v3/path.upbdefs.c: $(OPENSSL_DEP)
+src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.c: $(OPENSSL_DEP)
+src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.c: $(OPENSSL_DEP)
+src/core/ext/upbdefs-generated/envoy/type/matcher/v3/value.upbdefs.c: $(OPENSSL_DEP)
+src/core/ext/upbdefs-generated/envoy/type/metadata/v3/metadata.upbdefs.c: $(OPENSSL_DEP)
+src/core/ext/upbdefs-generated/envoy/type/tracing/v3/custom_tag.upbdefs.c: $(OPENSSL_DEP)
+src/core/ext/upbdefs-generated/envoy/type/v3/http.upbdefs.c: $(OPENSSL_DEP)
+src/core/ext/upbdefs-generated/envoy/type/v3/percent.upbdefs.c: $(OPENSSL_DEP)
+src/core/ext/upbdefs-generated/envoy/type/v3/range.upbdefs.c: $(OPENSSL_DEP)
+src/core/ext/upbdefs-generated/envoy/type/v3/semantic_version.upbdefs.c: $(OPENSSL_DEP)
+src/core/ext/upbdefs-generated/google/api/annotations.upbdefs.c: $(OPENSSL_DEP)
+src/core/ext/upbdefs-generated/google/api/http.upbdefs.c: $(OPENSSL_DEP)
+src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.c: $(OPENSSL_DEP)
+src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.c: $(OPENSSL_DEP)
+src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.c: $(OPENSSL_DEP)
+src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.c: $(OPENSSL_DEP)
+src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.c: $(OPENSSL_DEP)
+src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.c: $(OPENSSL_DEP)
+src/core/ext/upbdefs-generated/udpa/core/v1/authority.upbdefs.c: $(OPENSSL_DEP)
+src/core/ext/upbdefs-generated/udpa/core/v1/collection_entry.upbdefs.c: $(OPENSSL_DEP)
+src/core/ext/upbdefs-generated/udpa/core/v1/context_params.upbdefs.c: $(OPENSSL_DEP)
+src/core/ext/upbdefs-generated/udpa/core/v1/resource.upbdefs.c: $(OPENSSL_DEP)
+src/core/ext/upbdefs-generated/udpa/core/v1/resource_locator.upbdefs.c: $(OPENSSL_DEP)
+src/core/ext/upbdefs-generated/udpa/core/v1/resource_name.upbdefs.c: $(OPENSSL_DEP)
+src/core/ext/upbdefs-generated/validate/validate.upbdefs.c: $(OPENSSL_DEP)
src/core/ext/xds/certificate_provider_registry.cc: $(OPENSSL_DEP)
+src/core/ext/xds/certificate_provider_store.cc: $(OPENSSL_DEP)
+src/core/ext/xds/file_watcher_certificate_provider_factory.cc: $(OPENSSL_DEP)
src/core/ext/xds/google_mesh_ca_certificate_provider_factory.cc: $(OPENSSL_DEP)
src/core/ext/xds/xds_api.cc: $(OPENSSL_DEP)
src/core/ext/xds/xds_bootstrap.cc: $(OPENSSL_DEP)
+src/core/ext/xds/xds_certificate_provider.cc: $(OPENSSL_DEP)
src/core/ext/xds/xds_client.cc: $(OPENSSL_DEP)
src/core/ext/xds/xds_client_stats.cc: $(OPENSSL_DEP)
src/core/lib/http/httpcli_security_connector.cc: $(OPENSSL_DEP)
src/core/lib/security/credentials/composite/composite_credentials.cc: $(OPENSSL_DEP)
src/core/lib/security/credentials/credentials.cc: $(OPENSSL_DEP)
src/core/lib/security/credentials/credentials_metadata.cc: $(OPENSSL_DEP)
+src/core/lib/security/credentials/external/aws_request_signer.cc: $(OPENSSL_DEP)
+src/core/lib/security/credentials/external/external_account_credentials.cc: $(OPENSSL_DEP)
+src/core/lib/security/credentials/external/file_external_account_credentials.cc: $(OPENSSL_DEP)
+src/core/lib/security/credentials/external/url_external_account_credentials.cc: $(OPENSSL_DEP)
src/core/lib/security/credentials/fake/fake_credentials.cc: $(OPENSSL_DEP)
src/core/lib/security/credentials/google_default/credentials_generic.cc: $(OPENSSL_DEP)
src/core/lib/security/credentials/google_default/google_default_credentials.cc: $(OPENSSL_DEP)
src/core/lib/security/credentials/iam/iam_credentials.cc: $(OPENSSL_DEP)
+src/core/lib/security/credentials/insecure/insecure_credentials.cc: $(OPENSSL_DEP)
src/core/lib/security/credentials/jwt/json_token.cc: $(OPENSSL_DEP)
src/core/lib/security/credentials/jwt/jwt_credentials.cc: $(OPENSSL_DEP)
src/core/lib/security/credentials/jwt/jwt_verifier.cc: $(OPENSSL_DEP)
src/core/lib/security/credentials/plugin/plugin_credentials.cc: $(OPENSSL_DEP)
src/core/lib/security/credentials/ssl/ssl_credentials.cc: $(OPENSSL_DEP)
src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc: $(OPENSSL_DEP)
+src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc: $(OPENSSL_DEP)
src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc: $(OPENSSL_DEP)
src/core/lib/security/credentials/tls/tls_credentials.cc: $(OPENSSL_DEP)
src/core/lib/security/credentials/xds/xds_credentials.cc: $(OPENSSL_DEP)
src/core/lib/security/security_connector/alts/alts_security_connector.cc: $(OPENSSL_DEP)
src/core/lib/security/security_connector/fake/fake_security_connector.cc: $(OPENSSL_DEP)
+src/core/lib/security/security_connector/insecure/insecure_security_connector.cc: $(OPENSSL_DEP)
src/core/lib/security/security_connector/load_system_roots_fallback.cc: $(OPENSSL_DEP)
src/core/lib/security/security_connector/load_system_roots_linux.cc: $(OPENSSL_DEP)
src/core/lib/security/security_connector/local/local_security_connector.cc: $(OPENSSL_DEP)
src/core/tsi/transport_security.cc: $(OPENSSL_DEP)
src/core/tsi/transport_security_grpc.cc: $(OPENSSL_DEP)
src/cpp/client/secure_credentials.cc: $(OPENSSL_DEP)
+src/cpp/client/xds_credentials.cc: $(OPENSSL_DEP)
src/cpp/common/alts_context.cc: $(OPENSSL_DEP)
src/cpp/common/alts_util.cc: $(OPENSSL_DEP)
src/cpp/common/auth_property_iterator.cc: $(OPENSSL_DEP)
src/cpp/common/secure_auth_context.cc: $(OPENSSL_DEP)
src/cpp/common/secure_channel_arguments.cc: $(OPENSSL_DEP)
src/cpp/common/secure_create_auth_context.cc: $(OPENSSL_DEP)
+src/cpp/common/tls_certificate_provider.cc: $(OPENSSL_DEP)
src/cpp/common/tls_credentials_options.cc: $(OPENSSL_DEP)
src/cpp/common/tls_credentials_options_util.cc: $(OPENSSL_DEP)
src/cpp/ext/proto_server_reflection.cc: $(OPENSSL_DEP)
--- /dev/null
+// swift-tools-version:5.2
+// The swift-tools-version declares the minimum version of Swift required to build this package.
+import PackageDescription
+
+let package = Package(
+ name: "gRPC",
+ products: [
+ .library(
+ name: "gRPC-Core",
+ targets: [
+ "gRPC-Core",
+ ]
+ ),
+ .library(
+ name: "gRPC-cpp",
+ targets: [
+ "gRPC-cpp",
+ ]
+ )
+ ],
+
+ dependencies: [
+ .package(
+ name: "abseil",
+ url: "https://github.com/firebase/abseil-cpp-SwiftPM.git",
+ .revision("05d8107f2971a37e6c77245b7c4c6b0a7e97bc99")
+ ),
+ .package(name: "BoringSSL-GRPC",
+ url: "https://github.com/firebase/boringssl-SwiftPM.git",
+ .branch("7bcafa2660bc58715c39637494550d1ed7cd7229")
+ ),
+ ],
+
+ targets: [
+ .target(
+ name: "gRPC-Core",
+ dependencies: [
+ .product(name:"abseil", package: "abseil"),
+ .product(name:"openssl_grpc", package: "BoringSSL-GRPC"),
+ ],
+ path: ".",
+ exclude: [
+ "src/core/ext/filters/load_reporting/",
+ "src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel.cc",
+ "src/core/ext/filters/client_channel/xds/xds_channel.cc",
+ "src/core/ext/transport/cronet/",
+ "src/core/ext/upb-generated/third_party/",
+ "src/core/ext/upbdefs-generated/envoy/config/rbac/",
+ "src/core/ext/upbdefs-generated/google/api/expr/",
+ "src/core/ext/upbdefs-generated/src/",
+ "src/core/ext/upbdefs-generated/third_party/",
+ "src/core/ext/upbdefs-generated/udpa/data/",
+ "src/core/lib/surface/init_unsecure.cc",
+ "src/core/lib/security/authorization/mock_cel/cel_expr_builder_factory.h",
+ "src/core/lib/security/authorization/mock_cel/cel_expression.h",
+ "src/core/lib/security/authorization/mock_cel/evaluator_core.h",
+ "src/core/lib/security/authorization/mock_cel/flat_expr_builder.h",
+ "src/core/lib/security/authorization/mock_cel/statusor.h",
+ "src/core/plugin_registry/grpc_unsecure_plugin_registry.cc",
+ "third_party/re2/re2/testing/",
+ "third_party/re2/re2/fuzzing/",
+ "third_party/re2/util/benchmark.cc",
+ "third_party/re2/util/test.cc",
+ "third_party/re2/util/fuzz.cc",
+ "third_party/upb/upb/bindings/",
+ "third_party/upb/upb/json/",
+ "third_party/upb/upb/pb/",
+ ],
+ sources: [
+ "src/core/ext/filters/",
+ "src/core/ext/transport/",
+ "src/core/ext/upb-generated/",
+ "src/core/ext/upbdefs-generated/",
+ "src/core/ext/xds/",
+ "src/core/lib/",
+ "src/core/plugin_registry/grpc_plugin_registry.cc",
+ "src/core/tsi/",
+ "third_party/re2/re2/",
+ "third_party/re2/util/",
+ "third_party/upb/upb/",
+ ],
+ publicHeadersPath: "spm-core-include",
+ cSettings: [
+ .headerSearchPath("./"),
+ .headerSearchPath("include/"),
+ .headerSearchPath("third_party/re2/"),
+ .headerSearchPath("third_party/upb/"),
+ .headerSearchPath("src/core/ext/upb-generated/"),
+ .headerSearchPath("src/core/ext/upbdefs-generated/"),
+ .define("GRPC_ARES", to: "0"),
+ ]
+ ),
+ .target(
+ name: "gRPC-cpp",
+ dependencies: [
+ .product(name:"abseil", package: "abseil"),
+ "gRPC-Core",
+ ],
+ path: ".",
+ exclude: [
+ "src/cpp/client/cronet_credentials.cc",
+ "src/cpp/common/insecure_create_auth_context.cc",
+ "src/cpp/ext/",
+ "src/cpp/server/channelz/",
+ "src/cpp/server/load_reporter/",
+ "src/cpp/util/core_stats.cc",
+ "src/cpp/util/core_stats.h",
+ "src/cpp/util/error_details.cc",
+ ],
+ sources: [
+ "src/cpp/",
+ ],
+ publicHeadersPath: "spm-cpp-include",
+ cSettings: [
+ .headerSearchPath("./"),
+ .headerSearchPath("include/"),
+ .headerSearchPath("third_party/upb/"),
+ .headerSearchPath("src/core/ext/upb-generated"),
+ ]
+ ),
+ ],
+ cLanguageStandard: .gnu11,
+ cxxLanguageStandard: .cxx11
+)
)
native.bind(
+ name = "upb_lib_descriptor",
+ actual = "@upb//:descriptor_upb_proto",
+ )
+
+ native.bind(
+ name = "upb_textformat_lib",
+ actual = "@upb//:textformat",
+ )
+
+ native.bind(
name = "absl",
actual = "@com_google_absl//absl",
)
)
native.bind(
- name = "gflags",
- actual = "@com_github_gflags_gflags//:gflags",
- )
-
- native.bind(
name = "grpc_cpp_plugin",
actual = "@com_github_grpc_grpc//src/compiler:grpc_cpp_plugin",
)
name = "boringssl",
# Use github mirror instead of https://boringssl.googlesource.com/boringssl
# to obtain a boringssl archive with consistent sha256
- sha256 = "cb0fd3eda612d4ae4be21108938800a19b015717a7627ea7f530e3469d207707",
- strip_prefix = "boringssl-88aeb757f1a415c71fb4cbf5af936ecae4bc8179",
+ sha256 = "e8c02bb7043644dc138e422a9a3412108732b6ff30590db4a05664476b209c03",
+ strip_prefix = "boringssl-29c6e0e27268f5a43e039cd2ed4e849d6b736fc1",
urls = [
- "https://storage.googleapis.com/grpc-bazel-mirror/github.com/google/boringssl/archive/88aeb757f1a415c71fb4cbf5af936ecae4bc8179.tar.gz",
- "https://github.com/google/boringssl/archive/88aeb757f1a415c71fb4cbf5af936ecae4bc8179.tar.gz",
+ "https://storage.googleapis.com/grpc-bazel-mirror/github.com/google/boringssl/archive/29c6e0e27268f5a43e039cd2ed4e849d6b736fc1.tar.gz",
+ "https://github.com/google/boringssl/archive/29c6e0e27268f5a43e039cd2ed4e849d6b736fc1.tar.gz",
],
)
],
)
- if "com_github_gflags_gflags" not in native.existing_rules():
- http_archive(
- name = "com_github_gflags_gflags",
- sha256 = "63ae70ea3e05780f7547d03503a53de3a7d2d83ad1caaa443a31cb20aea28654",
- strip_prefix = "gflags-28f50e0fed19872e0fd50dd23ce2ee8cd759338e",
- urls = [
- "https://storage.googleapis.com/grpc-bazel-mirror/github.com/gflags/gflags/archive/28f50e0fed19872e0fd50dd23ce2ee8cd759338e.tar.gz",
- "https://github.com/gflags/gflags/archive/28f50e0fed19872e0fd50dd23ce2ee8cd759338e.tar.gz",
- ],
- )
-
if "com_github_google_benchmark" not in native.existing_rules():
http_archive(
name = "com_github_google_benchmark",
if "com_google_absl" not in native.existing_rules():
http_archive(
name = "com_google_absl",
- sha256 = "f368a8476f4e2e0eccf8a7318b98dafbe30b2600f4e3cf52636e5eb145aba06a",
- strip_prefix = "abseil-cpp-df3ea785d8c30a9503321a3d35ee7d35808f190d",
+ sha256 = "3d74cdc98b42fd4257d91f652575206de195e2c824fcd8d6e6d227f85cb143ef",
+ strip_prefix = "abseil-cpp-0f3bb466b868b523cf1dc9b2aaaed65c77b28862",
urls = [
- "https://storage.googleapis.com/grpc-bazel-mirror/github.com/abseil/abseil-cpp/archive/df3ea785d8c30a9503321a3d35ee7d35808f190d.tar.gz",
- "https://github.com/abseil/abseil-cpp/archive/df3ea785d8c30a9503321a3d35ee7d35808f190d.tar.gz",
+ "https://storage.googleapis.com/grpc-bazel-mirror/github.com/abseil/abseil-cpp/archive/0f3bb466b868b523cf1dc9b2aaaed65c77b28862.tar.gz",
+ "https://github.com/abseil/abseil-cpp/archive/0f3bb466b868b523cf1dc9b2aaaed65c77b28862.tar.gz",
],
)
sha256 = "97e70364e9249702246c0e9444bccdc4b847bed1eb03c5a3ece4f83dfe6abc44",
)
+ if "bazel_compdb" not in native.existing_rules():
+ http_archive(
+ name = "bazel_compdb",
+ sha256 = "bcecfd622c4ef272fd4ba42726a52e140b961c4eac23025f18b346c968a8cfb4",
+ strip_prefix = "bazel-compilation-database-0.4.5",
+ urls = [
+ "https://storage.googleapis.com/grpc-bazel-mirror/github.com/grailbio/bazel-compilation-database/archive/0.4.5.tar.gz",
+ "https://github.com/grailbio/bazel-compilation-database/archive/0.4.5.tar.gz",
+ ],
+ )
+
if "io_opencensus_cpp" not in native.existing_rules():
http_archive(
name = "io_opencensus_cpp",
- src/core/lib/gpr/tls_gcc.h
- src/core/lib/gpr/tls_msvc.h
- src/core/lib/gpr/tls_pthread.h
+ - src/core/lib/gpr/tls_stdcpp.h
- src/core/lib/gpr/tmpfile.h
- src/core/lib/gpr/useful.h
- src/core/lib/gprpp/arena.h
- src/core/lib/gprpp/atomic.h
+ - src/core/lib/gprpp/examine_stack.h
- src/core/lib/gprpp/fork.h
- src/core/lib/gprpp/global_config.h
- src/core/lib/gprpp/global_config_custom.h
- src/core/lib/gprpp/map.h
- src/core/lib/gprpp/memory.h
- src/core/lib/gprpp/mpscq.h
+ - src/core/lib/gprpp/stat.h
- src/core/lib/gprpp/sync.h
- src/core/lib/gprpp/thd.h
- src/core/lib/profiling/timers.h
- src/core/lib/gpr/tmpfile_windows.cc
- src/core/lib/gpr/wrap_memcpy.cc
- src/core/lib/gprpp/arena.cc
+ - src/core/lib/gprpp/examine_stack.cc
- src/core/lib/gprpp/fork.cc
- src/core/lib/gprpp/global_config_env.cc
- src/core/lib/gprpp/host_port.cc
- src/core/lib/gprpp/mpscq.cc
+ - src/core/lib/gprpp/stat_posix.cc
+ - src/core/lib/gprpp/stat_windows.cc
- src/core/lib/gprpp/thd_posix.cc
- src/core/lib/gprpp/thd_windows.cc
- src/core/lib/profiling/basic_timers.cc
- src/core/lib/profiling/stap_timers.cc
deps:
+ - absl/types:optional
- absl/time:time
- absl/synchronization:synchronization
- absl/strings:strings
- absl/strings:str_format
+ - absl/status:status
- absl/memory:memory
- absl/base:base
secure: false
- src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.h
- src/core/ext/upb-generated/google/api/http.upb.h
- src/core/ext/upb-generated/google/protobuf/any.upb.h
- - src/core/ext/upb-generated/google/protobuf/descriptor.upb.h
- src/core/ext/upb-generated/google/protobuf/duration.upb.h
- src/core/ext/upb-generated/google/protobuf/empty.upb.h
- src/core/ext/upb-generated/google/protobuf/struct.upb.h
- src/core/ext/upb-generated/udpa/core/v1/resource_name.upb.h
- src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.h
- src/core/ext/upb-generated/validate/validate.upb.h
+ - src/core/ext/upbdefs-generated/envoy/annotations/deprecation.upbdefs.h
+ - src/core/ext/upbdefs-generated/envoy/annotations/resource.upbdefs.h
+ - src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.h
+ - src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.h
+ - src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.h
+ - src/core/ext/upbdefs-generated/envoy/config/cluster/v3/filter.upbdefs.h
+ - src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.h
+ - src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.h
+ - src/core/ext/upbdefs-generated/envoy/config/core/v3/backoff.upbdefs.h
+ - src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.h
+ - src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.h
+ - src/core/ext/upbdefs-generated/envoy/config/core/v3/event_service_config.upbdefs.h
+ - src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.h
+ - src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_service.upbdefs.h
+ - src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.h
+ - src/core/ext/upbdefs-generated/envoy/config/core/v3/http_uri.upbdefs.h
+ - src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.h
+ - src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.h
+ - src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.h
+ - src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.h
+ - src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.h
+ - src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.h
+ - src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/load_report.upbdefs.h
+ - src/core/ext/upbdefs-generated/envoy/config/listener/v3/api_listener.upbdefs.h
+ - src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.h
+ - src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.h
+ - src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.h
+ - src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.h
+ - src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.h
+ - src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.h
+ - src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.h
+ - src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.h
+ - src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.h
+ - src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.h
+ - src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.h
+ - src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.h
+ - src/core/ext/upbdefs-generated/envoy/service/cluster/v3/cds.upbdefs.h
+ - src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.h
+ - src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.h
+ - src/core/ext/upbdefs-generated/envoy/service/endpoint/v3/eds.upbdefs.h
+ - src/core/ext/upbdefs-generated/envoy/service/listener/v3/lds.upbdefs.h
+ - src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.h
+ - src/core/ext/upbdefs-generated/envoy/service/route/v3/rds.upbdefs.h
+ - src/core/ext/upbdefs-generated/envoy/service/route/v3/srds.upbdefs.h
+ - src/core/ext/upbdefs-generated/envoy/type/matcher/v3/metadata.upbdefs.h
+ - src/core/ext/upbdefs-generated/envoy/type/matcher/v3/number.upbdefs.h
+ - src/core/ext/upbdefs-generated/envoy/type/matcher/v3/path.upbdefs.h
+ - src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.h
+ - src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.h
+ - src/core/ext/upbdefs-generated/envoy/type/matcher/v3/value.upbdefs.h
+ - src/core/ext/upbdefs-generated/envoy/type/metadata/v3/metadata.upbdefs.h
+ - src/core/ext/upbdefs-generated/envoy/type/tracing/v3/custom_tag.upbdefs.h
+ - src/core/ext/upbdefs-generated/envoy/type/v3/http.upbdefs.h
+ - src/core/ext/upbdefs-generated/envoy/type/v3/percent.upbdefs.h
+ - src/core/ext/upbdefs-generated/envoy/type/v3/range.upbdefs.h
+ - src/core/ext/upbdefs-generated/envoy/type/v3/semantic_version.upbdefs.h
+ - src/core/ext/upbdefs-generated/google/api/annotations.upbdefs.h
+ - src/core/ext/upbdefs-generated/google/api/http.upbdefs.h
+ - src/core/ext/upbdefs-generated/google/protobuf/any.upbdefs.h
+ - src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.h
+ - src/core/ext/upbdefs-generated/google/protobuf/duration.upbdefs.h
+ - src/core/ext/upbdefs-generated/google/protobuf/empty.upbdefs.h
+ - src/core/ext/upbdefs-generated/google/protobuf/struct.upbdefs.h
+ - src/core/ext/upbdefs-generated/google/protobuf/timestamp.upbdefs.h
+ - src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.h
+ - src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.h
+ - src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.h
+ - src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.h
+ - src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.h
+ - src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.h
+ - src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.h
+ - src/core/ext/upbdefs-generated/udpa/core/v1/authority.upbdefs.h
+ - src/core/ext/upbdefs-generated/udpa/core/v1/collection_entry.upbdefs.h
+ - src/core/ext/upbdefs-generated/udpa/core/v1/context_params.upbdefs.h
+ - src/core/ext/upbdefs-generated/udpa/core/v1/resource.upbdefs.h
+ - src/core/ext/upbdefs-generated/udpa/core/v1/resource_locator.upbdefs.h
+ - src/core/ext/upbdefs-generated/udpa/core/v1/resource_name.upbdefs.h
+ - src/core/ext/upbdefs-generated/validate/validate.upbdefs.h
- src/core/ext/xds/certificate_provider_factory.h
- src/core/ext/xds/certificate_provider_registry.h
- src/core/ext/xds/certificate_provider_store.h
+ - src/core/ext/xds/file_watcher_certificate_provider_factory.h
- src/core/ext/xds/google_mesh_ca_certificate_provider_factory.h
- src/core/ext/xds/xds_api.h
- src/core/ext/xds/xds_bootstrap.h
+ - src/core/ext/xds/xds_certificate_provider.h
- src/core/ext/xds/xds_channel_args.h
- src/core/ext/xds/xds_client.h
- src/core/ext/xds/xds_client_stats.h
- src/core/lib/security/authorization/mock_cel/cel_value.h
- src/core/lib/security/authorization/mock_cel/evaluator_core.h
- src/core/lib/security/authorization/mock_cel/flat_expr_builder.h
- - src/core/lib/security/authorization/mock_cel/statusor.h
- - src/core/lib/security/certificate_provider.h
- src/core/lib/security/context/security_context.h
- src/core/lib/security/credentials/alts/alts_credentials.h
- src/core/lib/security/credentials/alts/check_gcp_environment.h
- src/core/lib/security/credentials/alts/grpc_alts_credentials_options.h
- src/core/lib/security/credentials/composite/composite_credentials.h
- src/core/lib/security/credentials/credentials.h
+ - src/core/lib/security/credentials/external/aws_request_signer.h
+ - src/core/lib/security/credentials/external/external_account_credentials.h
+ - src/core/lib/security/credentials/external/file_external_account_credentials.h
+ - src/core/lib/security/credentials/external/url_external_account_credentials.h
- src/core/lib/security/credentials/fake/fake_credentials.h
- src/core/lib/security/credentials/google_default/google_default_credentials.h
- src/core/lib/security/credentials/iam/iam_credentials.h
- src/core/lib/security/credentials/plugin/plugin_credentials.h
- src/core/lib/security/credentials/ssl/ssl_credentials.h
- src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h
+ - src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h
- src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h
- src/core/lib/security/credentials/tls/tls_credentials.h
- src/core/lib/security/credentials/xds/xds_credentials.h
- src/core/lib/security/security_connector/alts/alts_security_connector.h
- src/core/lib/security/security_connector/fake/fake_security_connector.h
+ - src/core/lib/security/security_connector/insecure/insecure_security_connector.h
- src/core/lib/security/security_connector/load_system_roots.h
- src/core/lib/security/security_connector/load_system_roots_linux.h
- src/core/lib/security/security_connector/local/local_security_connector.h
- src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc
- src/core/ext/filters/client_channel/lb_policy/xds/cds.cc
- src/core/ext/filters/client_channel/lb_policy/xds/eds.cc
- - src/core/ext/filters/client_channel/lb_policy/xds/eds_drop.cc
+ - src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc
- src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc
- src/core/ext/filters/client_channel/lb_policy_registry.cc
- src/core/ext/filters/client_channel/local_subchannel_pool.cc
- src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.c
- src/core/ext/upb-generated/google/api/http.upb.c
- src/core/ext/upb-generated/google/protobuf/any.upb.c
- - src/core/ext/upb-generated/google/protobuf/descriptor.upb.c
- src/core/ext/upb-generated/google/protobuf/duration.upb.c
- src/core/ext/upb-generated/google/protobuf/empty.upb.c
- src/core/ext/upb-generated/google/protobuf/struct.upb.c
- src/core/ext/upb-generated/udpa/core/v1/resource_name.upb.c
- src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.c
- src/core/ext/upb-generated/validate/validate.upb.c
+ - src/core/ext/upbdefs-generated/envoy/annotations/deprecation.upbdefs.c
+ - src/core/ext/upbdefs-generated/envoy/annotations/resource.upbdefs.c
+ - src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.c
+ - src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.c
+ - src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c
+ - src/core/ext/upbdefs-generated/envoy/config/cluster/v3/filter.upbdefs.c
+ - src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.c
+ - src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.c
+ - src/core/ext/upbdefs-generated/envoy/config/core/v3/backoff.upbdefs.c
+ - src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.c
+ - src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.c
+ - src/core/ext/upbdefs-generated/envoy/config/core/v3/event_service_config.upbdefs.c
+ - src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.c
+ - src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_service.upbdefs.c
+ - src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.c
+ - src/core/ext/upbdefs-generated/envoy/config/core/v3/http_uri.upbdefs.c
+ - src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c
+ - src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.c
+ - src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.c
+ - src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.c
+ - src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.c
+ - src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.c
+ - src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/load_report.upbdefs.c
+ - src/core/ext/upbdefs-generated/envoy/config/listener/v3/api_listener.upbdefs.c
+ - src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.c
+ - src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.c
+ - src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.c
+ - src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.c
+ - src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c
+ - src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.c
+ - src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.c
+ - src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c
+ - src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.c
+ - src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c
+ - src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.c
+ - src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c
+ - src/core/ext/upbdefs-generated/envoy/service/cluster/v3/cds.upbdefs.c
+ - src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.c
+ - src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.c
+ - src/core/ext/upbdefs-generated/envoy/service/endpoint/v3/eds.upbdefs.c
+ - src/core/ext/upbdefs-generated/envoy/service/listener/v3/lds.upbdefs.c
+ - src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.c
+ - src/core/ext/upbdefs-generated/envoy/service/route/v3/rds.upbdefs.c
+ - src/core/ext/upbdefs-generated/envoy/service/route/v3/srds.upbdefs.c
+ - src/core/ext/upbdefs-generated/envoy/type/matcher/v3/metadata.upbdefs.c
+ - src/core/ext/upbdefs-generated/envoy/type/matcher/v3/number.upbdefs.c
+ - src/core/ext/upbdefs-generated/envoy/type/matcher/v3/path.upbdefs.c
+ - src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.c
+ - src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.c
+ - src/core/ext/upbdefs-generated/envoy/type/matcher/v3/value.upbdefs.c
+ - src/core/ext/upbdefs-generated/envoy/type/metadata/v3/metadata.upbdefs.c
+ - src/core/ext/upbdefs-generated/envoy/type/tracing/v3/custom_tag.upbdefs.c
+ - src/core/ext/upbdefs-generated/envoy/type/v3/http.upbdefs.c
+ - src/core/ext/upbdefs-generated/envoy/type/v3/percent.upbdefs.c
+ - src/core/ext/upbdefs-generated/envoy/type/v3/range.upbdefs.c
+ - src/core/ext/upbdefs-generated/envoy/type/v3/semantic_version.upbdefs.c
+ - src/core/ext/upbdefs-generated/google/api/annotations.upbdefs.c
+ - src/core/ext/upbdefs-generated/google/api/http.upbdefs.c
+ - src/core/ext/upbdefs-generated/google/protobuf/any.upbdefs.c
+ - src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.c
+ - src/core/ext/upbdefs-generated/google/protobuf/duration.upbdefs.c
+ - src/core/ext/upbdefs-generated/google/protobuf/empty.upbdefs.c
+ - src/core/ext/upbdefs-generated/google/protobuf/struct.upbdefs.c
+ - src/core/ext/upbdefs-generated/google/protobuf/timestamp.upbdefs.c
+ - src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.c
+ - src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.c
+ - src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.c
+ - src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.c
+ - src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.c
+ - src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.c
+ - src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.c
+ - src/core/ext/upbdefs-generated/udpa/core/v1/authority.upbdefs.c
+ - src/core/ext/upbdefs-generated/udpa/core/v1/collection_entry.upbdefs.c
+ - src/core/ext/upbdefs-generated/udpa/core/v1/context_params.upbdefs.c
+ - src/core/ext/upbdefs-generated/udpa/core/v1/resource.upbdefs.c
+ - src/core/ext/upbdefs-generated/udpa/core/v1/resource_locator.upbdefs.c
+ - src/core/ext/upbdefs-generated/udpa/core/v1/resource_name.upbdefs.c
+ - src/core/ext/upbdefs-generated/validate/validate.upbdefs.c
- src/core/ext/xds/certificate_provider_registry.cc
+ - src/core/ext/xds/certificate_provider_store.cc
+ - src/core/ext/xds/file_watcher_certificate_provider_factory.cc
- src/core/ext/xds/google_mesh_ca_certificate_provider_factory.cc
- src/core/ext/xds/xds_api.cc
- src/core/ext/xds/xds_bootstrap.cc
+ - src/core/ext/xds/xds_certificate_provider.cc
- src/core/ext/xds/xds_client.cc
- src/core/ext/xds/xds_client_stats.cc
- src/core/lib/avl/avl.cc
- src/core/lib/security/credentials/composite/composite_credentials.cc
- src/core/lib/security/credentials/credentials.cc
- src/core/lib/security/credentials/credentials_metadata.cc
+ - src/core/lib/security/credentials/external/aws_request_signer.cc
+ - src/core/lib/security/credentials/external/external_account_credentials.cc
+ - src/core/lib/security/credentials/external/file_external_account_credentials.cc
+ - src/core/lib/security/credentials/external/url_external_account_credentials.cc
- src/core/lib/security/credentials/fake/fake_credentials.cc
- src/core/lib/security/credentials/google_default/credentials_generic.cc
- src/core/lib/security/credentials/google_default/google_default_credentials.cc
- src/core/lib/security/credentials/iam/iam_credentials.cc
+ - src/core/lib/security/credentials/insecure/insecure_credentials.cc
- src/core/lib/security/credentials/jwt/json_token.cc
- src/core/lib/security/credentials/jwt/jwt_credentials.cc
- src/core/lib/security/credentials/jwt/jwt_verifier.cc
- src/core/lib/security/credentials/plugin/plugin_credentials.cc
- src/core/lib/security/credentials/ssl/ssl_credentials.cc
- src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc
+ - src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc
- src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc
- src/core/lib/security/credentials/tls/tls_credentials.cc
- src/core/lib/security/credentials/xds/xds_credentials.cc
- src/core/lib/security/security_connector/alts/alts_security_connector.cc
- src/core/lib/security/security_connector/fake/fake_security_connector.cc
+ - src/core/lib/security/security_connector/insecure/insecure_security_connector.cc
- src/core/lib/security/security_connector/load_system_roots_fallback.cc
- src/core/lib/security/security_connector/load_system_roots_linux.cc
- src/core/lib/security/security_connector/local/local_security_connector.cc
- absl/types:optional
- absl/strings:strings
- absl/status:status
+ - absl/functional:bind_front
- absl/container:inlined_vector
- absl/container:flat_hash_set
baselib: true
- test/core/util/cmdline.h
- test/core/util/debugger_macros.h
- test/core/util/eval_args_mock_endpoint.h
- - test/core/util/examine_stack.h
- test/core/util/fuzzer_util.h
- test/core/util/grpc_profiler.h
- test/core/util/histogram.h
- test/core/util/port.h
- test/core/util/port_server_client.h
- test/core/util/reconnect_server.h
+ - test/core/util/resolve_localhost_ip46.h
- test/core/util/slice_splitter.h
+ - test/core/util/stack_tracer.h
- test/core/util/subprocess.h
- test/core/util/test_config.h
- test/core/util/test_tcp_server.h
- test/core/util/cmdline.cc
- test/core/util/debugger_macros.cc
- test/core/util/eval_args_mock_endpoint.cc
- - test/core/util/examine_stack.cc
- test/core/util/fuzzer_util.cc
- test/core/util/grpc_profiler.cc
- test/core/util/histogram.cc
- test/core/util/port_isolated_runtime_environment.cc
- test/core/util/port_server_client.cc
- test/core/util/reconnect_server.cc
+ - test/core/util/resolve_localhost_ip46.cc
- test/core/util/slice_splitter.cc
+ - test/core/util/stack_tracer.cc
- test/core/util/subprocess_posix.cc
- test/core/util/subprocess_windows.cc
- test/core/util/test_config.cc
- test/core/util/cmdline.h
- test/core/util/debugger_macros.h
- test/core/util/eval_args_mock_endpoint.h
- - test/core/util/examine_stack.h
- test/core/util/fuzzer_util.h
- test/core/util/grpc_profiler.h
- test/core/util/histogram.h
- test/core/util/port.h
- test/core/util/port_server_client.h
- test/core/util/reconnect_server.h
+ - test/core/util/resolve_localhost_ip46.h
- test/core/util/slice_splitter.h
+ - test/core/util/stack_tracer.h
- test/core/util/subprocess.h
- test/core/util/test_config.h
- test/core/util/test_tcp_server.h
- test/core/util/cmdline.cc
- test/core/util/debugger_macros.cc
- test/core/util/eval_args_mock_endpoint.cc
- - test/core/util/examine_stack.cc
- test/core/util/fuzzer_util.cc
- test/core/util/grpc_profiler.cc
- test/core/util/histogram.cc
- test/core/util/port_isolated_runtime_environment.cc
- test/core/util/port_server_client.cc
- test/core/util/reconnect_server.cc
+ - test/core/util/resolve_localhost_ip46.cc
- test/core/util/slice_splitter.cc
+ - test/core/util/stack_tracer.cc
- test/core/util/subprocess_posix.cc
- test/core/util/subprocess_windows.cc
- test/core/util/test_config.cc
- src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.h
- src/core/ext/upb-generated/google/api/http.upb.h
- src/core/ext/upb-generated/google/protobuf/any.upb.h
- - src/core/ext/upb-generated/google/protobuf/descriptor.upb.h
- src/core/ext/upb-generated/google/protobuf/duration.upb.h
- src/core/ext/upb-generated/google/protobuf/empty.upb.h
- src/core/ext/upb-generated/google/protobuf/struct.upb.h
- src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.c
- src/core/ext/upb-generated/google/api/http.upb.c
- src/core/ext/upb-generated/google/protobuf/any.upb.c
- - src/core/ext/upb-generated/google/protobuf/descriptor.upb.c
- src/core/ext/upb-generated/google/protobuf/duration.upb.c
- src/core/ext/upb-generated/google/protobuf/empty.upb.c
- src/core/ext/upb-generated/google/protobuf/struct.upb.c
- include/grpcpp/security/auth_metadata_processor.h
- include/grpcpp/security/credentials.h
- include/grpcpp/security/server_credentials.h
+ - include/grpcpp/security/tls_certificate_provider.h
- include/grpcpp/security/tls_credentials_options.h
- include/grpcpp/server.h
- include/grpcpp/server_builder.h
- src/cpp/client/credentials_cc.cc
- src/cpp/client/insecure_credentials.cc
- src/cpp/client/secure_credentials.cc
+ - src/cpp/client/xds_credentials.cc
- src/cpp/codegen/codegen_init.cc
- src/cpp/common/alarm.cc
- src/cpp/common/auth_property_iterator.cc
- src/cpp/common/secure_auth_context.cc
- src/cpp/common/secure_channel_arguments.cc
- src/cpp/common/secure_create_auth_context.cc
+ - src/cpp/common/tls_certificate_provider.cc
- src/cpp/common/tls_credentials_options.cc
- src/cpp/common/tls_credentials_options_util.cc
- src/cpp/common/validate_service_config.cc
- test/cpp/util/test_config_cc.cc
deps:
- gpr
+ - absl/flags:parse
- name: grpc++_test_util
build: private
language: c++
- gpr
- address_sorting
- upb
+ - absl/flags:flag
- name: grpc++_unsecure
build: all
language: c++
- include/grpcpp/security/auth_metadata_processor.h
- include/grpcpp/security/credentials.h
- include/grpcpp/security/server_credentials.h
+ - include/grpcpp/security/tls_certificate_provider.h
- include/grpcpp/security/tls_credentials_options.h
- include/grpcpp/server.h
- include/grpcpp/server_builder.h
language: c++
public_headers:
- include/grpcpp/ext/channelz_service_plugin.h
- - include/grpcpp/ext/channelz_service_plugin_impl.h
headers:
- src/cpp/server/channelz/channelz_service.h
src:
- address_sorting
- upb
uses_polling: false
-- name: dns_resolver_connectivity_using_ares_resolver_test
+- name: dns_resolver_connectivity_using_ares_test
build: test
language: c
headers: []
- upb
args:
- --resolver=ares
-- name: dns_resolver_connectivity_using_native_resolver_test
+- name: dns_resolver_connectivity_using_native_test
build: test
language: c
headers: []
platforms:
- linux
- posix
- - mac
- name: alts_credentials_fuzzer
build: fuzzer
language: c++
- gpr
- address_sorting
- upb
+ - absl/flags:flag
corpus_dirs:
- test/core/security/corpus/alts_credentials_corpus
maxlen: 2048
- gpr
- address_sorting
- upb
+- name: aws_request_signer_test
+ gtest: true
+ build: test
+ language: c++
+ headers: []
+ src:
+ - test/core/security/aws_request_signer_test.cc
+ deps:
+ - grpc_test_util
+ - grpc
+ - gpr
+ - address_sorting
+ - upb
- name: backoff_test
gtest: true
build: test
- address_sorting
- upb
- benchmark
+ - absl/flags:flag
benchmark: true
defaults: benchmark
platforms:
- gpr
- address_sorting
- upb
+- name: certificate_provider_store_test
+ gtest: true
+ build: test
+ language: c++
+ headers: []
+ src:
+ - test/core/xds/certificate_provider_store_test.cc
+ deps:
+ - grpc_test_util
+ - grpc
+ - gpr
+ - address_sorting
+ - upb
- name: cfstream_test
gtest: true
build: test
- gpr
- address_sorting
- upb
+ - absl/flags:flag
- name: client_callback_end2end_test
gtest: true
build: test
- gpr
- address_sorting
- upb
+ - absl/flags:flag
corpus_dirs:
- test/core/end2end/fuzzers/client_fuzzer_corpus
dict: test/core/end2end/fuzzers/hpack.dictionary
- address_sorting
- upb
uses_polling: false
+- name: examine_stack_test
+ gtest: true
+ build: test
+ language: c++
+ headers: []
+ src:
+ - test/core/gprpp/examine_stack_test.cc
+ deps:
+ - grpc_test_util
+ - grpc
+ - gpr
+ - address_sorting
+ - upb
+ - absl/debugging:symbolize
+ - absl/debugging:stacktrace
+ platforms:
+ - linux
+ - posix
+ - mac
+ uses_polling: false
- name: exception_test
gtest: true
build: test
- gpr
- address_sorting
- upb
+- name: file_watcher_certificate_provider_factory_test
+ gtest: true
+ build: test
+ language: c++
+ headers: []
+ src:
+ - test/core/xds/file_watcher_certificate_provider_factory_test.cc
+ deps:
+ - grpc_test_util
+ - grpc
+ - gpr
+ - address_sorting
+ - upb
- name: filter_end2end_test
gtest: true
build: test
- gpr
- address_sorting
- upb
+ - absl/flags:flag
- name: grpc_cpp_plugin
build: protoc
language: c++
- gpr
- address_sorting
- upb
+ - absl/flags:flag
platforms:
- linux
- posix
- gpr
- address_sorting
- upb
+ - absl/flags:flag
corpus_dirs:
- test/core/transport/chttp2/hpack_parser_corpus
dict: test/core/end2end/fuzzers/hpack.dictionary
- gpr
- address_sorting
- upb
+ - absl/flags:flag
- name: http_request_fuzzer_test
build: fuzzer
language: c++
- gpr
- address_sorting
- upb
+ - absl/flags:flag
corpus_dirs:
- test/core/http/request_corpus
maxlen: 2048
- gpr
- address_sorting
- upb
+ - absl/flags:flag
corpus_dirs:
- test/core/http/response_corpus
maxlen: 2048
- gpr
- address_sorting
- upb
+- name: insecure_security_connector_test
+ gtest: true
+ build: test
+ language: c++
+ headers: []
+ src:
+ - test/core/security/insecure_security_connector_test.cc
+ deps:
+ - grpc_test_util
+ - grpc
+ - gpr
+ - address_sorting
+ - upb
- name: interop_client
build: test
run: false
- gpr
- address_sorting
- upb
+ - absl/flags:flag
- name: interop_server
build: test
run: false
- gpr
- address_sorting
- upb
+ - absl/flags:flag
- name: interop_test
build: test
language: c++
- gpr
- address_sorting
- upb
+ - absl/flags:flag
platforms:
- linux
- posix
- gpr
- address_sorting
- upb
+ - absl/flags:flag
corpus_dirs:
- test/core/json/corpus
maxlen: 512
- gpr
- address_sorting
- upb
+ - absl/flags:flag
corpus_dirs:
- test/core/nanopb/corpus_response
maxlen: 128
- gpr
- address_sorting
- upb
+ - absl/flags:flag
corpus_dirs:
- test/core/nanopb/corpus_serverlist
maxlen: 128
- gpr
- address_sorting
- upb
+ - absl/flags:flag
corpus_dirs:
- test/core/slice/percent_decode_corpus
maxlen: 32
- gpr
- address_sorting
- upb
+ - absl/flags:flag
corpus_dirs:
- test/core/slice/percent_encode_corpus
maxlen: 32
- gpr
- address_sorting
- upb
+ - absl/flags:flag
- name: qps_worker
build: test
run: false
- gpr
- address_sorting
- upb
+ - absl/flags:flag
- name: raw_end2end_test
gtest: true
build: test
- gpr
- address_sorting
- upb
+ - absl/flags:flag
corpus_dirs:
- test/core/end2end/fuzzers/server_fuzzer_corpus
dict: test/core/end2end/fuzzers/hpack.dictionary
- gpr
- address_sorting
- upb
+ - absl/flags:flag
corpus_dirs:
- test/core/security/corpus/ssl_server_corpus
maxlen: 2048
+- name: stack_tracer_test
+ gtest: true
+ build: test
+ language: c++
+ headers: []
+ src:
+ - test/core/util/stack_tracer_test.cc
+ deps:
+ - grpc_test_util
+ - grpc
+ - gpr
+ - address_sorting
+ - upb
+ - absl/debugging:symbolize
+ platforms:
+ - linux
+ - posix
+ - mac
+ uses_polling: false
+- name: stat_test
+ gtest: true
+ build: test
+ language: c++
+ headers: []
+ src:
+ - test/core/gprpp/stat_test.cc
+ deps:
+ - grpc_test_util
+ - grpc
+ - gpr
+ - address_sorting
+ - upb
+ uses_polling: false
- name: static_metadata_test
gtest: true
build: test
- gpr
- address_sorting
- upb
+- name: test_cpp_server_credentials_test
+ gtest: true
+ build: test
+ language: c++
+ headers: []
+ src:
+ - test/cpp/server/credentials_test.cc
+ deps:
+ - grpc_test_util
+ - grpc++
+ - grpc
+ - gpr
+ - address_sorting
+ - upb
- name: test_cpp_util_slice_test
gtest: true
build: test
- gpr
- address_sorting
- upb
+ - absl/flags:flag
corpus_dirs:
- test/core/uri/uri_corpus
maxlen: 128
- test/core/util/cmdline.h
- test/core/util/debugger_macros.h
- test/core/util/eval_args_mock_endpoint.h
- - test/core/util/examine_stack.h
- test/core/util/fuzzer_util.h
- test/core/util/grpc_profiler.h
- test/core/util/histogram.h
- test/core/util/port.h
- test/core/util/port_server_client.h
- test/core/util/reconnect_server.h
+ - test/core/util/resolve_localhost_ip46.h
- test/core/util/slice_splitter.h
+ - test/core/util/stack_tracer.h
- test/core/util/subprocess.h
- test/core/util/test_config.h
- test/core/util/test_tcp_server.h
- test/core/util/cmdline.cc
- test/core/util/debugger_macros.cc
- test/core/util/eval_args_mock_endpoint.cc
- - test/core/util/examine_stack.cc
- test/core/util/fuzzer_util.cc
- test/core/util/grpc_profiler.cc
- test/core/util/histogram.cc
- test/core/util/port_isolated_runtime_environment.cc
- test/core/util/port_server_client.cc
- test/core/util/reconnect_server.cc
+ - test/core/util/resolve_localhost_ip46.cc
- test/core/util/slice_splitter.cc
+ - test/core/util/stack_tracer.cc
- test/core/util/subprocess_posix.cc
- test/core/util/subprocess_windows.cc
- test/core/util/test_config.cc
language: c++
headers: []
src:
- - test/core/client_channel/xds_bootstrap_test.cc
+ - test/core/xds/xds_bootstrap_test.cc
deps:
- grpc_test_util
- grpc
- gpr
- address_sorting
- upb
+- name: xds_certificate_provider_test
+ gtest: true
+ build: test
+ language: c++
+ headers: []
+ src:
+ - test/core/xds/xds_certificate_provider_test.cc
+ deps:
+ - grpc_test_util
+ - grpc
+ - gpr
+ - address_sorting
+ - upb
+- name: xds_credentials_end2end_test
+ gtest: true
+ build: test
+ language: c++
+ headers:
+ - test/cpp/end2end/test_service_impl.h
+ src:
+ - src/proto/grpc/testing/echo.proto
+ - src/proto/grpc/testing/echo_messages.proto
+ - src/proto/grpc/testing/simple_messages.proto
+ - test/cpp/end2end/test_service_impl.cc
+ - test/cpp/end2end/xds_credentials_end2end_test.cc
+ deps:
+ - grpc++_test_util
+ - grpc_test_util
+ - grpc++
+ - grpc
+ - gpr
+ - address_sorting
+ - upb
- name: xds_end2end_test
gtest: true
build: test
- src/proto/grpc/testing/xds/v3/load_report.proto
- src/proto/grpc/testing/xds/v3/lrs.proto
- src/proto/grpc/testing/xds/v3/percent.proto
+ - src/proto/grpc/testing/xds/v3/protocol.proto
- src/proto/grpc/testing/xds/v3/range.proto
- src/proto/grpc/testing/xds/v3/regex.proto
- src/proto/grpc/testing/xds/v3/route.proto
- gpr
- address_sorting
- upb
+ - absl/flags:flag
- name: xds_interop_server
build: test
run: false
- gpr
- address_sorting
- upb
+ - absl/flags:flag
tests: []
# limitations under the License.
module GrpcBuildConfig
- CORE_WINDOWS_DLL = '/tmp/libs/opt/grpc-13.dll'
+ CORE_WINDOWS_DLL = '/tmp/libs/opt/grpc-14.dll'
end
'#08': Use "-preN" suffixes to identify pre-release versions
'#09': Per-language overrides are possible with (eg) ruby_version tag here
'#10': See the expand_version.py for all the quirks here
- core_version: 13.0.0
+ core_version: 14.0.0
csharp_major_version: 2
- g_stands_for: geeky
- version: 1.33.2
+ g_stands_for: gauntlet
+ version: 1.34.0
targets:
- name: check_epollexclusive
build: tool
props: true
redist: true
version: 1.0.204.1
-- name: gflags
- props: false
- redist: false
- version: 2.1.2.1
- name: gtest
props: false
redist: false
+++ /dev/null
-# Copyright 2017 gRPC authors.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-if(gRPC_GFLAGS_PROVIDER STREQUAL "module")
- if(NOT GFLAGS_ROOT_DIR)
- set(GFLAGS_ROOT_DIR ${CMAKE_CURRENT_SOURCE_DIR}/third_party/gflags)
- endif()
- if(EXISTS "${GFLAGS_ROOT_DIR}/CMakeLists.txt")
- add_subdirectory(${GFLAGS_ROOT_DIR} third_party/gflags)
- set(_gRPC_GFLAGS_LIBRARIES gflags::gflags)
- else()
- message(WARNING "gRPC_GFLAGS_PROVIDER is \"module\" but GFLAGS_ROOT_DIR is wrong")
- endif()
-elseif(gRPC_GFLAGS_PROVIDER STREQUAL "package")
- # Use "CONFIG" as there is no built-in cmake module for gflags.
- find_package(gflags REQUIRED CONFIG)
- if(TARGET gflags::gflags)
- set(_gRPC_GFLAGS_LIBRARIES gflags::gflags)
- endif()
- set(_gRPC_FIND_GFLAGS "if(NOT gflags_FOUND)\n find_package(gflags CONFIG)\nendif()")
-elseif(gRPC_GFLAGS_PROVIDER STREQUAL "none")
- # gflags is a test-only dependency and can be avoided if we're not building tests.
-endif()
"homepage": "https://grpc.io",
"license": "Apache-2.0",
"require": {
- "php": ">=5.5.0"
+ "php": ">=7.0.0"
},
"require-dev": {
"google/auth": "^v1.3.0"
src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc \
src/core/ext/filters/client_channel/lb_policy/xds/cds.cc \
src/core/ext/filters/client_channel/lb_policy/xds/eds.cc \
- src/core/ext/filters/client_channel/lb_policy/xds/eds_drop.cc \
+ src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc \
src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc \
src/core/ext/filters/client_channel/lb_policy_registry.cc \
src/core/ext/filters/client_channel/local_subchannel_pool.cc \
src/core/ext/upb-generated/udpa/core/v1/resource_name.upb.c \
src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.c \
src/core/ext/upb-generated/validate/validate.upb.c \
+ src/core/ext/upbdefs-generated/envoy/annotations/deprecation.upbdefs.c \
+ src/core/ext/upbdefs-generated/envoy/annotations/resource.upbdefs.c \
+ src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.c \
+ src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.c \
+ src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c \
+ src/core/ext/upbdefs-generated/envoy/config/cluster/v3/filter.upbdefs.c \
+ src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.c \
+ src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.c \
+ src/core/ext/upbdefs-generated/envoy/config/core/v3/backoff.upbdefs.c \
+ src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.c \
+ src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.c \
+ src/core/ext/upbdefs-generated/envoy/config/core/v3/event_service_config.upbdefs.c \
+ src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.c \
+ src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_service.upbdefs.c \
+ src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.c \
+ src/core/ext/upbdefs-generated/envoy/config/core/v3/http_uri.upbdefs.c \
+ src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c \
+ src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.c \
+ src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.c \
+ src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.c \
+ src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.c \
+ src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.c \
+ src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/load_report.upbdefs.c \
+ src/core/ext/upbdefs-generated/envoy/config/listener/v3/api_listener.upbdefs.c \
+ src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.c \
+ src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.c \
+ src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.c \
+ src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.c \
+ src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c \
+ src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.c \
+ src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.c \
+ src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c \
+ src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.c \
+ src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c \
+ src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.c \
+ src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c \
+ src/core/ext/upbdefs-generated/envoy/service/cluster/v3/cds.upbdefs.c \
+ src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.c \
+ src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.c \
+ src/core/ext/upbdefs-generated/envoy/service/endpoint/v3/eds.upbdefs.c \
+ src/core/ext/upbdefs-generated/envoy/service/listener/v3/lds.upbdefs.c \
+ src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.c \
+ src/core/ext/upbdefs-generated/envoy/service/route/v3/rds.upbdefs.c \
+ src/core/ext/upbdefs-generated/envoy/service/route/v3/srds.upbdefs.c \
+ src/core/ext/upbdefs-generated/envoy/type/matcher/v3/metadata.upbdefs.c \
+ src/core/ext/upbdefs-generated/envoy/type/matcher/v3/number.upbdefs.c \
+ src/core/ext/upbdefs-generated/envoy/type/matcher/v3/path.upbdefs.c \
+ src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.c \
+ src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.c \
+ src/core/ext/upbdefs-generated/envoy/type/matcher/v3/value.upbdefs.c \
+ src/core/ext/upbdefs-generated/envoy/type/metadata/v3/metadata.upbdefs.c \
+ src/core/ext/upbdefs-generated/envoy/type/tracing/v3/custom_tag.upbdefs.c \
+ src/core/ext/upbdefs-generated/envoy/type/v3/http.upbdefs.c \
+ src/core/ext/upbdefs-generated/envoy/type/v3/percent.upbdefs.c \
+ src/core/ext/upbdefs-generated/envoy/type/v3/range.upbdefs.c \
+ src/core/ext/upbdefs-generated/envoy/type/v3/semantic_version.upbdefs.c \
+ src/core/ext/upbdefs-generated/google/api/annotations.upbdefs.c \
+ src/core/ext/upbdefs-generated/google/api/http.upbdefs.c \
+ src/core/ext/upbdefs-generated/google/protobuf/any.upbdefs.c \
+ src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.c \
+ src/core/ext/upbdefs-generated/google/protobuf/duration.upbdefs.c \
+ src/core/ext/upbdefs-generated/google/protobuf/empty.upbdefs.c \
+ src/core/ext/upbdefs-generated/google/protobuf/struct.upbdefs.c \
+ src/core/ext/upbdefs-generated/google/protobuf/timestamp.upbdefs.c \
+ src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.c \
+ src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.c \
+ src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.c \
+ src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.c \
+ src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.c \
+ src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.c \
+ src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.c \
+ src/core/ext/upbdefs-generated/udpa/core/v1/authority.upbdefs.c \
+ src/core/ext/upbdefs-generated/udpa/core/v1/collection_entry.upbdefs.c \
+ src/core/ext/upbdefs-generated/udpa/core/v1/context_params.upbdefs.c \
+ src/core/ext/upbdefs-generated/udpa/core/v1/resource.upbdefs.c \
+ src/core/ext/upbdefs-generated/udpa/core/v1/resource_locator.upbdefs.c \
+ src/core/ext/upbdefs-generated/udpa/core/v1/resource_name.upbdefs.c \
+ src/core/ext/upbdefs-generated/validate/validate.upbdefs.c \
src/core/ext/xds/certificate_provider_registry.cc \
+ src/core/ext/xds/certificate_provider_store.cc \
+ src/core/ext/xds/file_watcher_certificate_provider_factory.cc \
src/core/ext/xds/google_mesh_ca_certificate_provider_factory.cc \
src/core/ext/xds/xds_api.cc \
src/core/ext/xds/xds_bootstrap.cc \
+ src/core/ext/xds/xds_certificate_provider.cc \
src/core/ext/xds/xds_client.cc \
src/core/ext/xds/xds_client_stats.cc \
src/core/lib/avl/avl.cc \
src/core/lib/gpr/tmpfile_windows.cc \
src/core/lib/gpr/wrap_memcpy.cc \
src/core/lib/gprpp/arena.cc \
+ src/core/lib/gprpp/examine_stack.cc \
src/core/lib/gprpp/fork.cc \
src/core/lib/gprpp/global_config_env.cc \
src/core/lib/gprpp/host_port.cc \
src/core/lib/gprpp/mpscq.cc \
+ src/core/lib/gprpp/stat_posix.cc \
+ src/core/lib/gprpp/stat_windows.cc \
src/core/lib/gprpp/thd_posix.cc \
src/core/lib/gprpp/thd_windows.cc \
src/core/lib/http/format_request.cc \
src/core/lib/security/credentials/composite/composite_credentials.cc \
src/core/lib/security/credentials/credentials.cc \
src/core/lib/security/credentials/credentials_metadata.cc \
+ src/core/lib/security/credentials/external/aws_request_signer.cc \
+ src/core/lib/security/credentials/external/external_account_credentials.cc \
+ src/core/lib/security/credentials/external/file_external_account_credentials.cc \
+ src/core/lib/security/credentials/external/url_external_account_credentials.cc \
src/core/lib/security/credentials/fake/fake_credentials.cc \
src/core/lib/security/credentials/google_default/credentials_generic.cc \
src/core/lib/security/credentials/google_default/google_default_credentials.cc \
src/core/lib/security/credentials/iam/iam_credentials.cc \
+ src/core/lib/security/credentials/insecure/insecure_credentials.cc \
src/core/lib/security/credentials/jwt/json_token.cc \
src/core/lib/security/credentials/jwt/jwt_credentials.cc \
src/core/lib/security/credentials/jwt/jwt_verifier.cc \
src/core/lib/security/credentials/plugin/plugin_credentials.cc \
src/core/lib/security/credentials/ssl/ssl_credentials.cc \
src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc \
+ src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc \
src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc \
src/core/lib/security/credentials/tls/tls_credentials.cc \
src/core/lib/security/credentials/xds/xds_credentials.cc \
src/core/lib/security/security_connector/alts/alts_security_connector.cc \
src/core/lib/security/security_connector/fake/fake_security_connector.cc \
+ src/core/lib/security/security_connector/insecure/insecure_security_connector.cc \
src/core/lib/security/security_connector/load_system_roots_fallback.cc \
src/core/lib/security/security_connector/load_system_roots_linux.cc \
src/core/lib/security/security_connector/local/local_security_connector.cc \
src/php/ext/grpc/server.c \
src/php/ext/grpc/server_credentials.c \
src/php/ext/grpc/timeval.c \
- third_party/abseil-cpp/absl/base/dynamic_annotations.cc \
third_party/abseil-cpp/absl/base/internal/cycleclock.cc \
third_party/abseil-cpp/absl/base/internal/exponential_biased.cc \
third_party/abseil-cpp/absl/base/internal/low_level_alloc.cc \
third_party/boringssl-with-bazel/src/crypto/thread_win.c \
third_party/boringssl-with-bazel/src/crypto/trust_token/pmbtoken.c \
third_party/boringssl-with-bazel/src/crypto/trust_token/trust_token.c \
+ third_party/boringssl-with-bazel/src/crypto/trust_token/voprf.c \
third_party/boringssl-with-bazel/src/crypto/x509/a_digest.c \
third_party/boringssl-with-bazel/src/crypto/x509/a_sign.c \
third_party/boringssl-with-bazel/src/crypto/x509/a_strex.c \
third_party/re2/util/rune.cc \
third_party/re2/util/strutil.cc \
third_party/upb/upb/decode.c \
+ third_party/upb/upb/def.c \
third_party/upb/upb/encode.c \
third_party/upb/upb/msg.c \
third_party/upb/upb/port.c \
+ third_party/upb/upb/reflection.c \
third_party/upb/upb/table.c \
+ third_party/upb/upb/text_encode.c \
third_party/upb/upb/upb.c \
, $ext_shared, , -fvisibility=hidden \
-DOPENSSL_NO_ASM -D_GNU_SOURCE -DWIN32_LEAN_AND_MEAN \
PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/upb-generated/udpa/core/v1)
PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/upb-generated/udpa/data/orca/v1)
PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/upb-generated/validate)
+ PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/upbdefs-generated/envoy/annotations)
+ PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3)
+ PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/upbdefs-generated/envoy/config/cluster/v3)
+ PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/upbdefs-generated/envoy/config/core/v3)
+ PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3)
+ PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/upbdefs-generated/envoy/config/listener/v3)
+ PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/upbdefs-generated/envoy/config/route/v3)
+ PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/upbdefs-generated/envoy/config/trace/v3)
+ PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3)
+ PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3)
+ PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/upbdefs-generated/envoy/service/cluster/v3)
+ PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/upbdefs-generated/envoy/service/discovery/v3)
+ PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/upbdefs-generated/envoy/service/endpoint/v3)
+ PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/upbdefs-generated/envoy/service/listener/v3)
+ PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/upbdefs-generated/envoy/service/load_stats/v3)
+ PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/upbdefs-generated/envoy/service/route/v3)
+ PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/upbdefs-generated/envoy/type/matcher/v3)
+ PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/upbdefs-generated/envoy/type/metadata/v3)
+ PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/upbdefs-generated/envoy/type/tracing/v3)
+ PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/upbdefs-generated/envoy/type/v3)
+ PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/upbdefs-generated/google/api)
+ PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/upbdefs-generated/google/protobuf)
+ PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/upbdefs-generated/google/rpc)
+ PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/upbdefs-generated/udpa/annotations)
+ PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/upbdefs-generated/udpa/core/v1)
+ PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/upbdefs-generated/validate)
PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/xds)
PHP_ADD_BUILD_DIR($ext_builddir/src/core/lib/avl)
PHP_ADD_BUILD_DIR($ext_builddir/src/core/lib/backoff)
PHP_ADD_BUILD_DIR($ext_builddir/src/core/lib/security/credentials)
PHP_ADD_BUILD_DIR($ext_builddir/src/core/lib/security/credentials/alts)
PHP_ADD_BUILD_DIR($ext_builddir/src/core/lib/security/credentials/composite)
+ PHP_ADD_BUILD_DIR($ext_builddir/src/core/lib/security/credentials/external)
PHP_ADD_BUILD_DIR($ext_builddir/src/core/lib/security/credentials/fake)
PHP_ADD_BUILD_DIR($ext_builddir/src/core/lib/security/credentials/google_default)
PHP_ADD_BUILD_DIR($ext_builddir/src/core/lib/security/credentials/iam)
+ PHP_ADD_BUILD_DIR($ext_builddir/src/core/lib/security/credentials/insecure)
PHP_ADD_BUILD_DIR($ext_builddir/src/core/lib/security/credentials/jwt)
PHP_ADD_BUILD_DIR($ext_builddir/src/core/lib/security/credentials/local)
PHP_ADD_BUILD_DIR($ext_builddir/src/core/lib/security/credentials/oauth2)
PHP_ADD_BUILD_DIR($ext_builddir/src/core/lib/security/security_connector)
PHP_ADD_BUILD_DIR($ext_builddir/src/core/lib/security/security_connector/alts)
PHP_ADD_BUILD_DIR($ext_builddir/src/core/lib/security/security_connector/fake)
+ PHP_ADD_BUILD_DIR($ext_builddir/src/core/lib/security/security_connector/insecure)
PHP_ADD_BUILD_DIR($ext_builddir/src/core/lib/security/security_connector/local)
PHP_ADD_BUILD_DIR($ext_builddir/src/core/lib/security/security_connector/ssl)
PHP_ADD_BUILD_DIR($ext_builddir/src/core/lib/security/security_connector/tls)
"src\\core\\ext\\filters\\client_channel\\lb_policy\\weighted_target\\weighted_target.cc " +
"src\\core\\ext\\filters\\client_channel\\lb_policy\\xds\\cds.cc " +
"src\\core\\ext\\filters\\client_channel\\lb_policy\\xds\\eds.cc " +
- "src\\core\\ext\\filters\\client_channel\\lb_policy\\xds\\eds_drop.cc " +
+ "src\\core\\ext\\filters\\client_channel\\lb_policy\\xds\\xds_cluster_impl.cc " +
"src\\core\\ext\\filters\\client_channel\\lb_policy\\xds\\xds_cluster_manager.cc " +
"src\\core\\ext\\filters\\client_channel\\lb_policy_registry.cc " +
"src\\core\\ext\\filters\\client_channel\\local_subchannel_pool.cc " +
"src\\core\\ext\\upb-generated\\udpa\\core\\v1\\resource_name.upb.c " +
"src\\core\\ext\\upb-generated\\udpa\\data\\orca\\v1\\orca_load_report.upb.c " +
"src\\core\\ext\\upb-generated\\validate\\validate.upb.c " +
+ "src\\core\\ext\\upbdefs-generated\\envoy\\annotations\\deprecation.upbdefs.c " +
+ "src\\core\\ext\\upbdefs-generated\\envoy\\annotations\\resource.upbdefs.c " +
+ "src\\core\\ext\\upbdefs-generated\\envoy\\config\\accesslog\\v3\\accesslog.upbdefs.c " +
+ "src\\core\\ext\\upbdefs-generated\\envoy\\config\\cluster\\v3\\circuit_breaker.upbdefs.c " +
+ "src\\core\\ext\\upbdefs-generated\\envoy\\config\\cluster\\v3\\cluster.upbdefs.c " +
+ "src\\core\\ext\\upbdefs-generated\\envoy\\config\\cluster\\v3\\filter.upbdefs.c " +
+ "src\\core\\ext\\upbdefs-generated\\envoy\\config\\cluster\\v3\\outlier_detection.upbdefs.c " +
+ "src\\core\\ext\\upbdefs-generated\\envoy\\config\\core\\v3\\address.upbdefs.c " +
+ "src\\core\\ext\\upbdefs-generated\\envoy\\config\\core\\v3\\backoff.upbdefs.c " +
+ "src\\core\\ext\\upbdefs-generated\\envoy\\config\\core\\v3\\base.upbdefs.c " +
+ "src\\core\\ext\\upbdefs-generated\\envoy\\config\\core\\v3\\config_source.upbdefs.c " +
+ "src\\core\\ext\\upbdefs-generated\\envoy\\config\\core\\v3\\event_service_config.upbdefs.c " +
+ "src\\core\\ext\\upbdefs-generated\\envoy\\config\\core\\v3\\extension.upbdefs.c " +
+ "src\\core\\ext\\upbdefs-generated\\envoy\\config\\core\\v3\\grpc_service.upbdefs.c " +
+ "src\\core\\ext\\upbdefs-generated\\envoy\\config\\core\\v3\\health_check.upbdefs.c " +
+ "src\\core\\ext\\upbdefs-generated\\envoy\\config\\core\\v3\\http_uri.upbdefs.c " +
+ "src\\core\\ext\\upbdefs-generated\\envoy\\config\\core\\v3\\protocol.upbdefs.c " +
+ "src\\core\\ext\\upbdefs-generated\\envoy\\config\\core\\v3\\proxy_protocol.upbdefs.c " +
+ "src\\core\\ext\\upbdefs-generated\\envoy\\config\\core\\v3\\socket_option.upbdefs.c " +
+ "src\\core\\ext\\upbdefs-generated\\envoy\\config\\core\\v3\\substitution_format_string.upbdefs.c " +
+ "src\\core\\ext\\upbdefs-generated\\envoy\\config\\endpoint\\v3\\endpoint.upbdefs.c " +
+ "src\\core\\ext\\upbdefs-generated\\envoy\\config\\endpoint\\v3\\endpoint_components.upbdefs.c " +
+ "src\\core\\ext\\upbdefs-generated\\envoy\\config\\endpoint\\v3\\load_report.upbdefs.c " +
+ "src\\core\\ext\\upbdefs-generated\\envoy\\config\\listener\\v3\\api_listener.upbdefs.c " +
+ "src\\core\\ext\\upbdefs-generated\\envoy\\config\\listener\\v3\\listener.upbdefs.c " +
+ "src\\core\\ext\\upbdefs-generated\\envoy\\config\\listener\\v3\\listener_components.upbdefs.c " +
+ "src\\core\\ext\\upbdefs-generated\\envoy\\config\\listener\\v3\\udp_listener_config.upbdefs.c " +
+ "src\\core\\ext\\upbdefs-generated\\envoy\\config\\route\\v3\\route.upbdefs.c " +
+ "src\\core\\ext\\upbdefs-generated\\envoy\\config\\route\\v3\\route_components.upbdefs.c " +
+ "src\\core\\ext\\upbdefs-generated\\envoy\\config\\route\\v3\\scoped_route.upbdefs.c " +
+ "src\\core\\ext\\upbdefs-generated\\envoy\\config\\trace\\v3\\http_tracer.upbdefs.c " +
+ "src\\core\\ext\\upbdefs-generated\\envoy\\extensions\\filters\\network\\http_connection_manager\\v3\\http_connection_manager.upbdefs.c " +
+ "src\\core\\ext\\upbdefs-generated\\envoy\\extensions\\transport_sockets\\tls\\v3\\cert.upbdefs.c " +
+ "src\\core\\ext\\upbdefs-generated\\envoy\\extensions\\transport_sockets\\tls\\v3\\common.upbdefs.c " +
+ "src\\core\\ext\\upbdefs-generated\\envoy\\extensions\\transport_sockets\\tls\\v3\\secret.upbdefs.c " +
+ "src\\core\\ext\\upbdefs-generated\\envoy\\extensions\\transport_sockets\\tls\\v3\\tls.upbdefs.c " +
+ "src\\core\\ext\\upbdefs-generated\\envoy\\service\\cluster\\v3\\cds.upbdefs.c " +
+ "src\\core\\ext\\upbdefs-generated\\envoy\\service\\discovery\\v3\\ads.upbdefs.c " +
+ "src\\core\\ext\\upbdefs-generated\\envoy\\service\\discovery\\v3\\discovery.upbdefs.c " +
+ "src\\core\\ext\\upbdefs-generated\\envoy\\service\\endpoint\\v3\\eds.upbdefs.c " +
+ "src\\core\\ext\\upbdefs-generated\\envoy\\service\\listener\\v3\\lds.upbdefs.c " +
+ "src\\core\\ext\\upbdefs-generated\\envoy\\service\\load_stats\\v3\\lrs.upbdefs.c " +
+ "src\\core\\ext\\upbdefs-generated\\envoy\\service\\route\\v3\\rds.upbdefs.c " +
+ "src\\core\\ext\\upbdefs-generated\\envoy\\service\\route\\v3\\srds.upbdefs.c " +
+ "src\\core\\ext\\upbdefs-generated\\envoy\\type\\matcher\\v3\\metadata.upbdefs.c " +
+ "src\\core\\ext\\upbdefs-generated\\envoy\\type\\matcher\\v3\\number.upbdefs.c " +
+ "src\\core\\ext\\upbdefs-generated\\envoy\\type\\matcher\\v3\\path.upbdefs.c " +
+ "src\\core\\ext\\upbdefs-generated\\envoy\\type\\matcher\\v3\\regex.upbdefs.c " +
+ "src\\core\\ext\\upbdefs-generated\\envoy\\type\\matcher\\v3\\string.upbdefs.c " +
+ "src\\core\\ext\\upbdefs-generated\\envoy\\type\\matcher\\v3\\value.upbdefs.c " +
+ "src\\core\\ext\\upbdefs-generated\\envoy\\type\\metadata\\v3\\metadata.upbdefs.c " +
+ "src\\core\\ext\\upbdefs-generated\\envoy\\type\\tracing\\v3\\custom_tag.upbdefs.c " +
+ "src\\core\\ext\\upbdefs-generated\\envoy\\type\\v3\\http.upbdefs.c " +
+ "src\\core\\ext\\upbdefs-generated\\envoy\\type\\v3\\percent.upbdefs.c " +
+ "src\\core\\ext\\upbdefs-generated\\envoy\\type\\v3\\range.upbdefs.c " +
+ "src\\core\\ext\\upbdefs-generated\\envoy\\type\\v3\\semantic_version.upbdefs.c " +
+ "src\\core\\ext\\upbdefs-generated\\google\\api\\annotations.upbdefs.c " +
+ "src\\core\\ext\\upbdefs-generated\\google\\api\\http.upbdefs.c " +
+ "src\\core\\ext\\upbdefs-generated\\google\\protobuf\\any.upbdefs.c " +
+ "src\\core\\ext\\upbdefs-generated\\google\\protobuf\\descriptor.upbdefs.c " +
+ "src\\core\\ext\\upbdefs-generated\\google\\protobuf\\duration.upbdefs.c " +
+ "src\\core\\ext\\upbdefs-generated\\google\\protobuf\\empty.upbdefs.c " +
+ "src\\core\\ext\\upbdefs-generated\\google\\protobuf\\struct.upbdefs.c " +
+ "src\\core\\ext\\upbdefs-generated\\google\\protobuf\\timestamp.upbdefs.c " +
+ "src\\core\\ext\\upbdefs-generated\\google\\protobuf\\wrappers.upbdefs.c " +
+ "src\\core\\ext\\upbdefs-generated\\google\\rpc\\status.upbdefs.c " +
+ "src\\core\\ext\\upbdefs-generated\\udpa\\annotations\\migrate.upbdefs.c " +
+ "src\\core\\ext\\upbdefs-generated\\udpa\\annotations\\security.upbdefs.c " +
+ "src\\core\\ext\\upbdefs-generated\\udpa\\annotations\\sensitive.upbdefs.c " +
+ "src\\core\\ext\\upbdefs-generated\\udpa\\annotations\\status.upbdefs.c " +
+ "src\\core\\ext\\upbdefs-generated\\udpa\\annotations\\versioning.upbdefs.c " +
+ "src\\core\\ext\\upbdefs-generated\\udpa\\core\\v1\\authority.upbdefs.c " +
+ "src\\core\\ext\\upbdefs-generated\\udpa\\core\\v1\\collection_entry.upbdefs.c " +
+ "src\\core\\ext\\upbdefs-generated\\udpa\\core\\v1\\context_params.upbdefs.c " +
+ "src\\core\\ext\\upbdefs-generated\\udpa\\core\\v1\\resource.upbdefs.c " +
+ "src\\core\\ext\\upbdefs-generated\\udpa\\core\\v1\\resource_locator.upbdefs.c " +
+ "src\\core\\ext\\upbdefs-generated\\udpa\\core\\v1\\resource_name.upbdefs.c " +
+ "src\\core\\ext\\upbdefs-generated\\validate\\validate.upbdefs.c " +
"src\\core\\ext\\xds\\certificate_provider_registry.cc " +
+ "src\\core\\ext\\xds\\certificate_provider_store.cc " +
+ "src\\core\\ext\\xds\\file_watcher_certificate_provider_factory.cc " +
"src\\core\\ext\\xds\\google_mesh_ca_certificate_provider_factory.cc " +
"src\\core\\ext\\xds\\xds_api.cc " +
"src\\core\\ext\\xds\\xds_bootstrap.cc " +
+ "src\\core\\ext\\xds\\xds_certificate_provider.cc " +
"src\\core\\ext\\xds\\xds_client.cc " +
"src\\core\\ext\\xds\\xds_client_stats.cc " +
"src\\core\\lib\\avl\\avl.cc " +
"src\\core\\lib\\gpr\\tmpfile_windows.cc " +
"src\\core\\lib\\gpr\\wrap_memcpy.cc " +
"src\\core\\lib\\gprpp\\arena.cc " +
+ "src\\core\\lib\\gprpp\\examine_stack.cc " +
"src\\core\\lib\\gprpp\\fork.cc " +
"src\\core\\lib\\gprpp\\global_config_env.cc " +
"src\\core\\lib\\gprpp\\host_port.cc " +
"src\\core\\lib\\gprpp\\mpscq.cc " +
+ "src\\core\\lib\\gprpp\\stat_posix.cc " +
+ "src\\core\\lib\\gprpp\\stat_windows.cc " +
"src\\core\\lib\\gprpp\\thd_posix.cc " +
"src\\core\\lib\\gprpp\\thd_windows.cc " +
"src\\core\\lib\\http\\format_request.cc " +
"src\\core\\lib\\security\\credentials\\composite\\composite_credentials.cc " +
"src\\core\\lib\\security\\credentials\\credentials.cc " +
"src\\core\\lib\\security\\credentials\\credentials_metadata.cc " +
+ "src\\core\\lib\\security\\credentials\\external\\aws_request_signer.cc " +
+ "src\\core\\lib\\security\\credentials\\external\\external_account_credentials.cc " +
+ "src\\core\\lib\\security\\credentials\\external\\file_external_account_credentials.cc " +
+ "src\\core\\lib\\security\\credentials\\external\\url_external_account_credentials.cc " +
"src\\core\\lib\\security\\credentials\\fake\\fake_credentials.cc " +
"src\\core\\lib\\security\\credentials\\google_default\\credentials_generic.cc " +
"src\\core\\lib\\security\\credentials\\google_default\\google_default_credentials.cc " +
"src\\core\\lib\\security\\credentials\\iam\\iam_credentials.cc " +
+ "src\\core\\lib\\security\\credentials\\insecure\\insecure_credentials.cc " +
"src\\core\\lib\\security\\credentials\\jwt\\json_token.cc " +
"src\\core\\lib\\security\\credentials\\jwt\\jwt_credentials.cc " +
"src\\core\\lib\\security\\credentials\\jwt\\jwt_verifier.cc " +
"src\\core\\lib\\security\\credentials\\plugin\\plugin_credentials.cc " +
"src\\core\\lib\\security\\credentials\\ssl\\ssl_credentials.cc " +
"src\\core\\lib\\security\\credentials\\tls\\grpc_tls_certificate_distributor.cc " +
+ "src\\core\\lib\\security\\credentials\\tls\\grpc_tls_certificate_provider.cc " +
"src\\core\\lib\\security\\credentials\\tls\\grpc_tls_credentials_options.cc " +
"src\\core\\lib\\security\\credentials\\tls\\tls_credentials.cc " +
"src\\core\\lib\\security\\credentials\\xds\\xds_credentials.cc " +
"src\\core\\lib\\security\\security_connector\\alts\\alts_security_connector.cc " +
"src\\core\\lib\\security\\security_connector\\fake\\fake_security_connector.cc " +
+ "src\\core\\lib\\security\\security_connector\\insecure\\insecure_security_connector.cc " +
"src\\core\\lib\\security\\security_connector\\load_system_roots_fallback.cc " +
"src\\core\\lib\\security\\security_connector\\load_system_roots_linux.cc " +
"src\\core\\lib\\security\\security_connector\\local\\local_security_connector.cc " +
"src\\php\\ext\\grpc\\server.c " +
"src\\php\\ext\\grpc\\server_credentials.c " +
"src\\php\\ext\\grpc\\timeval.c " +
- "third_party\\abseil-cpp\\absl\\base\\dynamic_annotations.cc " +
"third_party\\abseil-cpp\\absl\\base\\internal\\cycleclock.cc " +
"third_party\\abseil-cpp\\absl\\base\\internal\\exponential_biased.cc " +
"third_party\\abseil-cpp\\absl\\base\\internal\\low_level_alloc.cc " +
"third_party\\boringssl-with-bazel\\src\\crypto\\thread_win.c " +
"third_party\\boringssl-with-bazel\\src\\crypto\\trust_token\\pmbtoken.c " +
"third_party\\boringssl-with-bazel\\src\\crypto\\trust_token\\trust_token.c " +
+ "third_party\\boringssl-with-bazel\\src\\crypto\\trust_token\\voprf.c " +
"third_party\\boringssl-with-bazel\\src\\crypto\\x509\\a_digest.c " +
"third_party\\boringssl-with-bazel\\src\\crypto\\x509\\a_sign.c " +
"third_party\\boringssl-with-bazel\\src\\crypto\\x509\\a_strex.c " +
"third_party\\re2\\util\\rune.cc " +
"third_party\\re2\\util\\strutil.cc " +
"third_party\\upb\\upb\\decode.c " +
+ "third_party\\upb\\upb\\def.c " +
"third_party\\upb\\upb\\encode.c " +
"third_party\\upb\\upb\\msg.c " +
"third_party\\upb\\upb\\port.c " +
+ "third_party\\upb\\upb\\reflection.c " +
"third_party\\upb\\upb\\table.c " +
+ "third_party\\upb\\upb\\text_encode.c " +
"third_party\\upb\\upb\\upb.c " +
"third_party\\zlib\\adler32.c " +
"third_party\\zlib\\compress.c " +
"/I"+configure_module_dirname+" "+
"/I"+configure_module_dirname+"\\include "+
"/I"+configure_module_dirname+"\\src\\core\\ext\\upb-generated "+
+ "/I"+configure_module_dirname+"\\src\\core\\ext\\upbdefs-generated "+
"/I"+configure_module_dirname+"\\src\\php\\ext\\grpc "+
"/I"+configure_module_dirname+"\\third_party\\abseil-cpp "+
"/I"+configure_module_dirname+"\\third_party\\address_sorting\\include "+
FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\ext\\upb-generated\\udpa\\data\\orca");
FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\ext\\upb-generated\\udpa\\data\\orca\\v1");
FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\ext\\upb-generated\\validate");
+ FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\ext\\upbdefs-generated");
+ FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\ext\\upbdefs-generated\\envoy");
+ FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\ext\\upbdefs-generated\\envoy\\annotations");
+ FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\ext\\upbdefs-generated\\envoy\\config");
+ FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\ext\\upbdefs-generated\\envoy\\config\\accesslog");
+ FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\ext\\upbdefs-generated\\envoy\\config\\accesslog\\v3");
+ FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\ext\\upbdefs-generated\\envoy\\config\\cluster");
+ FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\ext\\upbdefs-generated\\envoy\\config\\cluster\\v3");
+ FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\ext\\upbdefs-generated\\envoy\\config\\core");
+ FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\ext\\upbdefs-generated\\envoy\\config\\core\\v3");
+ FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\ext\\upbdefs-generated\\envoy\\config\\endpoint");
+ FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\ext\\upbdefs-generated\\envoy\\config\\endpoint\\v3");
+ FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\ext\\upbdefs-generated\\envoy\\config\\listener");
+ FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\ext\\upbdefs-generated\\envoy\\config\\listener\\v3");
+ FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\ext\\upbdefs-generated\\envoy\\config\\route");
+ FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\ext\\upbdefs-generated\\envoy\\config\\route\\v3");
+ FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\ext\\upbdefs-generated\\envoy\\config\\trace");
+ FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\ext\\upbdefs-generated\\envoy\\config\\trace\\v3");
+ FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\ext\\upbdefs-generated\\envoy\\extensions");
+ FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\ext\\upbdefs-generated\\envoy\\extensions\\filters");
+ FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\ext\\upbdefs-generated\\envoy\\extensions\\filters\\network");
+ FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\ext\\upbdefs-generated\\envoy\\extensions\\filters\\network\\http_connection_manager");
+ FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\ext\\upbdefs-generated\\envoy\\extensions\\filters\\network\\http_connection_manager\\v3");
+ FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\ext\\upbdefs-generated\\envoy\\extensions\\transport_sockets");
+ FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\ext\\upbdefs-generated\\envoy\\extensions\\transport_sockets\\tls");
+ FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\ext\\upbdefs-generated\\envoy\\extensions\\transport_sockets\\tls\\v3");
+ FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\ext\\upbdefs-generated\\envoy\\service");
+ FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\ext\\upbdefs-generated\\envoy\\service\\cluster");
+ FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\ext\\upbdefs-generated\\envoy\\service\\cluster\\v3");
+ FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\ext\\upbdefs-generated\\envoy\\service\\discovery");
+ FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\ext\\upbdefs-generated\\envoy\\service\\discovery\\v3");
+ FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\ext\\upbdefs-generated\\envoy\\service\\endpoint");
+ FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\ext\\upbdefs-generated\\envoy\\service\\endpoint\\v3");
+ FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\ext\\upbdefs-generated\\envoy\\service\\listener");
+ FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\ext\\upbdefs-generated\\envoy\\service\\listener\\v3");
+ FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\ext\\upbdefs-generated\\envoy\\service\\load_stats");
+ FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\ext\\upbdefs-generated\\envoy\\service\\load_stats\\v3");
+ FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\ext\\upbdefs-generated\\envoy\\service\\route");
+ FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\ext\\upbdefs-generated\\envoy\\service\\route\\v3");
+ FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\ext\\upbdefs-generated\\envoy\\type");
+ FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\ext\\upbdefs-generated\\envoy\\type\\matcher");
+ FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\ext\\upbdefs-generated\\envoy\\type\\matcher\\v3");
+ FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\ext\\upbdefs-generated\\envoy\\type\\metadata");
+ FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\ext\\upbdefs-generated\\envoy\\type\\metadata\\v3");
+ FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\ext\\upbdefs-generated\\envoy\\type\\tracing");
+ FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\ext\\upbdefs-generated\\envoy\\type\\tracing\\v3");
+ FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\ext\\upbdefs-generated\\envoy\\type\\v3");
+ FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\ext\\upbdefs-generated\\google");
+ FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\ext\\upbdefs-generated\\google\\api");
+ FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\ext\\upbdefs-generated\\google\\protobuf");
+ FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\ext\\upbdefs-generated\\google\\rpc");
+ FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\ext\\upbdefs-generated\\udpa");
+ FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\ext\\upbdefs-generated\\udpa\\annotations");
+ FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\ext\\upbdefs-generated\\udpa\\core");
+ FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\ext\\upbdefs-generated\\udpa\\core\\v1");
+ FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\ext\\upbdefs-generated\\validate");
FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\ext\\xds");
FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\lib");
FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\lib\\avl");
FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\lib\\security\\credentials");
FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\lib\\security\\credentials\\alts");
FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\lib\\security\\credentials\\composite");
+ FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\lib\\security\\credentials\\external");
FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\lib\\security\\credentials\\fake");
FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\lib\\security\\credentials\\google_default");
FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\lib\\security\\credentials\\iam");
+ FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\lib\\security\\credentials\\insecure");
FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\lib\\security\\credentials\\jwt");
FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\lib\\security\\credentials\\local");
FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\lib\\security\\credentials\\oauth2");
FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\lib\\security\\security_connector");
FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\lib\\security\\security_connector\\alts");
FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\lib\\security\\security_connector\\fake");
+ FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\lib\\security\\security_connector\\insecure");
FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\lib\\security\\security_connector\\local");
FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\lib\\security\\security_connector\\ssl");
FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\lib\\security\\security_connector\\tls");
git submodule update --init
```
-You also need to have the gflags library installed on your system. gflags can be
-installed with the following command:
-Linux:
-```
-sudo apt-get install libgflags-dev
-```
-Mac systems with Homebrew:
-```
-brew install gflags
-```
-
Once the prerequisites are satisfied, you can build with cmake:
```
(cannot be done until after next grpc release, so that TensorFlow can
use the same code both internally and externally)
- require a C++ runtime for all languages wrapping core.
+- remove `GRPC_ARG_HTTP2_MIN_SENT_PING_INTERVAL_WITHOUT_DATA_MS` channel arg
+
Services =
{
// the server will serve 2 services, the Greeter and the ServerReflection
- ServerReflection.BindService(new GreeterImpl()),
+ Greeter.BindService(new GreeterImpl()),
ServerReflection.BindService(reflectionServiceImpl)
},
Ports = { { "localhost", 50051, ServerCredentials.Insecure } }
- inproc - traces the in-process transport
- http_keepalive - traces gRPC keepalive pings
- flowctl - traces http2 flow control
- - lrs_lb - traces lrs LB policy
- op_failure - traces error information when failure is pushed onto a
completion queue
- pick_first - traces the pick first load balancing policy
- weighted_target_lb - traces weighted_target LB policy
- xds_client - traces xds client
- xds_cluster_manager_lb - traces cluster manager LB policy
+ - xds_cluster_impl_lb - traces cluster impl LB policy
- xds_resolver - traces xds resolver
The following tracers will only run in binaries built in DEBUG mode. This is
- 1.31 'g' stands for ['galore'](https://github.com/grpc/grpc/tree/v1.31.x)
- 1.32 'g' stands for ['giggle'](https://github.com/grpc/grpc/tree/v1.32.x)
- 1.33 'g' stands for ['geeky'](https://github.com/grpc/grpc/tree/v1.33.x)
+- 1.34 'g' stands for ['gauntlet'](https://github.com/grpc/grpc/tree/v1.34.x)
+- 1.35 'g' stands for ['gecko'](https://github.com/grpc/grpc/tree/master)
* This channel argument if set to 1 (0 : false; 1 : true), allows keepalive pings to be sent even if there are no calls in flight.
* **GRPC_ARG_HTTP2_MAX_PINGS_WITHOUT_DATA**
* This channel argument controls the maximum number of pings that can be sent when there is no data/header frame to be sent. GRPC Core will not continue sending pings if we run over the limit. Setting it to 0 allows sending pings without such a restriction.
-* **GRPC_ARG_HTTP2_MIN_SENT_PING_INTERVAL_WITHOUT_DATA_MS**
- * If there are no data/header frames being received on the transport, this channel argument controls the minimum time (in milliseconds) gRPC Core will wait between successive pings.
* **GRPC_ARG_HTTP2_MIN_RECV_PING_INTERVAL_WITHOUT_DATA_MS**
* If there are no data/header frames being sent on the transport, this channel argument on the server side controls the minimum time (in milliseconds) that gRPC Core would expect between receiving successive pings. If the time between successive pings is less that than this time, then the ping will be considered a bad ping from the peer. Such a ping counts as a ‘ping strike’.
On the client side, this does not have any effect.
GRPC_ARG_KEEPALIVE_TIMEOUT_MS|20000 (20 seconds)|20000 (20 seconds)
GRPC_ARG_KEEPALIVE_PERMIT_WITHOUT_CALLS|0 (false)|0 (false)
GRPC_ARG_HTTP2_MAX_PINGS_WITHOUT_DATA|2|2
-GRPC_ARG_HTTP2_MIN_SENT_PING_INTERVAL_WITHOUT_DATA_MS|300000 (5 minutes)|300000 (5 minutes)
GRPC_ARG_HTTP2_MIN_RECV_PING_INTERVAL_WITHOUT_DATA_MS|N/A|300000 (5 minutes)
GRPC_ARG_HTTP2_MAX_PING_STRIKES|N/A|2
* The keepalive timer is started when a transport is done connecting (after handshake).
* What happens when the keepalive timer fires?
* When the keepalive timer fires, gRPC Core will try to send a keepalive ping on the transport. This ping can be blocked if -
- * there is no active call on that transport and GRPC_ARG_KEEPALIVE_PERMIT_WITHOUT_CALLS is false.
- * the number of pings already sent on the transport without any data has already exceeded GRPC_ARG_HTTP2_MAX_PINGS_WITHOUT_DATA.
- * the time elapsed since the previous ping is less than GRPC_ARG_HTTP2_MIN_SENT_PING_INTERVAL_WITHOUT_DATA_MS.
+ * there is no active call on that transport and `GRPC_ARG_KEEPALIVE_PERMIT_WITHOUT_CALLS` is false.
+ * the number of pings already sent on the transport without any data has already exceeded `GRPC_ARG_HTTP2_MAX_PINGS_WITHOUT_DATA`.
* If a keepalive ping is not blocked and is sent on the transport, then the keepalive watchdog timer is started which will close the transport if the ping is not acknowledged before it fires.
-* Why am I receiving a GOAWAY with error code ENHANCE_YOUR_CALM?
- * A server sends a GOAWAY with ENHANCE_YOUR_CALM if the client sends too many misbehaving pings. For example -
- * if a server has GRPC_ARG_KEEPALIVE_PERMIT_WITHOUT_CALLS set to false and the client sends pings without there being any call in flight.
- * if the client's GRPC_ARG_HTTP2_MIN_SENT_PING_INTERVAL_WITHOUT_DATA_MS setting is lower than the server's GRPC_ARG_HTTP2_MIN_RECV_PING_INTERVAL_WITHOUT_DATA_MS.
+* Why am I receiving a GOAWAY with error code `ENHANCE_YOUR_CALM`?
+ * A server sends a GOAWAY with `ENHANCE_YOUR_CALM` if the client sends too many misbehaving pings as described in [A8-client-side-keepalive.md](https://github.com/grpc/proposal/blob/master/A8-client-side-keepalive.md). Some scenarios where this can happen are -
+ * if a server has `GRPC_ARG_KEEPALIVE_PERMIT_WITHOUT_CALLS` set to false while the client has set this to true resulting in keepalive pings being sent even when there is no call in flight.
+ * if the client's `GRPC_ARG_KEEPALIVE_TIME_MS` setting is lower than the server's `GRPC_ARG_HTTP2_MIN_RECV_PING_INTERVAL_WITHOUT_DATA_MS`.
resolver does not support this, but the c-ares based resolver
supports specifying this in the form "IP:port".)
-- `unix:path` or `unix://absolute_path` -- Unix domain sockets (Unix systems only)
+- `unix:path`, `unix://absolute_path` -- Unix domain sockets (Unix systems only)
- `path` indicates the location of the desired socket.
- In the first form, the path may be relative or absolute; in the
second form, the path must be absolute (i.e., there will actually be
three slashes, two prior to the path and another to begin the
absolute path).
+- `unix-abstract:abstract_path` -- Unix domain socket in abstract namespace (Unix systems only)
+ - `abstract_path` indicates a name in the abstract namespace.
+ - The name has no connection with filesystem pathnames.
+ - No permissions will apply to the socket - any process/user may access the socket.
+ - The underlying implementation of Abstract sockets uses a null byte ('\0')
+ as the first character; the implementation will prepend this null. Do not include
+ the null in `abstract_path`.
+ - `abstract_path` cannot contain null bytes.
+ - TODO(https://github.com/grpc/grpc/issues/24638): Unix allows abstract socket names to contain null bytes,
+ but this is not supported by the gRPC C-core implementation.
+
The following schemes are supported by the gRPC C-core implementation,
but may not be supported in other languages:
.. module:: grpc
-Tutorial
---------
-
-If you want to see gRPC in action first, visit the `Python Quickstart <https://grpc.io/docs/languages/python/quickstart>`_.
-Or, if you would like dive in with more extensive usage of gRPC Python, check `gRPC Basics - Python <https://grpc.io/docs/languages/python/basics>`_ out.
-
-
-Example
--------
-
-Go to `gRPC Python Examples <https://github.com/grpc/grpc/tree/master/examples/python>`_
-
+For documentation, examples, and more, see the `Python gRPC <https://grpc.io/docs/languages/python/>`_ page on `grpc.io <https://grpc.io/>`_.
Module Contents
---------------
* --rpc_timeout_sec=SEC
* The timeout to set on all outbound RPCs. Default is 20.
+### XdsUpdateClientConfigureService
+
+The xDS test client's behavior can be dynamically changed in the middle of tests.
+This is achieved by invoking the `XdsUpdateClientConfigureService` gRPC service
+on the test client. This can be useful for tests requiring special client behaviors
+that are not desirable at test initialization and client warmup. The service is
+defined as:
+
+```
+message ClientConfigureRequest {
+ // Type of RPCs to send.
+ enum RpcType {
+ EMPTY_CALL = 0;
+ UNARY_CALL = 1;
+ }
+
+ // Metadata to be attached for the given type of RPCs.
+ message Metadata {
+ RpcType type = 1;
+ string key = 2;
+ string value = 3;
+ }
+
+ // The types of RPCs the client sends.
+ repeated RpcType types = 1;
+ // The collection of custom metadata to be attached to RPCs sent by the client.
+ repeated Metadata metadata = 2;
+}
+
+message ClientConfigureResponse {}
+
+service XdsUpdateClientConfigureService {
+ // Update the tes client's configuration.
+ rpc Configure(ClientConfigureRequest) returns (ClientConfigureResponse);
+}
+```
+
+The test client changes its behavior right after receiving the
+`ClientConfigureRequest`. Currently it only supports configuring the type(s)
+of RPCs sent by the test client and metadata attached to each type of RPCs.
+
## Test Driver
Note that, unlike our other interop tests, neither the client nor the server has
int32 num_failures = 2;
}
+message LoadBalancerAccumulatedStatsRequest {}
+
+message LoadBalancerAccumulatedStatsResponse {
+ // The total number of RPCs have ever issued for each type.
+ map<string, int32> num_rpcs_started_by_method = 1;
+ // The total number of RPCs have ever completed successfully for each type.
+ map<string, int32> num_rpcs_succeeded_by_method = 2;
+ // The total number of RPCs have ever failed for each type.
+ map<string, int32> num_rpcs_failed_by_method = 3;
+}
+
service LoadBalancerStatsService {
// Gets the backend distribution for RPCs sent by a test client.
rpc GetClientStats(LoadBalancerStatsRequest)
returns (LoadBalancerStatsResponse) {}
+ // Gets the accumulated stats for RPCs sent by a test client.
+ rpc GetClientAccumulatedStats(LoadBalancerAccumulatedStatsRequest)
+ returns (LoadBalancerAccumulatedStatsResponse) {}
}
```
1. Once all backends receive at least one RPC, the following 1000 RPCs are
distributed across the 2 backends as a: 20, b: 80.
+### path_matching
+
+This test verifies that the traffic for a certain RPC can be routed to a
+specific cluster based on the RPC path.
+
+Client parameters:
+
+1. –num_channels=1
+1. –qps=10
+1. –fail_on_failed_rpc=true
+1. –rpc=“EmptyCall,UnaryCall”
+
+Load balancer configuration:
+
+1. 2 MIGs, each with 1 backend
+1. routes
+ - “/”: MIG_default
+
+Assert:
+
+1. UnaryCall RPCs are sent to MIG_default
+1. EmptyCall RPCs are sent to MIG_default
+
+The test driver adds a route for EmptyCall, routes become:
+
+1. path{“/grpc.testing.TestService/EmptyCall”}: MIG_2
+1. “/”: MIG_default
+
+Assert:
+
+1. UnaryCall RPCs are sent to MIG_default
+1. EmptyCall RPCs are sent to MIG_2
+
+The test driver adds a route for prefix Unary, routes become:
+
+1. prefix{“/grpc.testing.TestService/Unary”}: MIG_2
+1. “/”: MIG_default
+
+Assert:
+
+1. UnaryCall RPCs are sent to MIG_2
+1. EmptyCall RPCs are sent to MIG_default
+
+### header_matching
+
+This test verifies that the traffic for a certain RPC can be routed to a
+specific cluster based on the RPC header (metadata).
+
+Client parameters:
+
+1. –num_channels=1
+1. –qps=10
+1. –fail_on_failed_rpc=true
+1. –rpc=“EmptyCall,UnaryCall”
+1. –rpc=“EmptyCall:xds_md:exact_match”
+
+Load balancer configuration:
+
+1. 2 MIGs, each with 1 backend
+1. routes
+ - “/”: MIG_default
+
+Assert:
+
+1. UnaryCall RPCs are sent to MIG_default
+1. EmptyCall RPCs are sent to MIG_default
+
+The test driver adds a route for header exact match, routes become:
+
+1. header{“xds_md”, exact: “exact_match”}: MIG_2
+1. “/”: MIG_default
+
+Assert:
+
+1. UnaryCall RPCs are sent to MIG_default
+1. EmptyCall RPCs are sent to MIG_2
### gentle_failover
1. All backends in the primary locality receive at least 1 RPC.
1. No backends in the secondary locality receive RPCs.
+
+### circuit_breaking
+
+This test verifies that the maximum number of outstanding requests is limited
+by circuit breakers of the backend service.
+
+Client parameters:
+
+1. --num_channels=1
+1. --qps=100
+
+Load balancer configuration:
+
+1. Two MIGs with each having two backends.
+
+The test driver configures the backend services with:
+
+1. path{“/grpc.testing.TestService/UnaryCall"}: MIG_1
+1. path{“/grpc.testing.TestService/EmptyCall"}: MIG_2
+1. MIG_1 circuit_breakers with max_requests = 500
+1. MIG_2 circuit breakers with max_requests = 1000
+
+The test driver configures the test client to send both UnaryCall and EmptyCall,
+with all RPCs keep-open.
+
+Assert:
+
+1. After reaching steady state, there are 500 UnaryCall RPCs in-flight
+and 1000 EmptyCall RPCs in-flight.
+
+The test driver updates MIG_1's circuit breakers with max_request = 800.
+
+Test driver asserts:
+
+1. After reaching steady state, there are 800 UnaryCall RPCs in-flight.
\ No newline at end of file
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
- IPHONEOS_DEPLOYMENT_TARGET = 11.2;
+ IPHONEOS_DEPLOYMENT_TARGET = 9.0;
MTL_ENABLE_DEBUG_INFO = YES;
ONLY_ACTIVE_ARCH = YES;
SDKROOT = iphoneos;
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
- IPHONEOS_DEPLOYMENT_TARGET = 11.2;
+ IPHONEOS_DEPLOYMENT_TARGET = 9.0;
MTL_ENABLE_DEBUG_INFO = NO;
SDKROOT = iphoneos;
VALIDATE_PRODUCT = YES;
+++ /dev/null
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
- <PropertyGroup>\r
- <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
- <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
- <ProjectGuid>{B9B0D41C-1C07-4590-A919-5865E741B2EA}</ProjectGuid>\r
- <ProjectTypeGuids>{EFBA0AD7-5A72-4C68-AF49-83D382785DCF};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>\r
- <OutputType>Library</OutputType>\r
- <RootNamespace>HelloworldXamarin.Droid</RootNamespace>\r
- <AssemblyName>HelloworldXamarin.Droid</AssemblyName>\r
- <TargetFrameworkVersion>v8.1</TargetFrameworkVersion>\r
- <AndroidApplication>True</AndroidApplication>\r
- <AndroidResgenFile>Resources\Resource.designer.cs</AndroidResgenFile>\r
- <AndroidResgenClass>Resource</AndroidResgenClass>\r
- <AndroidManifest>Properties\AndroidManifest.xml</AndroidManifest>\r
- <MonoAndroidResourcePrefix>Resources</MonoAndroidResourcePrefix>\r
- <MonoAndroidAssetsPrefix>Assets</MonoAndroidAssetsPrefix>\r
- <NuGetPackageImportStamp>\r
- </NuGetPackageImportStamp>\r
- </PropertyGroup>\r
- <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
- <DebugSymbols>true</DebugSymbols>\r
- <DebugType>full</DebugType>\r
- <Optimize>false</Optimize>\r
- <OutputPath>bin\Debug</OutputPath>\r
- <DefineConstants>DEBUG;</DefineConstants>\r
- <ErrorReport>prompt</ErrorReport>\r
- <WarningLevel>4</WarningLevel>\r
- <AndroidLinkMode>None</AndroidLinkMode>\r
- </PropertyGroup>\r
- <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
- <DebugSymbols>true</DebugSymbols>\r
- <DebugType>pdbonly</DebugType>\r
- <Optimize>true</Optimize>\r
- <OutputPath>bin\Release</OutputPath>\r
- <ErrorReport>prompt</ErrorReport>\r
- <WarningLevel>4</WarningLevel>\r
- <AndroidManagedSymbols>true</AndroidManagedSymbols>\r
- <AndroidUseSharedRuntime>false</AndroidUseSharedRuntime>\r
- </PropertyGroup>\r
- <ItemGroup>\r
- <Reference Include="Google.Protobuf, Version=3.8.0.0, Culture=neutral, PublicKeyToken=a7d26565bac4d604, processorArchitecture=MSIL">\r
- <HintPath>..\packages\Google.Protobuf.3.8.0\lib\netstandard2.0\Google.Protobuf.dll</HintPath>\r
- </Reference>\r
- <Reference Include="Grpc.Core, Version=2.0.0.0, Culture=neutral, PublicKeyToken=d754f35622e28bad, processorArchitecture=MSIL">\r
- <HintPath>..\packages\Grpc.Core.2.23.0\lib\netstandard2.0\Grpc.Core.dll</HintPath>\r
- </Reference>\r
- <Reference Include="Grpc.Core.Api, Version=2.0.0.0, Culture=neutral, PublicKeyToken=d754f35622e28bad, processorArchitecture=MSIL">\r
- <HintPath>..\packages\Grpc.Core.Api.2.23.0\lib\netstandard2.0\Grpc.Core.Api.dll</HintPath>\r
- </Reference>\r
- <Reference Include="System" />\r
- <Reference Include="System.Buffers, Version=4.0.2.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">\r
- <HintPath>..\packages\System.Buffers.4.4.0\lib\netstandard2.0\System.Buffers.dll</HintPath>\r
- </Reference>\r
- <Reference Include="System.Memory, Version=4.0.1.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">\r
- <HintPath>..\packages\System.Memory.4.5.3\lib\netstandard2.0\System.Memory.dll</HintPath>\r
- </Reference>\r
- <Reference Include="System.Runtime.CompilerServices.Unsafe, Version=4.0.4.1, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">\r
- <HintPath>..\packages\System.Runtime.CompilerServices.Unsafe.4.5.2\lib\netstandard2.0\System.Runtime.CompilerServices.Unsafe.dll</HintPath>\r
- </Reference>\r
- <Reference Include="System.Xml" />\r
- <Reference Include="System.Core" />\r
- <Reference Include="Mono.Android" />\r
- <Reference Include="System.IO.Compression" />\r
- <Reference Include="System.Net.Http" />\r
- <Reference Include="System.Runtime.Loader">\r
- <HintPath>..\packages\System.Runtime.Loader.4.0.0\lib\netstandard1.5\System.Runtime.Loader.dll</HintPath>\r
- </Reference>\r
- <Reference Include="System.Interactive.Async">\r
- <HintPath>..\packages\System.Interactive.Async.3.1.1\lib\netstandard1.3\System.Interactive.Async.dll</HintPath>\r
- </Reference>\r
- </ItemGroup>\r
- <ItemGroup>\r
- <Compile Include="MainActivity.cs" />\r
- <Compile Include="Resources\Resource.designer.cs" />\r
- <Compile Include="Properties\AssemblyInfo.cs" />\r
- </ItemGroup>\r
- <ItemGroup>\r
- <None Include="app.config" />\r
- <None Include="Resources\AboutResources.txt" />\r
- <None Include="Properties\AndroidManifest.xml" />\r
- <None Include="Assets\AboutAssets.txt" />\r
- <None Include="packages.config" />\r
- </ItemGroup>\r
- <ItemGroup>\r
- <AndroidResource Include="Resources\layout\Main.axml" />\r
- <AndroidResource Include="Resources\values\Strings.xml" />\r
- <AndroidResource Include="Resources\mipmap-hdpi\Icon.png" />\r
- <AndroidResource Include="Resources\mipmap-mdpi\Icon.png" />\r
- <AndroidResource Include="Resources\mipmap-xhdpi\Icon.png" />\r
- <AndroidResource Include="Resources\mipmap-xxhdpi\Icon.png" />\r
- <AndroidResource Include="Resources\mipmap-xxxhdpi\Icon.png" />\r
- </ItemGroup>\r
- <Import Project="..\HelloworldXamarin\HelloworldXamarin.projitems" Label="Shared" Condition="Exists('..\HelloworldXamarin\HelloworldXamarin.projitems')" />\r
- <Import Project="$(MSBuildExtensionsPath)\Xamarin\Android\Xamarin.Android.CSharp.targets" />\r
- <Import Project="..\packages\Grpc.Core.2.23.0\build\MonoAndroid10\Grpc.Core.targets" Condition="Exists('..\packages\Grpc.Core.2.23.0\build\MonoAndroid10\Grpc.Core.targets')" />\r
- <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">\r
- <PropertyGroup>\r
- <ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>\r
- </PropertyGroup>\r
- <Error Condition="!Exists('..\packages\Grpc.Core.2.23.0\build\MonoAndroid10\Grpc.Core.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Grpc.Core.2.23.0\build\MonoAndroid10\Grpc.Core.targets'))" />\r
- </Target>\r
-</Project>
\ No newline at end of file
+++ /dev/null
-#region Copyright notice and license
-
-// Copyright 2018 The gRPC Authors
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#endregion
-
-using Android.App;
-using Android.Widget;
-using Android.OS;
-using System.Threading.Tasks;
-using Grpc.Core;
-using Helloworld;
-
-namespace HelloworldXamarin.Droid
-{
- [Activity(Label = "HelloworldXamarin", MainLauncher = true, Icon = "@mipmap/icon")]
- public class MainActivity : Activity
- {
- const int Port = 30051;
- int count = 1;
-
- protected override void OnCreate(Bundle savedInstanceState)
- {
- base.OnCreate(savedInstanceState);
-
- // Set our view from the "main" layout resource
- SetContentView(Resource.Layout.Main);
-
- // Get our button from the layout resource,
- // and attach an event to it
- Button button = FindViewById<Button>(Resource.Id.myButton);
-
- button.Click += delegate { SayHello(button); };
- }
-
- private void SayHello(Button button)
- {
- Server server = new Server
- {
- Services = { Greeter.BindService(new GreeterImpl()) },
- Ports = { new ServerPort("localhost", Port, ServerCredentials.Insecure) }
- };
- server.Start();
-
- // use loopback on host machine: https://developer.android.com/studio/run/emulator-networking
- //10.0.2.2:30051
- Channel channel = new Channel("localhost:30051", ChannelCredentials.Insecure);
-
- var client = new Greeter.GreeterClient(channel);
- string user = "Xamarin " + count;
-
- var reply = client.SayHello(new HelloRequest { Name = user });
-
- button.Text = "Greeting: " + reply.Message;
-
- channel.ShutdownAsync().Wait();
- server.ShutdownAsync().Wait();
-
- count++;
- }
-
- class GreeterImpl : Greeter.GreeterBase
- {
- // Server side handler of the SayHello RPC
- public override Task<HelloReply> SayHello(HelloRequest request, ServerCallContext context)
- {
- return Task.FromResult(new HelloReply { Message = "Hello " + request.Name });
- }
- }
- }
-}
-
+++ /dev/null
-<?xml version="1.0" encoding="utf-8"?>
-<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionCode="1" android:versionName="1.0" package="io.grpc.examples.HelloworldXamarin">
- <uses-sdk android:minSdkVersion="15" android:targetSdkVersion="27" />
- <application android:label="HelloworldXamarin"></application>
-</manifest>
\ No newline at end of file
+++ /dev/null
-#region Copyright notice and license
-
-// Copyright 2018 The gRPC Authors
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#endregion
-
-using System.Reflection;
-using System.Runtime.CompilerServices;
-using Android.App;
-
-// Information about this assembly is defined by the following attributes.
-// Change them to the values specific to your project.
-
-[assembly: AssemblyTitle("HelloworldXamarin.Droid")]
-[assembly: AssemblyDescription("")]
-[assembly: AssemblyConfiguration("")]
-[assembly: AssemblyCompany("")]
-[assembly: AssemblyProduct("")]
-[assembly: AssemblyCopyright("${AuthorCopyright}")]
-[assembly: AssemblyTrademark("")]
-[assembly: AssemblyCulture("")]
-
-// The assembly version has the format "{Major}.{Minor}.{Build}.{Revision}".
-// The form "{Major}.{Minor}.*" will automatically update the build and revision,
-// and "{Major}.{Minor}.{Build}.*" will update just the revision.
-
-[assembly: AssemblyVersion("1.0.0")]
-
-// The following attributes are used to specify the signing key for the assembly,
-// if desired. See the Mono documentation for more information about signing.
-
-//[assembly: AssemblyDelaySign(false)]
-//[assembly: AssemblyKeyFile("")]
+++ /dev/null
-#pragma warning disable 1591
-//------------------------------------------------------------------------------
-// <auto-generated>
-// This code was generated by a tool.
-// Runtime Version:4.0.30319.42000
-//
-// Changes to this file may cause incorrect behavior and will be lost if
-// the code is regenerated.
-// </auto-generated>
-//------------------------------------------------------------------------------
-
-[assembly: global::Android.Runtime.ResourceDesignerAttribute("HelloworldXamarin.Droid.Resource", IsApplication=true)]
-
-namespace HelloworldXamarin.Droid
-{
-
-
- [System.CodeDom.Compiler.GeneratedCodeAttribute("Xamarin.Android.Build.Tasks", "1.0.0.0")]
- public partial class Resource
- {
-
- static Resource()
- {
- global::Android.Runtime.ResourceIdManager.UpdateIdValues();
- }
-
- public static void UpdateIdValues()
- {
- }
-
- public partial class Attribute
- {
-
- static Attribute()
- {
- global::Android.Runtime.ResourceIdManager.UpdateIdValues();
- }
-
- private Attribute()
- {
- }
- }
-
- public partial class Id
- {
-
- // aapt resource value: 0x7f050000
- public const int myButton = 2131034112;
-
- static Id()
- {
- global::Android.Runtime.ResourceIdManager.UpdateIdValues();
- }
-
- private Id()
- {
- }
- }
-
- public partial class Layout
- {
-
- // aapt resource value: 0x7f030000
- public const int Main = 2130903040;
-
- static Layout()
- {
- global::Android.Runtime.ResourceIdManager.UpdateIdValues();
- }
-
- private Layout()
- {
- }
- }
-
- public partial class Mipmap
- {
-
- // aapt resource value: 0x7f020000
- public const int Icon = 2130837504;
-
- static Mipmap()
- {
- global::Android.Runtime.ResourceIdManager.UpdateIdValues();
- }
-
- private Mipmap()
- {
- }
- }
-
- public partial class String
- {
-
- // aapt resource value: 0x7f040001
- public const int app_name = 2130968577;
-
- // aapt resource value: 0x7f040000
- public const int hello = 2130968576;
-
- static String()
- {
- global::Android.Runtime.ResourceIdManager.UpdateIdValues();
- }
-
- private String()
- {
- }
- }
- }
-}
-#pragma warning restore 1591
+++ /dev/null
-<?xml version="1.0" encoding="utf-8"?>
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent">
- <Button android:id="@+id/myButton" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/hello" />
-</LinearLayout>
+++ /dev/null
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
- <string name="hello">Hello World, Click Me!</string>
- <string name="app_name">HelloworldXamarin.Droid</string>
-</resources>
+++ /dev/null
-<?xml version="1.0" encoding="utf-8"?>
-<packages>
- <package id="Google.Protobuf" version="3.8.0" targetFramework="monoandroid81" />
- <package id="Grpc.Core" version="2.23.0" targetFramework="monoandroid81" />
- <package id="Grpc.Core.Api" version="2.23.0" targetFramework="monoandroid81" />
- <package id="Microsoft.NETCore.Platforms" version="1.1.0" targetFramework="monoandroid81" />
- <package id="Microsoft.Win32.Primitives" version="4.3.0" targetFramework="monoandroid81" />
- <package id="NETStandard.Library" version="1.6.1" targetFramework="monoandroid81" />
- <package id="System.AppContext" version="4.3.0" targetFramework="monoandroid81" />
- <package id="System.Buffers" version="4.4.0" targetFramework="monoandroid81" />
- <package id="System.Collections" version="4.3.0" targetFramework="monoandroid81" />
- <package id="System.Collections.Concurrent" version="4.3.0" targetFramework="monoandroid81" />
- <package id="System.Console" version="4.3.0" targetFramework="monoandroid81" />
- <package id="System.Diagnostics.Debug" version="4.3.0" targetFramework="monoandroid81" />
- <package id="System.Diagnostics.Tools" version="4.3.0" targetFramework="monoandroid81" />
- <package id="System.Diagnostics.Tracing" version="4.3.0" targetFramework="monoandroid81" />
- <package id="System.Globalization" version="4.3.0" targetFramework="monoandroid81" />
- <package id="System.Globalization.Calendars" version="4.3.0" targetFramework="monoandroid81" />
- <package id="System.Interactive.Async" version="3.1.1" targetFramework="monoandroid81" />
- <package id="System.IO" version="4.3.0" targetFramework="monoandroid81" />
- <package id="System.IO.Compression" version="4.3.0" targetFramework="monoandroid81" />
- <package id="System.IO.Compression.ZipFile" version="4.3.0" targetFramework="monoandroid81" />
- <package id="System.IO.FileSystem" version="4.3.0" targetFramework="monoandroid81" />
- <package id="System.IO.FileSystem.Primitives" version="4.3.0" targetFramework="monoandroid81" />
- <package id="System.Linq" version="4.3.0" targetFramework="monoandroid81" />
- <package id="System.Linq.Expressions" version="4.3.0" targetFramework="monoandroid81" />
- <package id="System.Memory" version="4.5.3" targetFramework="monoandroid81" />
- <package id="System.Net.Http" version="4.3.0" targetFramework="monoandroid81" />
- <package id="System.Net.Primitives" version="4.3.0" targetFramework="monoandroid81" />
- <package id="System.Net.Sockets" version="4.3.0" targetFramework="monoandroid81" />
- <package id="System.ObjectModel" version="4.3.0" targetFramework="monoandroid81" />
- <package id="System.Reflection" version="4.3.0" targetFramework="monoandroid81" />
- <package id="System.Reflection.Extensions" version="4.3.0" targetFramework="monoandroid81" />
- <package id="System.Reflection.Primitives" version="4.3.0" targetFramework="monoandroid81" />
- <package id="System.Resources.ResourceManager" version="4.3.0" targetFramework="monoandroid81" />
- <package id="System.Runtime" version="4.3.0" targetFramework="monoandroid81" />
- <package id="System.Runtime.CompilerServices.Unsafe" version="4.5.2" targetFramework="monoandroid81" />
- <package id="System.Runtime.Extensions" version="4.3.0" targetFramework="monoandroid81" />
- <package id="System.Runtime.Handles" version="4.3.0" targetFramework="monoandroid81" />
- <package id="System.Runtime.InteropServices" version="4.3.0" targetFramework="monoandroid81" />
- <package id="System.Runtime.InteropServices.RuntimeInformation" version="4.3.0" targetFramework="monoandroid81" />
- <package id="System.Runtime.Loader" version="4.0.0" targetFramework="monoandroid81" />
- <package id="System.Runtime.Numerics" version="4.3.0" targetFramework="monoandroid81" />
- <package id="System.Security.Cryptography.Algorithms" version="4.3.0" targetFramework="monoandroid81" />
- <package id="System.Security.Cryptography.Encoding" version="4.3.0" targetFramework="monoandroid81" />
- <package id="System.Security.Cryptography.Primitives" version="4.3.0" targetFramework="monoandroid81" />
- <package id="System.Security.Cryptography.X509Certificates" version="4.3.0" targetFramework="monoandroid81" />
- <package id="System.Text.Encoding" version="4.3.0" targetFramework="monoandroid81" />
- <package id="System.Text.Encoding.Extensions" version="4.3.0" targetFramework="monoandroid81" />
- <package id="System.Text.RegularExpressions" version="4.3.0" targetFramework="monoandroid81" />
- <package id="System.Threading" version="4.3.0" targetFramework="monoandroid81" />
- <package id="System.Threading.Tasks" version="4.3.0" targetFramework="monoandroid81" />
- <package id="System.Threading.Thread" version="4.0.0" targetFramework="monoandroid81" />
- <package id="System.Threading.ThreadPool" version="4.0.10" targetFramework="monoandroid81" />
- <package id="System.Threading.Timer" version="4.3.0" targetFramework="monoandroid81" />
- <package id="System.Xml.ReaderWriter" version="4.3.0" targetFramework="monoandroid81" />
- <package id="System.Xml.XDocument" version="4.3.0" targetFramework="monoandroid81" />
-</packages>
\ No newline at end of file
public class ReadAsset : Activity
{
- protected override void OnCreate (Bundle bundle)
- {
- base.OnCreate (bundle);
+ protected override void OnCreate (Bundle bundle)
+ {
+ base.OnCreate (bundle);
- InputStream input = Assets.Open ("my_asset.txt");
- }
+ InputStream input = Assets.Open ("my_asset.txt");
+ }
}
Additionally, some Android functions will automatically load asset files:
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <PropertyGroup>
+ <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+ <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+ <ProjectGuid>{FB8D18D2-51AF-432C-8EA0-21B4454F45A9}</ProjectGuid>
+ <ProjectTypeGuids>{EFBA0AD7-5A72-4C68-AF49-83D382785DCF};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+ <TemplateGuid>{c9e5eea5-ca05-42a1-839b-61506e0a37df}</TemplateGuid>
+ <OutputType>Library</OutputType>
+ <RootNamespace>HelloworldXamarin.Droid</RootNamespace>
+ <AssemblyName>HelloworldXamarin.Android</AssemblyName>
+ <Deterministic>True</Deterministic>
+ <AndroidApplication>True</AndroidApplication>
+ <AndroidResgenFile>Resources\Resource.designer.cs</AndroidResgenFile>
+ <AndroidResgenClass>Resource</AndroidResgenClass>
+ <AndroidManifest>Properties\AndroidManifest.xml</AndroidManifest>
+ <MonoAndroidResourcePrefix>Resources</MonoAndroidResourcePrefix>
+ <MonoAndroidAssetsPrefix>Assets</MonoAndroidAssetsPrefix>
+ <AndroidUseLatestPlatformSdk>false</AndroidUseLatestPlatformSdk>
+ <TargetFrameworkVersion>v9.0</TargetFrameworkVersion>
+ <AndroidEnableSGenConcurrent>true</AndroidEnableSGenConcurrent>
+ <AndroidUseAapt2>true</AndroidUseAapt2>
+ <AndroidHttpClientHandlerType>Xamarin.Android.Net.AndroidClientHandler</AndroidHttpClientHandlerType>
+ <NuGetPackageImportStamp>
+ </NuGetPackageImportStamp>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+ <DebugSymbols>true</DebugSymbols>
+ <DebugType>portable</DebugType>
+ <Optimize>false</Optimize>
+ <OutputPath>bin\Debug</OutputPath>
+ <DefineConstants>DEBUG;</DefineConstants>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ <AndroidLinkMode>None</AndroidLinkMode>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+ <DebugSymbols>true</DebugSymbols>
+ <DebugType>portable</DebugType>
+ <Optimize>true</Optimize>
+ <OutputPath>bin\Release</OutputPath>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ <AndroidManagedSymbols>true</AndroidManagedSymbols>
+ <AndroidUseSharedRuntime>false</AndroidUseSharedRuntime>
+ </PropertyGroup>
+ <ItemGroup>
+ <Reference Include="Mono.Android" />
+ <Reference Include="System" />
+ <Reference Include="System.Core" />
+ <Reference Include="System.Xml.Linq" />
+ <Reference Include="System.Xml" />
+ <Reference Include="System.Numerics" />
+ <Reference Include="System.Numerics.Vectors" />
+ </ItemGroup>
+ <ItemGroup>
+ <PackageReference Include="Grpc.Core">
+ <Version>2.32.0</Version>
+ </PackageReference>
+ <PackageReference Include="Xamarin.Forms" Version="4.6.0.1141" />
+ <PackageReference Include="Xamarin.Essentials" Version="1.5.3.2" />
+ </ItemGroup>
+ <ItemGroup>
+ <Compile Include="MainActivity.cs" />
+ <Compile Include="Resources\Resource.designer.cs" />
+ <Compile Include="Properties\AssemblyInfo.cs" />
+ </ItemGroup>
+ <ItemGroup>
+ <None Include="Resources\AboutResources.txt" />
+ <None Include="Assets\AboutAssets.txt" />
+ <None Include="Properties\AndroidManifest.xml" />
+ </ItemGroup>
+ <ItemGroup>
+ <AndroidResource Include="Resources\layout\Tabbar.xml" />
+ <AndroidResource Include="Resources\layout\Toolbar.xml" />
+ <AndroidResource Include="Resources\values\styles.xml" />
+ <AndroidResource Include="Resources\values\colors.xml" />
+ <AndroidResource Include="Resources\mipmap-anydpi-v26\icon.xml" />
+ <AndroidResource Include="Resources\mipmap-anydpi-v26\icon_round.xml" />
+ <AndroidResource Include="Resources\mipmap-hdpi\icon.png" />
+ <AndroidResource Include="Resources\mipmap-hdpi\launcher_foreground.png" />
+ <AndroidResource Include="Resources\mipmap-mdpi\icon.png" />
+ <AndroidResource Include="Resources\mipmap-mdpi\launcher_foreground.png" />
+ <AndroidResource Include="Resources\mipmap-xhdpi\icon.png" />
+ <AndroidResource Include="Resources\mipmap-xhdpi\launcher_foreground.png" />
+ <AndroidResource Include="Resources\mipmap-xxhdpi\icon.png" />
+ <AndroidResource Include="Resources\mipmap-xxhdpi\launcher_foreground.png" />
+ <AndroidResource Include="Resources\mipmap-xxxhdpi\icon.png" />
+ <AndroidResource Include="Resources\mipmap-xxxhdpi\launcher_foreground.png" />
+ </ItemGroup>
+ <ItemGroup>
+ <Folder Include="Resources\drawable\" />
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\HelloworldXamarin\HelloworldXamarin.csproj">
+ <Project>{5900A2BD-3407-4F05-8CF2-DFF2A98B54F3}</Project>
+ <Name>HelloworldXamarin</Name>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(MSBuildExtensionsPath)\Xamarin\Android\Xamarin.Android.CSharp.targets" />
+</Project>
\ No newline at end of file
--- /dev/null
+#region Copyright notice and license
+// Copyright 2020 The gRPC Authors
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+#endregion
+
+using System;
+
+using Android.App;
+using Android.Content.PM;
+using Android.Runtime;
+using Android.Views;
+using Android.Widget;
+using Android.OS;
+
+namespace HelloworldXamarin.Droid
+{
+ [Activity(Label = "HelloworldXamarin", Icon = "@mipmap/icon", Theme = "@style/MainTheme", MainLauncher = true, ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation | ConfigChanges.UiMode | ConfigChanges.ScreenLayout | ConfigChanges.SmallestScreenSize )]
+ public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity
+ {
+ protected override void OnCreate(Bundle savedInstanceState)
+ {
+ TabLayoutResource = Resource.Layout.Tabbar;
+ ToolbarResource = Resource.Layout.Toolbar;
+
+ base.OnCreate(savedInstanceState);
+
+ Xamarin.Essentials.Platform.Init(this, savedInstanceState);
+ global::Xamarin.Forms.Forms.Init(this, savedInstanceState);
+ LoadApplication(new App());
+ }
+ public override void OnRequestPermissionsResult(int requestCode, string[] permissions, [GeneratedEnum] Android.Content.PM.Permission[] grantResults)
+ {
+ Xamarin.Essentials.Platform.OnRequestPermissionsResult(requestCode, permissions, grantResults);
+
+ base.OnRequestPermissionsResult(requestCode, permissions, grantResults);
+ }
+ }
+}
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionCode="1" android:versionName="1.0" package="com.companyname.helloworldxamarin">
+ <uses-sdk android:minSdkVersion="21" android:targetSdkVersion="28" />
+ <application android:label="HelloworldXamarin.Android" android:theme="@style/MainTheme"></application>
+ <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
+</manifest>
--- /dev/null
+#region Copyright notice and license
+// Copyright 2020 The gRPC Authors
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+#endregion
+
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+using Android.App;
+
+// General Information about an assembly is controlled through the following
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("HelloworldXamarin.Android")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("HelloworldXamarin.Android")]
+[assembly: AssemblyCopyright("Copyright © 2020")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+[assembly: ComVisible(false)]
+
+// Version information for an assembly consists of the following four values:
+//
+// Major Version
+// Minor Version
+// Build Number
+// Revision
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
+
+// Add some common permissions, these can be removed if not needed
+[assembly: UsesPermission(Android.Manifest.Permission.Internet)]
+[assembly: UsesPermission(Android.Manifest.Permission.WriteExternalStorage)]
operate on the resource IDs instead of dealing with images, strings or binary blobs
directly.
-For example, a sample Android app that contains a user interface layout (main.axml),
+For example, a sample Android app that contains a user interface layout (main.xml),
an internationalization string table (strings.xml) and some icons (drawable-XXX/icon.png)
would keep its resources in the "Resources" directory of the application:
Resources/
- drawable/
+ drawable-hdpi/
+ icon.png
+
+ drawable-ldpi/
+ icon.png
+
+ drawable-mdpi/
icon.png
layout/
- main.axml
+ main.xml
values/
strings.xml
In order to get the build system to recognize Android resources, set the build action to
"AndroidResource". The native Android APIs do not operate directly with filenames, but
instead operate on resource IDs. When you compile an Android application that uses resources,
-the build system will package the resources for distribution and generate a class called "R"
-(this is an Android convention) that contains the tokens for each one of the resources
-included. For example, for the above Resources layout, this is what the R class would expose:
+the build system will package the resources for distribution and generate a class called
+"Resource" that contains the tokens for each one of the resources included. For example,
+for the above Resources layout, this is what the Resource class would expose:
-public class R {
+public class Resource {
public class drawable {
public const int icon = 0x123;
}
}
}
-You would then use R.drawable.icon to reference the drawable/icon.png file, or R.layout.main
-to reference the layout/main.axml file, or R.strings.first_string to reference the first
+You would then use R.drawable.icon to reference the drawable/icon.png file, or Resource.layout.main
+to reference the layout/main.xml file, or Resource.strings.first_string to reference the first
string in the dictionary file values/strings.xml.
--- /dev/null
+#region Copyright notice and license
+// Copyright 2020 The gRPC Authors
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+#endregion
+
+#pragma warning disable 1591
+//------------------------------------------------------------------------------
+// <auto-generated>
+// This code was generated by a tool.
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+[assembly: global::Android.Runtime.ResourceDesignerAttribute("HelloworldXamarin.Droid.Resource", IsApplication=true)]
+
+namespace HelloworldXamarin.Droid
+{
+
+
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Xamarin.Android.Build.Tasks", "1.0.0.0")]
+ public partial class Resource
+ {
+
+ static Resource()
+ {
+ global::Android.Runtime.ResourceIdManager.UpdateIdValues();
+ }
+
+ public static void UpdateIdValues()
+ {
+ global::Xamarin.Essentials.Resource.Attribute.alpha = global::HelloworldXamarin.Droid.Resource.Attribute.alpha;
+ global::Xamarin.Essentials.Resource.Attribute.coordinatorLayoutStyle = global::HelloworldXamarin.Droid.Resource.Attribute.coordinatorLayoutStyle;
+ global::Xamarin.Essentials.Resource.Attribute.font = global::HelloworldXamarin.Droid.Resource.Attribute.font;
+ global::Xamarin.Essentials.Resource.Attribute.fontProviderAuthority = global::HelloworldXamarin.Droid.Resource.Attribute.fontProviderAuthority;
+ global::Xamarin.Essentials.Resource.Attribute.fontProviderCerts = global::HelloworldXamarin.Droid.Resource.Attribute.fontProviderCerts;
+ global::Xamarin.Essentials.Resource.Attribute.fontProviderFetchStrategy = global::HelloworldXamarin.Droid.Resource.Attribute.fontProviderFetchStrategy;
+ global::Xamarin.Essentials.Resource.Attribute.fontProviderFetchTimeout = global::HelloworldXamarin.Droid.Resource.Attribute.fontProviderFetchTimeout;
+ global::Xamarin.Essentials.Resource.Attribute.fontProviderPackage = global::HelloworldXamarin.Droid.Resource.Attribute.fontProviderPackage;
+ global::Xamarin.Essentials.Resource.Attribute.fontProviderQuery = global::HelloworldXamarin.Droid.Resource.Attribute.fontProviderQuery;
+ global::Xamarin.Essentials.Resource.Attribute.fontStyle = global::HelloworldXamarin.Droid.Resource.Attribute.fontStyle;
+ global::Xamarin.Essentials.Resource.Attribute.fontVariationSettings = global::HelloworldXamarin.Droid.Resource.Attribute.fontVariationSettings;
+ global::Xamarin.Essentials.Resource.Attribute.fontWeight = global::HelloworldXamarin.Droid.Resource.Attribute.fontWeight;
+ global::Xamarin.Essentials.Resource.Attribute.keylines = global::HelloworldXamarin.Droid.Resource.Attribute.keylines;
+ global::Xamarin.Essentials.Resource.Attribute.layout_anchor = global::HelloworldXamarin.Droid.Resource.Attribute.layout_anchor;
+ global::Xamarin.Essentials.Resource.Attribute.layout_anchorGravity = global::HelloworldXamarin.Droid.Resource.Attribute.layout_anchorGravity;
+ global::Xamarin.Essentials.Resource.Attribute.layout_behavior = global::HelloworldXamarin.Droid.Resource.Attribute.layout_behavior;
+ global::Xamarin.Essentials.Resource.Attribute.layout_dodgeInsetEdges = global::HelloworldXamarin.Droid.Resource.Attribute.layout_dodgeInsetEdges;
+ global::Xamarin.Essentials.Resource.Attribute.layout_insetEdge = global::HelloworldXamarin.Droid.Resource.Attribute.layout_insetEdge;
+ global::Xamarin.Essentials.Resource.Attribute.layout_keyline = global::HelloworldXamarin.Droid.Resource.Attribute.layout_keyline;
+ global::Xamarin.Essentials.Resource.Attribute.statusBarBackground = global::HelloworldXamarin.Droid.Resource.Attribute.statusBarBackground;
+ global::Xamarin.Essentials.Resource.Attribute.ttcIndex = global::HelloworldXamarin.Droid.Resource.Attribute.ttcIndex;
+ global::Xamarin.Essentials.Resource.Color.browser_actions_bg_grey = global::HelloworldXamarin.Droid.Resource.Color.browser_actions_bg_grey;
+ global::Xamarin.Essentials.Resource.Color.browser_actions_divider_color = global::HelloworldXamarin.Droid.Resource.Color.browser_actions_divider_color;
+ global::Xamarin.Essentials.Resource.Color.browser_actions_text_color = global::HelloworldXamarin.Droid.Resource.Color.browser_actions_text_color;
+ global::Xamarin.Essentials.Resource.Color.browser_actions_title_color = global::HelloworldXamarin.Droid.Resource.Color.browser_actions_title_color;
+ global::Xamarin.Essentials.Resource.Color.notification_action_color_filter = global::HelloworldXamarin.Droid.Resource.Color.notification_action_color_filter;
+ global::Xamarin.Essentials.Resource.Color.notification_icon_bg_color = global::HelloworldXamarin.Droid.Resource.Color.notification_icon_bg_color;
+ global::Xamarin.Essentials.Resource.Color.ripple_material_light = global::HelloworldXamarin.Droid.Resource.Color.ripple_material_light;
+ global::Xamarin.Essentials.Resource.Color.secondary_text_default_material_light = global::HelloworldXamarin.Droid.Resource.Color.secondary_text_default_material_light;
+ global::Xamarin.Essentials.Resource.Dimension.browser_actions_context_menu_max_width = global::HelloworldXamarin.Droid.Resource.Dimension.browser_actions_context_menu_max_width;
+ global::Xamarin.Essentials.Resource.Dimension.browser_actions_context_menu_min_padding = global::HelloworldXamarin.Droid.Resource.Dimension.browser_actions_context_menu_min_padding;
+ global::Xamarin.Essentials.Resource.Dimension.compat_button_inset_horizontal_material = global::HelloworldXamarin.Droid.Resource.Dimension.compat_button_inset_horizontal_material;
+ global::Xamarin.Essentials.Resource.Dimension.compat_button_inset_vertical_material = global::HelloworldXamarin.Droid.Resource.Dimension.compat_button_inset_vertical_material;
+ global::Xamarin.Essentials.Resource.Dimension.compat_button_padding_horizontal_material = global::HelloworldXamarin.Droid.Resource.Dimension.compat_button_padding_horizontal_material;
+ global::Xamarin.Essentials.Resource.Dimension.compat_button_padding_vertical_material = global::HelloworldXamarin.Droid.Resource.Dimension.compat_button_padding_vertical_material;
+ global::Xamarin.Essentials.Resource.Dimension.compat_control_corner_material = global::HelloworldXamarin.Droid.Resource.Dimension.compat_control_corner_material;
+ global::Xamarin.Essentials.Resource.Dimension.compat_notification_large_icon_max_height = global::HelloworldXamarin.Droid.Resource.Dimension.compat_notification_large_icon_max_height;
+ global::Xamarin.Essentials.Resource.Dimension.compat_notification_large_icon_max_width = global::HelloworldXamarin.Droid.Resource.Dimension.compat_notification_large_icon_max_width;
+ global::Xamarin.Essentials.Resource.Dimension.notification_action_icon_size = global::HelloworldXamarin.Droid.Resource.Dimension.notification_action_icon_size;
+ global::Xamarin.Essentials.Resource.Dimension.notification_action_text_size = global::HelloworldXamarin.Droid.Resource.Dimension.notification_action_text_size;
+ global::Xamarin.Essentials.Resource.Dimension.notification_big_circle_margin = global::HelloworldXamarin.Droid.Resource.Dimension.notification_big_circle_margin;
+ global::Xamarin.Essentials.Resource.Dimension.notification_content_margin_start = global::HelloworldXamarin.Droid.Resource.Dimension.notification_content_margin_start;
+ global::Xamarin.Essentials.Resource.Dimension.notification_large_icon_height = global::HelloworldXamarin.Droid.Resource.Dimension.notification_large_icon_height;
+ global::Xamarin.Essentials.Resource.Dimension.notification_large_icon_width = global::HelloworldXamarin.Droid.Resource.Dimension.notification_large_icon_width;
+ global::Xamarin.Essentials.Resource.Dimension.notification_main_column_padding_top = global::HelloworldXamarin.Droid.Resource.Dimension.notification_main_column_padding_top;
+ global::Xamarin.Essentials.Resource.Dimension.notification_media_narrow_margin = global::HelloworldXamarin.Droid.Resource.Dimension.notification_media_narrow_margin;
+ global::Xamarin.Essentials.Resource.Dimension.notification_right_icon_size = global::HelloworldXamarin.Droid.Resource.Dimension.notification_right_icon_size;
+ global::Xamarin.Essentials.Resource.Dimension.notification_right_side_padding_top = global::HelloworldXamarin.Droid.Resource.Dimension.notification_right_side_padding_top;
+ global::Xamarin.Essentials.Resource.Dimension.notification_small_icon_background_padding = global::HelloworldXamarin.Droid.Resource.Dimension.notification_small_icon_background_padding;
+ global::Xamarin.Essentials.Resource.Dimension.notification_small_icon_size_as_large = global::HelloworldXamarin.Droid.Resource.Dimension.notification_small_icon_size_as_large;
+ global::Xamarin.Essentials.Resource.Dimension.notification_subtext_size = global::HelloworldXamarin.Droid.Resource.Dimension.notification_subtext_size;
+ global::Xamarin.Essentials.Resource.Dimension.notification_top_pad = global::HelloworldXamarin.Droid.Resource.Dimension.notification_top_pad;
+ global::Xamarin.Essentials.Resource.Dimension.notification_top_pad_large_text = global::HelloworldXamarin.Droid.Resource.Dimension.notification_top_pad_large_text;
+ global::Xamarin.Essentials.Resource.Drawable.notification_action_background = global::HelloworldXamarin.Droid.Resource.Drawable.notification_action_background;
+ global::Xamarin.Essentials.Resource.Drawable.notification_bg = global::HelloworldXamarin.Droid.Resource.Drawable.notification_bg;
+ global::Xamarin.Essentials.Resource.Drawable.notification_bg_low = global::HelloworldXamarin.Droid.Resource.Drawable.notification_bg_low;
+ global::Xamarin.Essentials.Resource.Drawable.notification_bg_low_normal = global::HelloworldXamarin.Droid.Resource.Drawable.notification_bg_low_normal;
+ global::Xamarin.Essentials.Resource.Drawable.notification_bg_low_pressed = global::HelloworldXamarin.Droid.Resource.Drawable.notification_bg_low_pressed;
+ global::Xamarin.Essentials.Resource.Drawable.notification_bg_normal = global::HelloworldXamarin.Droid.Resource.Drawable.notification_bg_normal;
+ global::Xamarin.Essentials.Resource.Drawable.notification_bg_normal_pressed = global::HelloworldXamarin.Droid.Resource.Drawable.notification_bg_normal_pressed;
+ global::Xamarin.Essentials.Resource.Drawable.notification_icon_background = global::HelloworldXamarin.Droid.Resource.Drawable.notification_icon_background;
+ global::Xamarin.Essentials.Resource.Drawable.notification_template_icon_bg = global::HelloworldXamarin.Droid.Resource.Drawable.notification_template_icon_bg;
+ global::Xamarin.Essentials.Resource.Drawable.notification_template_icon_low_bg = global::HelloworldXamarin.Droid.Resource.Drawable.notification_template_icon_low_bg;
+ global::Xamarin.Essentials.Resource.Drawable.notification_tile_bg = global::HelloworldXamarin.Droid.Resource.Drawable.notification_tile_bg;
+ global::Xamarin.Essentials.Resource.Drawable.notify_panel_notification_icon_bg = global::HelloworldXamarin.Droid.Resource.Drawable.notify_panel_notification_icon_bg;
+ global::Xamarin.Essentials.Resource.Id.actions = global::HelloworldXamarin.Droid.Resource.Id.actions;
+ global::Xamarin.Essentials.Resource.Id.action_container = global::HelloworldXamarin.Droid.Resource.Id.action_container;
+ global::Xamarin.Essentials.Resource.Id.action_divider = global::HelloworldXamarin.Droid.Resource.Id.action_divider;
+ global::Xamarin.Essentials.Resource.Id.action_image = global::HelloworldXamarin.Droid.Resource.Id.action_image;
+ global::Xamarin.Essentials.Resource.Id.action_text = global::HelloworldXamarin.Droid.Resource.Id.action_text;
+ global::Xamarin.Essentials.Resource.Id.all = global::HelloworldXamarin.Droid.Resource.Id.all;
+ global::Xamarin.Essentials.Resource.Id.async = global::HelloworldXamarin.Droid.Resource.Id.async;
+ global::Xamarin.Essentials.Resource.Id.blocking = global::HelloworldXamarin.Droid.Resource.Id.blocking;
+ global::Xamarin.Essentials.Resource.Id.bottom = global::HelloworldXamarin.Droid.Resource.Id.bottom;
+ global::Xamarin.Essentials.Resource.Id.browser_actions_header_text = global::HelloworldXamarin.Droid.Resource.Id.browser_actions_header_text;
+ global::Xamarin.Essentials.Resource.Id.browser_actions_menu_items = global::HelloworldXamarin.Droid.Resource.Id.browser_actions_menu_items;
+ global::Xamarin.Essentials.Resource.Id.browser_actions_menu_item_icon = global::HelloworldXamarin.Droid.Resource.Id.browser_actions_menu_item_icon;
+ global::Xamarin.Essentials.Resource.Id.browser_actions_menu_item_text = global::HelloworldXamarin.Droid.Resource.Id.browser_actions_menu_item_text;
+ global::Xamarin.Essentials.Resource.Id.browser_actions_menu_view = global::HelloworldXamarin.Droid.Resource.Id.browser_actions_menu_view;
+ global::Xamarin.Essentials.Resource.Id.center = global::HelloworldXamarin.Droid.Resource.Id.center;
+ global::Xamarin.Essentials.Resource.Id.center_horizontal = global::HelloworldXamarin.Droid.Resource.Id.center_horizontal;
+ global::Xamarin.Essentials.Resource.Id.center_vertical = global::HelloworldXamarin.Droid.Resource.Id.center_vertical;
+ global::Xamarin.Essentials.Resource.Id.chronometer = global::HelloworldXamarin.Droid.Resource.Id.chronometer;
+ global::Xamarin.Essentials.Resource.Id.clip_horizontal = global::HelloworldXamarin.Droid.Resource.Id.clip_horizontal;
+ global::Xamarin.Essentials.Resource.Id.clip_vertical = global::HelloworldXamarin.Droid.Resource.Id.clip_vertical;
+ global::Xamarin.Essentials.Resource.Id.end = global::HelloworldXamarin.Droid.Resource.Id.end;
+ global::Xamarin.Essentials.Resource.Id.fill = global::HelloworldXamarin.Droid.Resource.Id.fill;
+ global::Xamarin.Essentials.Resource.Id.fill_horizontal = global::HelloworldXamarin.Droid.Resource.Id.fill_horizontal;
+ global::Xamarin.Essentials.Resource.Id.fill_vertical = global::HelloworldXamarin.Droid.Resource.Id.fill_vertical;
+ global::Xamarin.Essentials.Resource.Id.forever = global::HelloworldXamarin.Droid.Resource.Id.forever;
+ global::Xamarin.Essentials.Resource.Id.icon = global::HelloworldXamarin.Droid.Resource.Id.icon;
+ global::Xamarin.Essentials.Resource.Id.icon_group = global::HelloworldXamarin.Droid.Resource.Id.icon_group;
+ global::Xamarin.Essentials.Resource.Id.info = global::HelloworldXamarin.Droid.Resource.Id.info;
+ global::Xamarin.Essentials.Resource.Id.italic = global::HelloworldXamarin.Droid.Resource.Id.italic;
+ global::Xamarin.Essentials.Resource.Id.left = global::HelloworldXamarin.Droid.Resource.Id.left;
+ global::Xamarin.Essentials.Resource.Id.line1 = global::HelloworldXamarin.Droid.Resource.Id.line1;
+ global::Xamarin.Essentials.Resource.Id.line3 = global::HelloworldXamarin.Droid.Resource.Id.line3;
+ global::Xamarin.Essentials.Resource.Id.none = global::HelloworldXamarin.Droid.Resource.Id.none;
+ global::Xamarin.Essentials.Resource.Id.normal = global::HelloworldXamarin.Droid.Resource.Id.normal;
+ global::Xamarin.Essentials.Resource.Id.notification_background = global::HelloworldXamarin.Droid.Resource.Id.notification_background;
+ global::Xamarin.Essentials.Resource.Id.notification_main_column = global::HelloworldXamarin.Droid.Resource.Id.notification_main_column;
+ global::Xamarin.Essentials.Resource.Id.notification_main_column_container = global::HelloworldXamarin.Droid.Resource.Id.notification_main_column_container;
+ global::Xamarin.Essentials.Resource.Id.right = global::HelloworldXamarin.Droid.Resource.Id.right;
+ global::Xamarin.Essentials.Resource.Id.right_icon = global::HelloworldXamarin.Droid.Resource.Id.right_icon;
+ global::Xamarin.Essentials.Resource.Id.right_side = global::HelloworldXamarin.Droid.Resource.Id.right_side;
+ global::Xamarin.Essentials.Resource.Id.start = global::HelloworldXamarin.Droid.Resource.Id.start;
+ global::Xamarin.Essentials.Resource.Id.tag_transition_group = global::HelloworldXamarin.Droid.Resource.Id.tag_transition_group;
+ global::Xamarin.Essentials.Resource.Id.tag_unhandled_key_event_manager = global::HelloworldXamarin.Droid.Resource.Id.tag_unhandled_key_event_manager;
+ global::Xamarin.Essentials.Resource.Id.tag_unhandled_key_listeners = global::HelloworldXamarin.Droid.Resource.Id.tag_unhandled_key_listeners;
+ global::Xamarin.Essentials.Resource.Id.text = global::HelloworldXamarin.Droid.Resource.Id.text;
+ global::Xamarin.Essentials.Resource.Id.text2 = global::HelloworldXamarin.Droid.Resource.Id.text2;
+ global::Xamarin.Essentials.Resource.Id.time = global::HelloworldXamarin.Droid.Resource.Id.time;
+ global::Xamarin.Essentials.Resource.Id.title = global::HelloworldXamarin.Droid.Resource.Id.title;
+ global::Xamarin.Essentials.Resource.Id.top = global::HelloworldXamarin.Droid.Resource.Id.top;
+ global::Xamarin.Essentials.Resource.Integer.status_bar_notification_info_maxnum = global::HelloworldXamarin.Droid.Resource.Integer.status_bar_notification_info_maxnum;
+ global::Xamarin.Essentials.Resource.Layout.browser_actions_context_menu_page = global::HelloworldXamarin.Droid.Resource.Layout.browser_actions_context_menu_page;
+ global::Xamarin.Essentials.Resource.Layout.browser_actions_context_menu_row = global::HelloworldXamarin.Droid.Resource.Layout.browser_actions_context_menu_row;
+ global::Xamarin.Essentials.Resource.Layout.notification_action = global::HelloworldXamarin.Droid.Resource.Layout.notification_action;
+ global::Xamarin.Essentials.Resource.Layout.notification_action_tombstone = global::HelloworldXamarin.Droid.Resource.Layout.notification_action_tombstone;
+ global::Xamarin.Essentials.Resource.Layout.notification_template_custom_big = global::HelloworldXamarin.Droid.Resource.Layout.notification_template_custom_big;
+ global::Xamarin.Essentials.Resource.Layout.notification_template_icon_group = global::HelloworldXamarin.Droid.Resource.Layout.notification_template_icon_group;
+ global::Xamarin.Essentials.Resource.Layout.notification_template_part_chronometer = global::HelloworldXamarin.Droid.Resource.Layout.notification_template_part_chronometer;
+ global::Xamarin.Essentials.Resource.Layout.notification_template_part_time = global::HelloworldXamarin.Droid.Resource.Layout.notification_template_part_time;
+ global::Xamarin.Essentials.Resource.String.status_bar_notification_info_overflow = global::HelloworldXamarin.Droid.Resource.String.status_bar_notification_info_overflow;
+ global::Xamarin.Essentials.Resource.Style.TextAppearance_Compat_Notification = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_Compat_Notification;
+ global::Xamarin.Essentials.Resource.Style.TextAppearance_Compat_Notification_Info = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_Compat_Notification_Info;
+ global::Xamarin.Essentials.Resource.Style.TextAppearance_Compat_Notification_Line2 = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_Compat_Notification_Line2;
+ global::Xamarin.Essentials.Resource.Style.TextAppearance_Compat_Notification_Time = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_Compat_Notification_Time;
+ global::Xamarin.Essentials.Resource.Style.TextAppearance_Compat_Notification_Title = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_Compat_Notification_Title;
+ global::Xamarin.Essentials.Resource.Style.Widget_Compat_NotificationActionContainer = global::HelloworldXamarin.Droid.Resource.Style.Widget_Compat_NotificationActionContainer;
+ global::Xamarin.Essentials.Resource.Style.Widget_Compat_NotificationActionText = global::HelloworldXamarin.Droid.Resource.Style.Widget_Compat_NotificationActionText;
+ global::Xamarin.Essentials.Resource.Style.Widget_Support_CoordinatorLayout = global::HelloworldXamarin.Droid.Resource.Style.Widget_Support_CoordinatorLayout;
+ global::Xamarin.Essentials.Resource.Styleable.ColorStateListItem = global::HelloworldXamarin.Droid.Resource.Styleable.ColorStateListItem;
+ global::Xamarin.Essentials.Resource.Styleable.ColorStateListItem_alpha = global::HelloworldXamarin.Droid.Resource.Styleable.ColorStateListItem_alpha;
+ global::Xamarin.Essentials.Resource.Styleable.ColorStateListItem_android_alpha = global::HelloworldXamarin.Droid.Resource.Styleable.ColorStateListItem_android_alpha;
+ global::Xamarin.Essentials.Resource.Styleable.ColorStateListItem_android_color = global::HelloworldXamarin.Droid.Resource.Styleable.ColorStateListItem_android_color;
+ global::Xamarin.Essentials.Resource.Styleable.CoordinatorLayout = global::HelloworldXamarin.Droid.Resource.Styleable.CoordinatorLayout;
+ global::Xamarin.Essentials.Resource.Styleable.CoordinatorLayout_keylines = global::HelloworldXamarin.Droid.Resource.Styleable.CoordinatorLayout_keylines;
+ global::Xamarin.Essentials.Resource.Styleable.CoordinatorLayout_Layout = global::HelloworldXamarin.Droid.Resource.Styleable.CoordinatorLayout_Layout;
+ global::Xamarin.Essentials.Resource.Styleable.CoordinatorLayout_Layout_android_layout_gravity = global::HelloworldXamarin.Droid.Resource.Styleable.CoordinatorLayout_Layout_android_layout_gravity;
+ global::Xamarin.Essentials.Resource.Styleable.CoordinatorLayout_Layout_layout_anchor = global::HelloworldXamarin.Droid.Resource.Styleable.CoordinatorLayout_Layout_layout_anchor;
+ global::Xamarin.Essentials.Resource.Styleable.CoordinatorLayout_Layout_layout_anchorGravity = global::HelloworldXamarin.Droid.Resource.Styleable.CoordinatorLayout_Layout_layout_anchorGravity;
+ global::Xamarin.Essentials.Resource.Styleable.CoordinatorLayout_Layout_layout_behavior = global::HelloworldXamarin.Droid.Resource.Styleable.CoordinatorLayout_Layout_layout_behavior;
+ global::Xamarin.Essentials.Resource.Styleable.CoordinatorLayout_Layout_layout_dodgeInsetEdges = global::HelloworldXamarin.Droid.Resource.Styleable.CoordinatorLayout_Layout_layout_dodgeInsetEdges;
+ global::Xamarin.Essentials.Resource.Styleable.CoordinatorLayout_Layout_layout_insetEdge = global::HelloworldXamarin.Droid.Resource.Styleable.CoordinatorLayout_Layout_layout_insetEdge;
+ global::Xamarin.Essentials.Resource.Styleable.CoordinatorLayout_Layout_layout_keyline = global::HelloworldXamarin.Droid.Resource.Styleable.CoordinatorLayout_Layout_layout_keyline;
+ global::Xamarin.Essentials.Resource.Styleable.CoordinatorLayout_statusBarBackground = global::HelloworldXamarin.Droid.Resource.Styleable.CoordinatorLayout_statusBarBackground;
+ global::Xamarin.Essentials.Resource.Styleable.FontFamily = global::HelloworldXamarin.Droid.Resource.Styleable.FontFamily;
+ global::Xamarin.Essentials.Resource.Styleable.FontFamilyFont = global::HelloworldXamarin.Droid.Resource.Styleable.FontFamilyFont;
+ global::Xamarin.Essentials.Resource.Styleable.FontFamilyFont_android_font = global::HelloworldXamarin.Droid.Resource.Styleable.FontFamilyFont_android_font;
+ global::Xamarin.Essentials.Resource.Styleable.FontFamilyFont_android_fontStyle = global::HelloworldXamarin.Droid.Resource.Styleable.FontFamilyFont_android_fontStyle;
+ global::Xamarin.Essentials.Resource.Styleable.FontFamilyFont_android_fontVariationSettings = global::HelloworldXamarin.Droid.Resource.Styleable.FontFamilyFont_android_fontVariationSettings;
+ global::Xamarin.Essentials.Resource.Styleable.FontFamilyFont_android_fontWeight = global::HelloworldXamarin.Droid.Resource.Styleable.FontFamilyFont_android_fontWeight;
+ global::Xamarin.Essentials.Resource.Styleable.FontFamilyFont_android_ttcIndex = global::HelloworldXamarin.Droid.Resource.Styleable.FontFamilyFont_android_ttcIndex;
+ global::Xamarin.Essentials.Resource.Styleable.FontFamilyFont_font = global::HelloworldXamarin.Droid.Resource.Styleable.FontFamilyFont_font;
+ global::Xamarin.Essentials.Resource.Styleable.FontFamilyFont_fontStyle = global::HelloworldXamarin.Droid.Resource.Styleable.FontFamilyFont_fontStyle;
+ global::Xamarin.Essentials.Resource.Styleable.FontFamilyFont_fontVariationSettings = global::HelloworldXamarin.Droid.Resource.Styleable.FontFamilyFont_fontVariationSettings;
+ global::Xamarin.Essentials.Resource.Styleable.FontFamilyFont_fontWeight = global::HelloworldXamarin.Droid.Resource.Styleable.FontFamilyFont_fontWeight;
+ global::Xamarin.Essentials.Resource.Styleable.FontFamilyFont_ttcIndex = global::HelloworldXamarin.Droid.Resource.Styleable.FontFamilyFont_ttcIndex;
+ global::Xamarin.Essentials.Resource.Styleable.FontFamily_fontProviderAuthority = global::HelloworldXamarin.Droid.Resource.Styleable.FontFamily_fontProviderAuthority;
+ global::Xamarin.Essentials.Resource.Styleable.FontFamily_fontProviderCerts = global::HelloworldXamarin.Droid.Resource.Styleable.FontFamily_fontProviderCerts;
+ global::Xamarin.Essentials.Resource.Styleable.FontFamily_fontProviderFetchStrategy = global::HelloworldXamarin.Droid.Resource.Styleable.FontFamily_fontProviderFetchStrategy;
+ global::Xamarin.Essentials.Resource.Styleable.FontFamily_fontProviderFetchTimeout = global::HelloworldXamarin.Droid.Resource.Styleable.FontFamily_fontProviderFetchTimeout;
+ global::Xamarin.Essentials.Resource.Styleable.FontFamily_fontProviderPackage = global::HelloworldXamarin.Droid.Resource.Styleable.FontFamily_fontProviderPackage;
+ global::Xamarin.Essentials.Resource.Styleable.FontFamily_fontProviderQuery = global::HelloworldXamarin.Droid.Resource.Styleable.FontFamily_fontProviderQuery;
+ global::Xamarin.Essentials.Resource.Styleable.GradientColor = global::HelloworldXamarin.Droid.Resource.Styleable.GradientColor;
+ global::Xamarin.Essentials.Resource.Styleable.GradientColorItem = global::HelloworldXamarin.Droid.Resource.Styleable.GradientColorItem;
+ global::Xamarin.Essentials.Resource.Styleable.GradientColorItem_android_color = global::HelloworldXamarin.Droid.Resource.Styleable.GradientColorItem_android_color;
+ global::Xamarin.Essentials.Resource.Styleable.GradientColorItem_android_offset = global::HelloworldXamarin.Droid.Resource.Styleable.GradientColorItem_android_offset;
+ global::Xamarin.Essentials.Resource.Styleable.GradientColor_android_centerColor = global::HelloworldXamarin.Droid.Resource.Styleable.GradientColor_android_centerColor;
+ global::Xamarin.Essentials.Resource.Styleable.GradientColor_android_centerX = global::HelloworldXamarin.Droid.Resource.Styleable.GradientColor_android_centerX;
+ global::Xamarin.Essentials.Resource.Styleable.GradientColor_android_centerY = global::HelloworldXamarin.Droid.Resource.Styleable.GradientColor_android_centerY;
+ global::Xamarin.Essentials.Resource.Styleable.GradientColor_android_endColor = global::HelloworldXamarin.Droid.Resource.Styleable.GradientColor_android_endColor;
+ global::Xamarin.Essentials.Resource.Styleable.GradientColor_android_endX = global::HelloworldXamarin.Droid.Resource.Styleable.GradientColor_android_endX;
+ global::Xamarin.Essentials.Resource.Styleable.GradientColor_android_endY = global::HelloworldXamarin.Droid.Resource.Styleable.GradientColor_android_endY;
+ global::Xamarin.Essentials.Resource.Styleable.GradientColor_android_gradientRadius = global::HelloworldXamarin.Droid.Resource.Styleable.GradientColor_android_gradientRadius;
+ global::Xamarin.Essentials.Resource.Styleable.GradientColor_android_startColor = global::HelloworldXamarin.Droid.Resource.Styleable.GradientColor_android_startColor;
+ global::Xamarin.Essentials.Resource.Styleable.GradientColor_android_startX = global::HelloworldXamarin.Droid.Resource.Styleable.GradientColor_android_startX;
+ global::Xamarin.Essentials.Resource.Styleable.GradientColor_android_startY = global::HelloworldXamarin.Droid.Resource.Styleable.GradientColor_android_startY;
+ global::Xamarin.Essentials.Resource.Styleable.GradientColor_android_tileMode = global::HelloworldXamarin.Droid.Resource.Styleable.GradientColor_android_tileMode;
+ global::Xamarin.Essentials.Resource.Styleable.GradientColor_android_type = global::HelloworldXamarin.Droid.Resource.Styleable.GradientColor_android_type;
+ global::Xamarin.Essentials.Resource.Xml.xamarin_essentials_fileprovider_file_paths = global::HelloworldXamarin.Droid.Resource.Xml.xamarin_essentials_fileprovider_file_paths;
+ global::Xamarin.Forms.Platform.Android.Resource.Animation.abc_fade_in = global::HelloworldXamarin.Droid.Resource.Animation.abc_fade_in;
+ global::Xamarin.Forms.Platform.Android.Resource.Animation.abc_fade_out = global::HelloworldXamarin.Droid.Resource.Animation.abc_fade_out;
+ global::Xamarin.Forms.Platform.Android.Resource.Animation.abc_grow_fade_in_from_bottom = global::HelloworldXamarin.Droid.Resource.Animation.abc_grow_fade_in_from_bottom;
+ global::Xamarin.Forms.Platform.Android.Resource.Animation.abc_popup_enter = global::HelloworldXamarin.Droid.Resource.Animation.abc_popup_enter;
+ global::Xamarin.Forms.Platform.Android.Resource.Animation.abc_popup_exit = global::HelloworldXamarin.Droid.Resource.Animation.abc_popup_exit;
+ global::Xamarin.Forms.Platform.Android.Resource.Animation.abc_shrink_fade_out_from_bottom = global::HelloworldXamarin.Droid.Resource.Animation.abc_shrink_fade_out_from_bottom;
+ global::Xamarin.Forms.Platform.Android.Resource.Animation.abc_slide_in_bottom = global::HelloworldXamarin.Droid.Resource.Animation.abc_slide_in_bottom;
+ global::Xamarin.Forms.Platform.Android.Resource.Animation.abc_slide_in_top = global::HelloworldXamarin.Droid.Resource.Animation.abc_slide_in_top;
+ global::Xamarin.Forms.Platform.Android.Resource.Animation.abc_slide_out_bottom = global::HelloworldXamarin.Droid.Resource.Animation.abc_slide_out_bottom;
+ global::Xamarin.Forms.Platform.Android.Resource.Animation.abc_slide_out_top = global::HelloworldXamarin.Droid.Resource.Animation.abc_slide_out_top;
+ global::Xamarin.Forms.Platform.Android.Resource.Animation.abc_tooltip_enter = global::HelloworldXamarin.Droid.Resource.Animation.abc_tooltip_enter;
+ global::Xamarin.Forms.Platform.Android.Resource.Animation.abc_tooltip_exit = global::HelloworldXamarin.Droid.Resource.Animation.abc_tooltip_exit;
+ global::Xamarin.Forms.Platform.Android.Resource.Animation.design_bottom_sheet_slide_in = global::HelloworldXamarin.Droid.Resource.Animation.design_bottom_sheet_slide_in;
+ global::Xamarin.Forms.Platform.Android.Resource.Animation.design_bottom_sheet_slide_out = global::HelloworldXamarin.Droid.Resource.Animation.design_bottom_sheet_slide_out;
+ global::Xamarin.Forms.Platform.Android.Resource.Animation.design_snackbar_in = global::HelloworldXamarin.Droid.Resource.Animation.design_snackbar_in;
+ global::Xamarin.Forms.Platform.Android.Resource.Animation.design_snackbar_out = global::HelloworldXamarin.Droid.Resource.Animation.design_snackbar_out;
+ global::Xamarin.Forms.Platform.Android.Resource.Animation.EnterFromLeft = global::HelloworldXamarin.Droid.Resource.Animation.EnterFromLeft;
+ global::Xamarin.Forms.Platform.Android.Resource.Animation.EnterFromRight = global::HelloworldXamarin.Droid.Resource.Animation.EnterFromRight;
+ global::Xamarin.Forms.Platform.Android.Resource.Animation.ExitToLeft = global::HelloworldXamarin.Droid.Resource.Animation.ExitToLeft;
+ global::Xamarin.Forms.Platform.Android.Resource.Animation.ExitToRight = global::HelloworldXamarin.Droid.Resource.Animation.ExitToRight;
+ global::Xamarin.Forms.Platform.Android.Resource.Animator.design_appbar_state_list_animator = global::HelloworldXamarin.Droid.Resource.Animator.design_appbar_state_list_animator;
+ global::Xamarin.Forms.Platform.Android.Resource.Animator.design_fab_hide_motion_spec = global::HelloworldXamarin.Droid.Resource.Animator.design_fab_hide_motion_spec;
+ global::Xamarin.Forms.Platform.Android.Resource.Animator.design_fab_show_motion_spec = global::HelloworldXamarin.Droid.Resource.Animator.design_fab_show_motion_spec;
+ global::Xamarin.Forms.Platform.Android.Resource.Animator.mtrl_btn_state_list_anim = global::HelloworldXamarin.Droid.Resource.Animator.mtrl_btn_state_list_anim;
+ global::Xamarin.Forms.Platform.Android.Resource.Animator.mtrl_btn_unelevated_state_list_anim = global::HelloworldXamarin.Droid.Resource.Animator.mtrl_btn_unelevated_state_list_anim;
+ global::Xamarin.Forms.Platform.Android.Resource.Animator.mtrl_chip_state_list_anim = global::HelloworldXamarin.Droid.Resource.Animator.mtrl_chip_state_list_anim;
+ global::Xamarin.Forms.Platform.Android.Resource.Animator.mtrl_fab_hide_motion_spec = global::HelloworldXamarin.Droid.Resource.Animator.mtrl_fab_hide_motion_spec;
+ global::Xamarin.Forms.Platform.Android.Resource.Animator.mtrl_fab_show_motion_spec = global::HelloworldXamarin.Droid.Resource.Animator.mtrl_fab_show_motion_spec;
+ global::Xamarin.Forms.Platform.Android.Resource.Animator.mtrl_fab_transformation_sheet_collapse_spec = global::HelloworldXamarin.Droid.Resource.Animator.mtrl_fab_transformation_sheet_collapse_spec;
+ global::Xamarin.Forms.Platform.Android.Resource.Animator.mtrl_fab_transformation_sheet_expand_spec = global::HelloworldXamarin.Droid.Resource.Animator.mtrl_fab_transformation_sheet_expand_spec;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.actionBarDivider = global::HelloworldXamarin.Droid.Resource.Attribute.actionBarDivider;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.actionBarItemBackground = global::HelloworldXamarin.Droid.Resource.Attribute.actionBarItemBackground;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.actionBarPopupTheme = global::HelloworldXamarin.Droid.Resource.Attribute.actionBarPopupTheme;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.actionBarSize = global::HelloworldXamarin.Droid.Resource.Attribute.actionBarSize;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.actionBarSplitStyle = global::HelloworldXamarin.Droid.Resource.Attribute.actionBarSplitStyle;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.actionBarStyle = global::HelloworldXamarin.Droid.Resource.Attribute.actionBarStyle;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.actionBarTabBarStyle = global::HelloworldXamarin.Droid.Resource.Attribute.actionBarTabBarStyle;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.actionBarTabStyle = global::HelloworldXamarin.Droid.Resource.Attribute.actionBarTabStyle;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.actionBarTabTextStyle = global::HelloworldXamarin.Droid.Resource.Attribute.actionBarTabTextStyle;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.actionBarTheme = global::HelloworldXamarin.Droid.Resource.Attribute.actionBarTheme;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.actionBarWidgetTheme = global::HelloworldXamarin.Droid.Resource.Attribute.actionBarWidgetTheme;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.actionButtonStyle = global::HelloworldXamarin.Droid.Resource.Attribute.actionButtonStyle;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.actionDropDownStyle = global::HelloworldXamarin.Droid.Resource.Attribute.actionDropDownStyle;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.actionLayout = global::HelloworldXamarin.Droid.Resource.Attribute.actionLayout;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.actionMenuTextAppearance = global::HelloworldXamarin.Droid.Resource.Attribute.actionMenuTextAppearance;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.actionMenuTextColor = global::HelloworldXamarin.Droid.Resource.Attribute.actionMenuTextColor;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.actionModeBackground = global::HelloworldXamarin.Droid.Resource.Attribute.actionModeBackground;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.actionModeCloseButtonStyle = global::HelloworldXamarin.Droid.Resource.Attribute.actionModeCloseButtonStyle;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.actionModeCloseDrawable = global::HelloworldXamarin.Droid.Resource.Attribute.actionModeCloseDrawable;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.actionModeCopyDrawable = global::HelloworldXamarin.Droid.Resource.Attribute.actionModeCopyDrawable;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.actionModeCutDrawable = global::HelloworldXamarin.Droid.Resource.Attribute.actionModeCutDrawable;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.actionModeFindDrawable = global::HelloworldXamarin.Droid.Resource.Attribute.actionModeFindDrawable;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.actionModePasteDrawable = global::HelloworldXamarin.Droid.Resource.Attribute.actionModePasteDrawable;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.actionModePopupWindowStyle = global::HelloworldXamarin.Droid.Resource.Attribute.actionModePopupWindowStyle;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.actionModeSelectAllDrawable = global::HelloworldXamarin.Droid.Resource.Attribute.actionModeSelectAllDrawable;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.actionModeShareDrawable = global::HelloworldXamarin.Droid.Resource.Attribute.actionModeShareDrawable;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.actionModeSplitBackground = global::HelloworldXamarin.Droid.Resource.Attribute.actionModeSplitBackground;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.actionModeStyle = global::HelloworldXamarin.Droid.Resource.Attribute.actionModeStyle;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.actionModeWebSearchDrawable = global::HelloworldXamarin.Droid.Resource.Attribute.actionModeWebSearchDrawable;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.actionOverflowButtonStyle = global::HelloworldXamarin.Droid.Resource.Attribute.actionOverflowButtonStyle;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.actionOverflowMenuStyle = global::HelloworldXamarin.Droid.Resource.Attribute.actionOverflowMenuStyle;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.actionProviderClass = global::HelloworldXamarin.Droid.Resource.Attribute.actionProviderClass;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.actionViewClass = global::HelloworldXamarin.Droid.Resource.Attribute.actionViewClass;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.activityChooserViewStyle = global::HelloworldXamarin.Droid.Resource.Attribute.activityChooserViewStyle;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.alertDialogButtonGroupStyle = global::HelloworldXamarin.Droid.Resource.Attribute.alertDialogButtonGroupStyle;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.alertDialogCenterButtons = global::HelloworldXamarin.Droid.Resource.Attribute.alertDialogCenterButtons;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.alertDialogStyle = global::HelloworldXamarin.Droid.Resource.Attribute.alertDialogStyle;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.alertDialogTheme = global::HelloworldXamarin.Droid.Resource.Attribute.alertDialogTheme;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.allowStacking = global::HelloworldXamarin.Droid.Resource.Attribute.allowStacking;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.alpha = global::HelloworldXamarin.Droid.Resource.Attribute.alpha;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.alphabeticModifiers = global::HelloworldXamarin.Droid.Resource.Attribute.alphabeticModifiers;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.arrowHeadLength = global::HelloworldXamarin.Droid.Resource.Attribute.arrowHeadLength;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.arrowShaftLength = global::HelloworldXamarin.Droid.Resource.Attribute.arrowShaftLength;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.autoCompleteTextViewStyle = global::HelloworldXamarin.Droid.Resource.Attribute.autoCompleteTextViewStyle;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.autoSizeMaxTextSize = global::HelloworldXamarin.Droid.Resource.Attribute.autoSizeMaxTextSize;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.autoSizeMinTextSize = global::HelloworldXamarin.Droid.Resource.Attribute.autoSizeMinTextSize;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.autoSizePresetSizes = global::HelloworldXamarin.Droid.Resource.Attribute.autoSizePresetSizes;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.autoSizeStepGranularity = global::HelloworldXamarin.Droid.Resource.Attribute.autoSizeStepGranularity;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.autoSizeTextType = global::HelloworldXamarin.Droid.Resource.Attribute.autoSizeTextType;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.background = global::HelloworldXamarin.Droid.Resource.Attribute.background;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.backgroundSplit = global::HelloworldXamarin.Droid.Resource.Attribute.backgroundSplit;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.backgroundStacked = global::HelloworldXamarin.Droid.Resource.Attribute.backgroundStacked;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.backgroundTint = global::HelloworldXamarin.Droid.Resource.Attribute.backgroundTint;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.backgroundTintMode = global::HelloworldXamarin.Droid.Resource.Attribute.backgroundTintMode;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.barLength = global::HelloworldXamarin.Droid.Resource.Attribute.barLength;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.behavior_autoHide = global::HelloworldXamarin.Droid.Resource.Attribute.behavior_autoHide;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.behavior_fitToContents = global::HelloworldXamarin.Droid.Resource.Attribute.behavior_fitToContents;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.behavior_hideable = global::HelloworldXamarin.Droid.Resource.Attribute.behavior_hideable;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.behavior_overlapTop = global::HelloworldXamarin.Droid.Resource.Attribute.behavior_overlapTop;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.behavior_peekHeight = global::HelloworldXamarin.Droid.Resource.Attribute.behavior_peekHeight;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.behavior_skipCollapsed = global::HelloworldXamarin.Droid.Resource.Attribute.behavior_skipCollapsed;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.borderlessButtonStyle = global::HelloworldXamarin.Droid.Resource.Attribute.borderlessButtonStyle;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.borderWidth = global::HelloworldXamarin.Droid.Resource.Attribute.borderWidth;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.bottomAppBarStyle = global::HelloworldXamarin.Droid.Resource.Attribute.bottomAppBarStyle;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.bottomNavigationStyle = global::HelloworldXamarin.Droid.Resource.Attribute.bottomNavigationStyle;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.bottomSheetDialogTheme = global::HelloworldXamarin.Droid.Resource.Attribute.bottomSheetDialogTheme;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.bottomSheetStyle = global::HelloworldXamarin.Droid.Resource.Attribute.bottomSheetStyle;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.boxBackgroundColor = global::HelloworldXamarin.Droid.Resource.Attribute.boxBackgroundColor;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.boxBackgroundMode = global::HelloworldXamarin.Droid.Resource.Attribute.boxBackgroundMode;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.boxCollapsedPaddingTop = global::HelloworldXamarin.Droid.Resource.Attribute.boxCollapsedPaddingTop;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.boxCornerRadiusBottomEnd = global::HelloworldXamarin.Droid.Resource.Attribute.boxCornerRadiusBottomEnd;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.boxCornerRadiusBottomStart = global::HelloworldXamarin.Droid.Resource.Attribute.boxCornerRadiusBottomStart;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.boxCornerRadiusTopEnd = global::HelloworldXamarin.Droid.Resource.Attribute.boxCornerRadiusTopEnd;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.boxCornerRadiusTopStart = global::HelloworldXamarin.Droid.Resource.Attribute.boxCornerRadiusTopStart;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.boxStrokeColor = global::HelloworldXamarin.Droid.Resource.Attribute.boxStrokeColor;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.boxStrokeWidth = global::HelloworldXamarin.Droid.Resource.Attribute.boxStrokeWidth;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.buttonBarButtonStyle = global::HelloworldXamarin.Droid.Resource.Attribute.buttonBarButtonStyle;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.buttonBarNegativeButtonStyle = global::HelloworldXamarin.Droid.Resource.Attribute.buttonBarNegativeButtonStyle;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.buttonBarNeutralButtonStyle = global::HelloworldXamarin.Droid.Resource.Attribute.buttonBarNeutralButtonStyle;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.buttonBarPositiveButtonStyle = global::HelloworldXamarin.Droid.Resource.Attribute.buttonBarPositiveButtonStyle;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.buttonBarStyle = global::HelloworldXamarin.Droid.Resource.Attribute.buttonBarStyle;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.buttonGravity = global::HelloworldXamarin.Droid.Resource.Attribute.buttonGravity;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.buttonIconDimen = global::HelloworldXamarin.Droid.Resource.Attribute.buttonIconDimen;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.buttonPanelSideLayout = global::HelloworldXamarin.Droid.Resource.Attribute.buttonPanelSideLayout;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.buttonStyle = global::HelloworldXamarin.Droid.Resource.Attribute.buttonStyle;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.buttonStyleSmall = global::HelloworldXamarin.Droid.Resource.Attribute.buttonStyleSmall;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.buttonTint = global::HelloworldXamarin.Droid.Resource.Attribute.buttonTint;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.buttonTintMode = global::HelloworldXamarin.Droid.Resource.Attribute.buttonTintMode;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.cardBackgroundColor = global::HelloworldXamarin.Droid.Resource.Attribute.cardBackgroundColor;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.cardCornerRadius = global::HelloworldXamarin.Droid.Resource.Attribute.cardCornerRadius;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.cardElevation = global::HelloworldXamarin.Droid.Resource.Attribute.cardElevation;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.cardMaxElevation = global::HelloworldXamarin.Droid.Resource.Attribute.cardMaxElevation;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.cardPreventCornerOverlap = global::HelloworldXamarin.Droid.Resource.Attribute.cardPreventCornerOverlap;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.cardUseCompatPadding = global::HelloworldXamarin.Droid.Resource.Attribute.cardUseCompatPadding;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.cardViewStyle = global::HelloworldXamarin.Droid.Resource.Attribute.cardViewStyle;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.checkboxStyle = global::HelloworldXamarin.Droid.Resource.Attribute.checkboxStyle;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.checkedChip = global::HelloworldXamarin.Droid.Resource.Attribute.checkedChip;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.checkedIcon = global::HelloworldXamarin.Droid.Resource.Attribute.checkedIcon;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.checkedIconEnabled = global::HelloworldXamarin.Droid.Resource.Attribute.checkedIconEnabled;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.checkedIconVisible = global::HelloworldXamarin.Droid.Resource.Attribute.checkedIconVisible;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.checkedTextViewStyle = global::HelloworldXamarin.Droid.Resource.Attribute.checkedTextViewStyle;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.chipBackgroundColor = global::HelloworldXamarin.Droid.Resource.Attribute.chipBackgroundColor;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.chipCornerRadius = global::HelloworldXamarin.Droid.Resource.Attribute.chipCornerRadius;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.chipEndPadding = global::HelloworldXamarin.Droid.Resource.Attribute.chipEndPadding;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.chipGroupStyle = global::HelloworldXamarin.Droid.Resource.Attribute.chipGroupStyle;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.chipIcon = global::HelloworldXamarin.Droid.Resource.Attribute.chipIcon;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.chipIconEnabled = global::HelloworldXamarin.Droid.Resource.Attribute.chipIconEnabled;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.chipIconSize = global::HelloworldXamarin.Droid.Resource.Attribute.chipIconSize;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.chipIconTint = global::HelloworldXamarin.Droid.Resource.Attribute.chipIconTint;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.chipIconVisible = global::HelloworldXamarin.Droid.Resource.Attribute.chipIconVisible;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.chipMinHeight = global::HelloworldXamarin.Droid.Resource.Attribute.chipMinHeight;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.chipSpacing = global::HelloworldXamarin.Droid.Resource.Attribute.chipSpacing;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.chipSpacingHorizontal = global::HelloworldXamarin.Droid.Resource.Attribute.chipSpacingHorizontal;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.chipSpacingVertical = global::HelloworldXamarin.Droid.Resource.Attribute.chipSpacingVertical;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.chipStandaloneStyle = global::HelloworldXamarin.Droid.Resource.Attribute.chipStandaloneStyle;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.chipStartPadding = global::HelloworldXamarin.Droid.Resource.Attribute.chipStartPadding;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.chipStrokeColor = global::HelloworldXamarin.Droid.Resource.Attribute.chipStrokeColor;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.chipStrokeWidth = global::HelloworldXamarin.Droid.Resource.Attribute.chipStrokeWidth;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.chipStyle = global::HelloworldXamarin.Droid.Resource.Attribute.chipStyle;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.closeIcon = global::HelloworldXamarin.Droid.Resource.Attribute.closeIcon;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.closeIconEnabled = global::HelloworldXamarin.Droid.Resource.Attribute.closeIconEnabled;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.closeIconEndPadding = global::HelloworldXamarin.Droid.Resource.Attribute.closeIconEndPadding;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.closeIconSize = global::HelloworldXamarin.Droid.Resource.Attribute.closeIconSize;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.closeIconStartPadding = global::HelloworldXamarin.Droid.Resource.Attribute.closeIconStartPadding;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.closeIconTint = global::HelloworldXamarin.Droid.Resource.Attribute.closeIconTint;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.closeIconVisible = global::HelloworldXamarin.Droid.Resource.Attribute.closeIconVisible;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.closeItemLayout = global::HelloworldXamarin.Droid.Resource.Attribute.closeItemLayout;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.collapseContentDescription = global::HelloworldXamarin.Droid.Resource.Attribute.collapseContentDescription;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.collapsedTitleGravity = global::HelloworldXamarin.Droid.Resource.Attribute.collapsedTitleGravity;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.collapsedTitleTextAppearance = global::HelloworldXamarin.Droid.Resource.Attribute.collapsedTitleTextAppearance;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.collapseIcon = global::HelloworldXamarin.Droid.Resource.Attribute.collapseIcon;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.color = global::HelloworldXamarin.Droid.Resource.Attribute.color;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.colorAccent = global::HelloworldXamarin.Droid.Resource.Attribute.colorAccent;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.colorBackgroundFloating = global::HelloworldXamarin.Droid.Resource.Attribute.colorBackgroundFloating;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.colorButtonNormal = global::HelloworldXamarin.Droid.Resource.Attribute.colorButtonNormal;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.colorControlActivated = global::HelloworldXamarin.Droid.Resource.Attribute.colorControlActivated;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.colorControlHighlight = global::HelloworldXamarin.Droid.Resource.Attribute.colorControlHighlight;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.colorControlNormal = global::HelloworldXamarin.Droid.Resource.Attribute.colorControlNormal;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.colorError = global::HelloworldXamarin.Droid.Resource.Attribute.colorError;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.colorPrimary = global::HelloworldXamarin.Droid.Resource.Attribute.colorPrimary;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.colorPrimaryDark = global::HelloworldXamarin.Droid.Resource.Attribute.colorPrimaryDark;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.colorSecondary = global::HelloworldXamarin.Droid.Resource.Attribute.colorSecondary;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.colorSwitchThumbNormal = global::HelloworldXamarin.Droid.Resource.Attribute.colorSwitchThumbNormal;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.commitIcon = global::HelloworldXamarin.Droid.Resource.Attribute.commitIcon;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.contentDescription = global::HelloworldXamarin.Droid.Resource.Attribute.contentDescription;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.contentInsetEnd = global::HelloworldXamarin.Droid.Resource.Attribute.contentInsetEnd;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.contentInsetEndWithActions = global::HelloworldXamarin.Droid.Resource.Attribute.contentInsetEndWithActions;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.contentInsetLeft = global::HelloworldXamarin.Droid.Resource.Attribute.contentInsetLeft;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.contentInsetRight = global::HelloworldXamarin.Droid.Resource.Attribute.contentInsetRight;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.contentInsetStart = global::HelloworldXamarin.Droid.Resource.Attribute.contentInsetStart;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.contentInsetStartWithNavigation = global::HelloworldXamarin.Droid.Resource.Attribute.contentInsetStartWithNavigation;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.contentPadding = global::HelloworldXamarin.Droid.Resource.Attribute.contentPadding;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.contentPaddingBottom = global::HelloworldXamarin.Droid.Resource.Attribute.contentPaddingBottom;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.contentPaddingLeft = global::HelloworldXamarin.Droid.Resource.Attribute.contentPaddingLeft;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.contentPaddingRight = global::HelloworldXamarin.Droid.Resource.Attribute.contentPaddingRight;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.contentPaddingTop = global::HelloworldXamarin.Droid.Resource.Attribute.contentPaddingTop;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.contentScrim = global::HelloworldXamarin.Droid.Resource.Attribute.contentScrim;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.controlBackground = global::HelloworldXamarin.Droid.Resource.Attribute.controlBackground;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.coordinatorLayoutStyle = global::HelloworldXamarin.Droid.Resource.Attribute.coordinatorLayoutStyle;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.cornerRadius = global::HelloworldXamarin.Droid.Resource.Attribute.cornerRadius;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.counterEnabled = global::HelloworldXamarin.Droid.Resource.Attribute.counterEnabled;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.counterMaxLength = global::HelloworldXamarin.Droid.Resource.Attribute.counterMaxLength;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.counterOverflowTextAppearance = global::HelloworldXamarin.Droid.Resource.Attribute.counterOverflowTextAppearance;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.counterTextAppearance = global::HelloworldXamarin.Droid.Resource.Attribute.counterTextAppearance;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.customNavigationLayout = global::HelloworldXamarin.Droid.Resource.Attribute.customNavigationLayout;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.defaultQueryHint = global::HelloworldXamarin.Droid.Resource.Attribute.defaultQueryHint;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.dialogCornerRadius = global::HelloworldXamarin.Droid.Resource.Attribute.dialogCornerRadius;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.dialogPreferredPadding = global::HelloworldXamarin.Droid.Resource.Attribute.dialogPreferredPadding;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.dialogTheme = global::HelloworldXamarin.Droid.Resource.Attribute.dialogTheme;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.displayOptions = global::HelloworldXamarin.Droid.Resource.Attribute.displayOptions;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.divider = global::HelloworldXamarin.Droid.Resource.Attribute.divider;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.dividerHorizontal = global::HelloworldXamarin.Droid.Resource.Attribute.dividerHorizontal;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.dividerPadding = global::HelloworldXamarin.Droid.Resource.Attribute.dividerPadding;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.dividerVertical = global::HelloworldXamarin.Droid.Resource.Attribute.dividerVertical;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.drawableSize = global::HelloworldXamarin.Droid.Resource.Attribute.drawableSize;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.drawerArrowStyle = global::HelloworldXamarin.Droid.Resource.Attribute.drawerArrowStyle;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.dropdownListPreferredItemHeight = global::HelloworldXamarin.Droid.Resource.Attribute.dropdownListPreferredItemHeight;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.dropDownListViewStyle = global::HelloworldXamarin.Droid.Resource.Attribute.dropDownListViewStyle;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.editTextBackground = global::HelloworldXamarin.Droid.Resource.Attribute.editTextBackground;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.editTextColor = global::HelloworldXamarin.Droid.Resource.Attribute.editTextColor;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.editTextStyle = global::HelloworldXamarin.Droid.Resource.Attribute.editTextStyle;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.elevation = global::HelloworldXamarin.Droid.Resource.Attribute.elevation;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.enforceMaterialTheme = global::HelloworldXamarin.Droid.Resource.Attribute.enforceMaterialTheme;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.enforceTextAppearance = global::HelloworldXamarin.Droid.Resource.Attribute.enforceTextAppearance;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.errorEnabled = global::HelloworldXamarin.Droid.Resource.Attribute.errorEnabled;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.errorTextAppearance = global::HelloworldXamarin.Droid.Resource.Attribute.errorTextAppearance;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.expandActivityOverflowButtonDrawable = global::HelloworldXamarin.Droid.Resource.Attribute.expandActivityOverflowButtonDrawable;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.expanded = global::HelloworldXamarin.Droid.Resource.Attribute.expanded;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.expandedTitleGravity = global::HelloworldXamarin.Droid.Resource.Attribute.expandedTitleGravity;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.expandedTitleMargin = global::HelloworldXamarin.Droid.Resource.Attribute.expandedTitleMargin;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.expandedTitleMarginBottom = global::HelloworldXamarin.Droid.Resource.Attribute.expandedTitleMarginBottom;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.expandedTitleMarginEnd = global::HelloworldXamarin.Droid.Resource.Attribute.expandedTitleMarginEnd;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.expandedTitleMarginStart = global::HelloworldXamarin.Droid.Resource.Attribute.expandedTitleMarginStart;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.expandedTitleMarginTop = global::HelloworldXamarin.Droid.Resource.Attribute.expandedTitleMarginTop;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.expandedTitleTextAppearance = global::HelloworldXamarin.Droid.Resource.Attribute.expandedTitleTextAppearance;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.fabAlignmentMode = global::HelloworldXamarin.Droid.Resource.Attribute.fabAlignmentMode;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.fabCradleMargin = global::HelloworldXamarin.Droid.Resource.Attribute.fabCradleMargin;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.fabCradleRoundedCornerRadius = global::HelloworldXamarin.Droid.Resource.Attribute.fabCradleRoundedCornerRadius;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.fabCradleVerticalOffset = global::HelloworldXamarin.Droid.Resource.Attribute.fabCradleVerticalOffset;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.fabCustomSize = global::HelloworldXamarin.Droid.Resource.Attribute.fabCustomSize;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.fabSize = global::HelloworldXamarin.Droid.Resource.Attribute.fabSize;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.fastScrollEnabled = global::HelloworldXamarin.Droid.Resource.Attribute.fastScrollEnabled;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.fastScrollHorizontalThumbDrawable = global::HelloworldXamarin.Droid.Resource.Attribute.fastScrollHorizontalThumbDrawable;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.fastScrollHorizontalTrackDrawable = global::HelloworldXamarin.Droid.Resource.Attribute.fastScrollHorizontalTrackDrawable;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.fastScrollVerticalThumbDrawable = global::HelloworldXamarin.Droid.Resource.Attribute.fastScrollVerticalThumbDrawable;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.fastScrollVerticalTrackDrawable = global::HelloworldXamarin.Droid.Resource.Attribute.fastScrollVerticalTrackDrawable;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.firstBaselineToTopHeight = global::HelloworldXamarin.Droid.Resource.Attribute.firstBaselineToTopHeight;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.floatingActionButtonStyle = global::HelloworldXamarin.Droid.Resource.Attribute.floatingActionButtonStyle;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.font = global::HelloworldXamarin.Droid.Resource.Attribute.font;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.fontFamily = global::HelloworldXamarin.Droid.Resource.Attribute.fontFamily;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.fontProviderAuthority = global::HelloworldXamarin.Droid.Resource.Attribute.fontProviderAuthority;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.fontProviderCerts = global::HelloworldXamarin.Droid.Resource.Attribute.fontProviderCerts;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.fontProviderFetchStrategy = global::HelloworldXamarin.Droid.Resource.Attribute.fontProviderFetchStrategy;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.fontProviderFetchTimeout = global::HelloworldXamarin.Droid.Resource.Attribute.fontProviderFetchTimeout;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.fontProviderPackage = global::HelloworldXamarin.Droid.Resource.Attribute.fontProviderPackage;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.fontProviderQuery = global::HelloworldXamarin.Droid.Resource.Attribute.fontProviderQuery;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.fontStyle = global::HelloworldXamarin.Droid.Resource.Attribute.fontStyle;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.fontVariationSettings = global::HelloworldXamarin.Droid.Resource.Attribute.fontVariationSettings;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.fontWeight = global::HelloworldXamarin.Droid.Resource.Attribute.fontWeight;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.foregroundInsidePadding = global::HelloworldXamarin.Droid.Resource.Attribute.foregroundInsidePadding;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.gapBetweenBars = global::HelloworldXamarin.Droid.Resource.Attribute.gapBetweenBars;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.goIcon = global::HelloworldXamarin.Droid.Resource.Attribute.goIcon;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.headerLayout = global::HelloworldXamarin.Droid.Resource.Attribute.headerLayout;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.height = global::HelloworldXamarin.Droid.Resource.Attribute.height;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.helperText = global::HelloworldXamarin.Droid.Resource.Attribute.helperText;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.helperTextEnabled = global::HelloworldXamarin.Droid.Resource.Attribute.helperTextEnabled;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.helperTextTextAppearance = global::HelloworldXamarin.Droid.Resource.Attribute.helperTextTextAppearance;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.hideMotionSpec = global::HelloworldXamarin.Droid.Resource.Attribute.hideMotionSpec;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.hideOnContentScroll = global::HelloworldXamarin.Droid.Resource.Attribute.hideOnContentScroll;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.hideOnScroll = global::HelloworldXamarin.Droid.Resource.Attribute.hideOnScroll;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.hintAnimationEnabled = global::HelloworldXamarin.Droid.Resource.Attribute.hintAnimationEnabled;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.hintEnabled = global::HelloworldXamarin.Droid.Resource.Attribute.hintEnabled;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.hintTextAppearance = global::HelloworldXamarin.Droid.Resource.Attribute.hintTextAppearance;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.homeAsUpIndicator = global::HelloworldXamarin.Droid.Resource.Attribute.homeAsUpIndicator;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.homeLayout = global::HelloworldXamarin.Droid.Resource.Attribute.homeLayout;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.hoveredFocusedTranslationZ = global::HelloworldXamarin.Droid.Resource.Attribute.hoveredFocusedTranslationZ;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.icon = global::HelloworldXamarin.Droid.Resource.Attribute.icon;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.iconEndPadding = global::HelloworldXamarin.Droid.Resource.Attribute.iconEndPadding;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.iconGravity = global::HelloworldXamarin.Droid.Resource.Attribute.iconGravity;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.iconifiedByDefault = global::HelloworldXamarin.Droid.Resource.Attribute.iconifiedByDefault;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.iconPadding = global::HelloworldXamarin.Droid.Resource.Attribute.iconPadding;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.iconSize = global::HelloworldXamarin.Droid.Resource.Attribute.iconSize;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.iconStartPadding = global::HelloworldXamarin.Droid.Resource.Attribute.iconStartPadding;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.iconTint = global::HelloworldXamarin.Droid.Resource.Attribute.iconTint;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.iconTintMode = global::HelloworldXamarin.Droid.Resource.Attribute.iconTintMode;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.imageButtonStyle = global::HelloworldXamarin.Droid.Resource.Attribute.imageButtonStyle;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.indeterminateProgressStyle = global::HelloworldXamarin.Droid.Resource.Attribute.indeterminateProgressStyle;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.initialActivityCount = global::HelloworldXamarin.Droid.Resource.Attribute.initialActivityCount;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.insetForeground = global::HelloworldXamarin.Droid.Resource.Attribute.insetForeground;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.isLightTheme = global::HelloworldXamarin.Droid.Resource.Attribute.isLightTheme;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.itemBackground = global::HelloworldXamarin.Droid.Resource.Attribute.itemBackground;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.itemHorizontalPadding = global::HelloworldXamarin.Droid.Resource.Attribute.itemHorizontalPadding;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.itemHorizontalTranslationEnabled = global::HelloworldXamarin.Droid.Resource.Attribute.itemHorizontalTranslationEnabled;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.itemIconPadding = global::HelloworldXamarin.Droid.Resource.Attribute.itemIconPadding;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.itemIconSize = global::HelloworldXamarin.Droid.Resource.Attribute.itemIconSize;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.itemIconTint = global::HelloworldXamarin.Droid.Resource.Attribute.itemIconTint;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.itemPadding = global::HelloworldXamarin.Droid.Resource.Attribute.itemPadding;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.itemSpacing = global::HelloworldXamarin.Droid.Resource.Attribute.itemSpacing;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.itemTextAppearance = global::HelloworldXamarin.Droid.Resource.Attribute.itemTextAppearance;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.itemTextAppearanceActive = global::HelloworldXamarin.Droid.Resource.Attribute.itemTextAppearanceActive;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.itemTextAppearanceInactive = global::HelloworldXamarin.Droid.Resource.Attribute.itemTextAppearanceInactive;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.itemTextColor = global::HelloworldXamarin.Droid.Resource.Attribute.itemTextColor;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.keylines = global::HelloworldXamarin.Droid.Resource.Attribute.keylines;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.labelVisibilityMode = global::HelloworldXamarin.Droid.Resource.Attribute.labelVisibilityMode;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.lastBaselineToBottomHeight = global::HelloworldXamarin.Droid.Resource.Attribute.lastBaselineToBottomHeight;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.layout = global::HelloworldXamarin.Droid.Resource.Attribute.layout;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.layoutManager = global::HelloworldXamarin.Droid.Resource.Attribute.layoutManager;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.layout_anchor = global::HelloworldXamarin.Droid.Resource.Attribute.layout_anchor;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.layout_anchorGravity = global::HelloworldXamarin.Droid.Resource.Attribute.layout_anchorGravity;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.layout_behavior = global::HelloworldXamarin.Droid.Resource.Attribute.layout_behavior;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.layout_collapseMode = global::HelloworldXamarin.Droid.Resource.Attribute.layout_collapseMode;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.layout_collapseParallaxMultiplier = global::HelloworldXamarin.Droid.Resource.Attribute.layout_collapseParallaxMultiplier;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.layout_dodgeInsetEdges = global::HelloworldXamarin.Droid.Resource.Attribute.layout_dodgeInsetEdges;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.layout_insetEdge = global::HelloworldXamarin.Droid.Resource.Attribute.layout_insetEdge;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.layout_keyline = global::HelloworldXamarin.Droid.Resource.Attribute.layout_keyline;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.layout_scrollFlags = global::HelloworldXamarin.Droid.Resource.Attribute.layout_scrollFlags;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.layout_scrollInterpolator = global::HelloworldXamarin.Droid.Resource.Attribute.layout_scrollInterpolator;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.liftOnScroll = global::HelloworldXamarin.Droid.Resource.Attribute.liftOnScroll;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.lineHeight = global::HelloworldXamarin.Droid.Resource.Attribute.lineHeight;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.lineSpacing = global::HelloworldXamarin.Droid.Resource.Attribute.lineSpacing;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.listChoiceBackgroundIndicator = global::HelloworldXamarin.Droid.Resource.Attribute.listChoiceBackgroundIndicator;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.listDividerAlertDialog = global::HelloworldXamarin.Droid.Resource.Attribute.listDividerAlertDialog;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.listItemLayout = global::HelloworldXamarin.Droid.Resource.Attribute.listItemLayout;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.listLayout = global::HelloworldXamarin.Droid.Resource.Attribute.listLayout;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.listMenuViewStyle = global::HelloworldXamarin.Droid.Resource.Attribute.listMenuViewStyle;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.listPopupWindowStyle = global::HelloworldXamarin.Droid.Resource.Attribute.listPopupWindowStyle;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.listPreferredItemHeight = global::HelloworldXamarin.Droid.Resource.Attribute.listPreferredItemHeight;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.listPreferredItemHeightLarge = global::HelloworldXamarin.Droid.Resource.Attribute.listPreferredItemHeightLarge;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.listPreferredItemHeightSmall = global::HelloworldXamarin.Droid.Resource.Attribute.listPreferredItemHeightSmall;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.listPreferredItemPaddingLeft = global::HelloworldXamarin.Droid.Resource.Attribute.listPreferredItemPaddingLeft;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.listPreferredItemPaddingRight = global::HelloworldXamarin.Droid.Resource.Attribute.listPreferredItemPaddingRight;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.logo = global::HelloworldXamarin.Droid.Resource.Attribute.logo;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.logoDescription = global::HelloworldXamarin.Droid.Resource.Attribute.logoDescription;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.materialButtonStyle = global::HelloworldXamarin.Droid.Resource.Attribute.materialButtonStyle;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.materialCardViewStyle = global::HelloworldXamarin.Droid.Resource.Attribute.materialCardViewStyle;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.maxActionInlineWidth = global::HelloworldXamarin.Droid.Resource.Attribute.maxActionInlineWidth;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.maxButtonHeight = global::HelloworldXamarin.Droid.Resource.Attribute.maxButtonHeight;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.maxImageSize = global::HelloworldXamarin.Droid.Resource.Attribute.maxImageSize;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.measureWithLargestChild = global::HelloworldXamarin.Droid.Resource.Attribute.measureWithLargestChild;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.menu = global::HelloworldXamarin.Droid.Resource.Attribute.menu;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.multiChoiceItemLayout = global::HelloworldXamarin.Droid.Resource.Attribute.multiChoiceItemLayout;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.navigationContentDescription = global::HelloworldXamarin.Droid.Resource.Attribute.navigationContentDescription;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.navigationIcon = global::HelloworldXamarin.Droid.Resource.Attribute.navigationIcon;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.navigationMode = global::HelloworldXamarin.Droid.Resource.Attribute.navigationMode;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.navigationViewStyle = global::HelloworldXamarin.Droid.Resource.Attribute.navigationViewStyle;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.numericModifiers = global::HelloworldXamarin.Droid.Resource.Attribute.numericModifiers;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.overlapAnchor = global::HelloworldXamarin.Droid.Resource.Attribute.overlapAnchor;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.paddingBottomNoButtons = global::HelloworldXamarin.Droid.Resource.Attribute.paddingBottomNoButtons;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.paddingEnd = global::HelloworldXamarin.Droid.Resource.Attribute.paddingEnd;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.paddingStart = global::HelloworldXamarin.Droid.Resource.Attribute.paddingStart;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.paddingTopNoTitle = global::HelloworldXamarin.Droid.Resource.Attribute.paddingTopNoTitle;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.panelBackground = global::HelloworldXamarin.Droid.Resource.Attribute.panelBackground;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.panelMenuListTheme = global::HelloworldXamarin.Droid.Resource.Attribute.panelMenuListTheme;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.panelMenuListWidth = global::HelloworldXamarin.Droid.Resource.Attribute.panelMenuListWidth;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.passwordToggleContentDescription = global::HelloworldXamarin.Droid.Resource.Attribute.passwordToggleContentDescription;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.passwordToggleDrawable = global::HelloworldXamarin.Droid.Resource.Attribute.passwordToggleDrawable;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.passwordToggleEnabled = global::HelloworldXamarin.Droid.Resource.Attribute.passwordToggleEnabled;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.passwordToggleTint = global::HelloworldXamarin.Droid.Resource.Attribute.passwordToggleTint;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.passwordToggleTintMode = global::HelloworldXamarin.Droid.Resource.Attribute.passwordToggleTintMode;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.popupMenuStyle = global::HelloworldXamarin.Droid.Resource.Attribute.popupMenuStyle;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.popupTheme = global::HelloworldXamarin.Droid.Resource.Attribute.popupTheme;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.popupWindowStyle = global::HelloworldXamarin.Droid.Resource.Attribute.popupWindowStyle;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.preserveIconSpacing = global::HelloworldXamarin.Droid.Resource.Attribute.preserveIconSpacing;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.pressedTranslationZ = global::HelloworldXamarin.Droid.Resource.Attribute.pressedTranslationZ;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.progressBarPadding = global::HelloworldXamarin.Droid.Resource.Attribute.progressBarPadding;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.progressBarStyle = global::HelloworldXamarin.Droid.Resource.Attribute.progressBarStyle;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.queryBackground = global::HelloworldXamarin.Droid.Resource.Attribute.queryBackground;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.queryHint = global::HelloworldXamarin.Droid.Resource.Attribute.queryHint;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.radioButtonStyle = global::HelloworldXamarin.Droid.Resource.Attribute.radioButtonStyle;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.ratingBarStyle = global::HelloworldXamarin.Droid.Resource.Attribute.ratingBarStyle;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.ratingBarStyleIndicator = global::HelloworldXamarin.Droid.Resource.Attribute.ratingBarStyleIndicator;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.ratingBarStyleSmall = global::HelloworldXamarin.Droid.Resource.Attribute.ratingBarStyleSmall;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.reverseLayout = global::HelloworldXamarin.Droid.Resource.Attribute.reverseLayout;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.rippleColor = global::HelloworldXamarin.Droid.Resource.Attribute.rippleColor;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.scrimAnimationDuration = global::HelloworldXamarin.Droid.Resource.Attribute.scrimAnimationDuration;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.scrimBackground = global::HelloworldXamarin.Droid.Resource.Attribute.scrimBackground;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.scrimVisibleHeightTrigger = global::HelloworldXamarin.Droid.Resource.Attribute.scrimVisibleHeightTrigger;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.searchHintIcon = global::HelloworldXamarin.Droid.Resource.Attribute.searchHintIcon;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.searchIcon = global::HelloworldXamarin.Droid.Resource.Attribute.searchIcon;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.searchViewStyle = global::HelloworldXamarin.Droid.Resource.Attribute.searchViewStyle;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.seekBarStyle = global::HelloworldXamarin.Droid.Resource.Attribute.seekBarStyle;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.selectableItemBackground = global::HelloworldXamarin.Droid.Resource.Attribute.selectableItemBackground;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.selectableItemBackgroundBorderless = global::HelloworldXamarin.Droid.Resource.Attribute.selectableItemBackgroundBorderless;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.showAsAction = global::HelloworldXamarin.Droid.Resource.Attribute.showAsAction;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.showDividers = global::HelloworldXamarin.Droid.Resource.Attribute.showDividers;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.showMotionSpec = global::HelloworldXamarin.Droid.Resource.Attribute.showMotionSpec;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.showText = global::HelloworldXamarin.Droid.Resource.Attribute.showText;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.showTitle = global::HelloworldXamarin.Droid.Resource.Attribute.showTitle;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.singleChoiceItemLayout = global::HelloworldXamarin.Droid.Resource.Attribute.singleChoiceItemLayout;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.singleLine = global::HelloworldXamarin.Droid.Resource.Attribute.singleLine;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.singleSelection = global::HelloworldXamarin.Droid.Resource.Attribute.singleSelection;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.snackbarButtonStyle = global::HelloworldXamarin.Droid.Resource.Attribute.snackbarButtonStyle;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.snackbarStyle = global::HelloworldXamarin.Droid.Resource.Attribute.snackbarStyle;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.spanCount = global::HelloworldXamarin.Droid.Resource.Attribute.spanCount;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.spinBars = global::HelloworldXamarin.Droid.Resource.Attribute.spinBars;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.spinnerDropDownItemStyle = global::HelloworldXamarin.Droid.Resource.Attribute.spinnerDropDownItemStyle;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.spinnerStyle = global::HelloworldXamarin.Droid.Resource.Attribute.spinnerStyle;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.splitTrack = global::HelloworldXamarin.Droid.Resource.Attribute.splitTrack;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.srcCompat = global::HelloworldXamarin.Droid.Resource.Attribute.srcCompat;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.stackFromEnd = global::HelloworldXamarin.Droid.Resource.Attribute.stackFromEnd;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.state_above_anchor = global::HelloworldXamarin.Droid.Resource.Attribute.state_above_anchor;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.state_collapsed = global::HelloworldXamarin.Droid.Resource.Attribute.state_collapsed;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.state_collapsible = global::HelloworldXamarin.Droid.Resource.Attribute.state_collapsible;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.state_liftable = global::HelloworldXamarin.Droid.Resource.Attribute.state_liftable;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.state_lifted = global::HelloworldXamarin.Droid.Resource.Attribute.state_lifted;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.statusBarBackground = global::HelloworldXamarin.Droid.Resource.Attribute.statusBarBackground;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.statusBarScrim = global::HelloworldXamarin.Droid.Resource.Attribute.statusBarScrim;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.strokeColor = global::HelloworldXamarin.Droid.Resource.Attribute.strokeColor;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.strokeWidth = global::HelloworldXamarin.Droid.Resource.Attribute.strokeWidth;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.subMenuArrow = global::HelloworldXamarin.Droid.Resource.Attribute.subMenuArrow;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.submitBackground = global::HelloworldXamarin.Droid.Resource.Attribute.submitBackground;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.subtitle = global::HelloworldXamarin.Droid.Resource.Attribute.subtitle;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.subtitleTextAppearance = global::HelloworldXamarin.Droid.Resource.Attribute.subtitleTextAppearance;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.subtitleTextColor = global::HelloworldXamarin.Droid.Resource.Attribute.subtitleTextColor;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.subtitleTextStyle = global::HelloworldXamarin.Droid.Resource.Attribute.subtitleTextStyle;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.suggestionRowLayout = global::HelloworldXamarin.Droid.Resource.Attribute.suggestionRowLayout;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.switchMinWidth = global::HelloworldXamarin.Droid.Resource.Attribute.switchMinWidth;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.switchPadding = global::HelloworldXamarin.Droid.Resource.Attribute.switchPadding;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.switchStyle = global::HelloworldXamarin.Droid.Resource.Attribute.switchStyle;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.switchTextAppearance = global::HelloworldXamarin.Droid.Resource.Attribute.switchTextAppearance;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.tabBackground = global::HelloworldXamarin.Droid.Resource.Attribute.tabBackground;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.tabContentStart = global::HelloworldXamarin.Droid.Resource.Attribute.tabContentStart;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.tabGravity = global::HelloworldXamarin.Droid.Resource.Attribute.tabGravity;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.tabIconTint = global::HelloworldXamarin.Droid.Resource.Attribute.tabIconTint;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.tabIconTintMode = global::HelloworldXamarin.Droid.Resource.Attribute.tabIconTintMode;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.tabIndicator = global::HelloworldXamarin.Droid.Resource.Attribute.tabIndicator;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.tabIndicatorAnimationDuration = global::HelloworldXamarin.Droid.Resource.Attribute.tabIndicatorAnimationDuration;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.tabIndicatorColor = global::HelloworldXamarin.Droid.Resource.Attribute.tabIndicatorColor;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.tabIndicatorFullWidth = global::HelloworldXamarin.Droid.Resource.Attribute.tabIndicatorFullWidth;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.tabIndicatorGravity = global::HelloworldXamarin.Droid.Resource.Attribute.tabIndicatorGravity;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.tabIndicatorHeight = global::HelloworldXamarin.Droid.Resource.Attribute.tabIndicatorHeight;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.tabInlineLabel = global::HelloworldXamarin.Droid.Resource.Attribute.tabInlineLabel;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.tabMaxWidth = global::HelloworldXamarin.Droid.Resource.Attribute.tabMaxWidth;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.tabMinWidth = global::HelloworldXamarin.Droid.Resource.Attribute.tabMinWidth;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.tabMode = global::HelloworldXamarin.Droid.Resource.Attribute.tabMode;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.tabPadding = global::HelloworldXamarin.Droid.Resource.Attribute.tabPadding;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.tabPaddingBottom = global::HelloworldXamarin.Droid.Resource.Attribute.tabPaddingBottom;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.tabPaddingEnd = global::HelloworldXamarin.Droid.Resource.Attribute.tabPaddingEnd;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.tabPaddingStart = global::HelloworldXamarin.Droid.Resource.Attribute.tabPaddingStart;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.tabPaddingTop = global::HelloworldXamarin.Droid.Resource.Attribute.tabPaddingTop;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.tabRippleColor = global::HelloworldXamarin.Droid.Resource.Attribute.tabRippleColor;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.tabSelectedTextColor = global::HelloworldXamarin.Droid.Resource.Attribute.tabSelectedTextColor;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.tabStyle = global::HelloworldXamarin.Droid.Resource.Attribute.tabStyle;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.tabTextAppearance = global::HelloworldXamarin.Droid.Resource.Attribute.tabTextAppearance;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.tabTextColor = global::HelloworldXamarin.Droid.Resource.Attribute.tabTextColor;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.tabUnboundedRipple = global::HelloworldXamarin.Droid.Resource.Attribute.tabUnboundedRipple;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.textAllCaps = global::HelloworldXamarin.Droid.Resource.Attribute.textAllCaps;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.textAppearanceBody1 = global::HelloworldXamarin.Droid.Resource.Attribute.textAppearanceBody1;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.textAppearanceBody2 = global::HelloworldXamarin.Droid.Resource.Attribute.textAppearanceBody2;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.textAppearanceButton = global::HelloworldXamarin.Droid.Resource.Attribute.textAppearanceButton;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.textAppearanceCaption = global::HelloworldXamarin.Droid.Resource.Attribute.textAppearanceCaption;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.textAppearanceHeadline1 = global::HelloworldXamarin.Droid.Resource.Attribute.textAppearanceHeadline1;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.textAppearanceHeadline2 = global::HelloworldXamarin.Droid.Resource.Attribute.textAppearanceHeadline2;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.textAppearanceHeadline3 = global::HelloworldXamarin.Droid.Resource.Attribute.textAppearanceHeadline3;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.textAppearanceHeadline4 = global::HelloworldXamarin.Droid.Resource.Attribute.textAppearanceHeadline4;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.textAppearanceHeadline5 = global::HelloworldXamarin.Droid.Resource.Attribute.textAppearanceHeadline5;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.textAppearanceHeadline6 = global::HelloworldXamarin.Droid.Resource.Attribute.textAppearanceHeadline6;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.textAppearanceLargePopupMenu = global::HelloworldXamarin.Droid.Resource.Attribute.textAppearanceLargePopupMenu;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.textAppearanceListItem = global::HelloworldXamarin.Droid.Resource.Attribute.textAppearanceListItem;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.textAppearanceListItemSecondary = global::HelloworldXamarin.Droid.Resource.Attribute.textAppearanceListItemSecondary;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.textAppearanceListItemSmall = global::HelloworldXamarin.Droid.Resource.Attribute.textAppearanceListItemSmall;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.textAppearanceOverline = global::HelloworldXamarin.Droid.Resource.Attribute.textAppearanceOverline;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.textAppearancePopupMenuHeader = global::HelloworldXamarin.Droid.Resource.Attribute.textAppearancePopupMenuHeader;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.textAppearanceSearchResultSubtitle = global::HelloworldXamarin.Droid.Resource.Attribute.textAppearanceSearchResultSubtitle;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.textAppearanceSearchResultTitle = global::HelloworldXamarin.Droid.Resource.Attribute.textAppearanceSearchResultTitle;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.textAppearanceSmallPopupMenu = global::HelloworldXamarin.Droid.Resource.Attribute.textAppearanceSmallPopupMenu;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.textAppearanceSubtitle1 = global::HelloworldXamarin.Droid.Resource.Attribute.textAppearanceSubtitle1;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.textAppearanceSubtitle2 = global::HelloworldXamarin.Droid.Resource.Attribute.textAppearanceSubtitle2;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.textColorAlertDialogListItem = global::HelloworldXamarin.Droid.Resource.Attribute.textColorAlertDialogListItem;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.textColorSearchUrl = global::HelloworldXamarin.Droid.Resource.Attribute.textColorSearchUrl;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.textEndPadding = global::HelloworldXamarin.Droid.Resource.Attribute.textEndPadding;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.textInputStyle = global::HelloworldXamarin.Droid.Resource.Attribute.textInputStyle;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.textStartPadding = global::HelloworldXamarin.Droid.Resource.Attribute.textStartPadding;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.theme = global::HelloworldXamarin.Droid.Resource.Attribute.theme;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.thickness = global::HelloworldXamarin.Droid.Resource.Attribute.thickness;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.thumbTextPadding = global::HelloworldXamarin.Droid.Resource.Attribute.thumbTextPadding;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.thumbTint = global::HelloworldXamarin.Droid.Resource.Attribute.thumbTint;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.thumbTintMode = global::HelloworldXamarin.Droid.Resource.Attribute.thumbTintMode;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.tickMark = global::HelloworldXamarin.Droid.Resource.Attribute.tickMark;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.tickMarkTint = global::HelloworldXamarin.Droid.Resource.Attribute.tickMarkTint;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.tickMarkTintMode = global::HelloworldXamarin.Droid.Resource.Attribute.tickMarkTintMode;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.tint = global::HelloworldXamarin.Droid.Resource.Attribute.tint;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.tintMode = global::HelloworldXamarin.Droid.Resource.Attribute.tintMode;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.title = global::HelloworldXamarin.Droid.Resource.Attribute.title;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.titleEnabled = global::HelloworldXamarin.Droid.Resource.Attribute.titleEnabled;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.titleMargin = global::HelloworldXamarin.Droid.Resource.Attribute.titleMargin;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.titleMarginBottom = global::HelloworldXamarin.Droid.Resource.Attribute.titleMarginBottom;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.titleMarginEnd = global::HelloworldXamarin.Droid.Resource.Attribute.titleMarginEnd;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.titleMargins = global::HelloworldXamarin.Droid.Resource.Attribute.titleMargins;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.titleMarginStart = global::HelloworldXamarin.Droid.Resource.Attribute.titleMarginStart;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.titleMarginTop = global::HelloworldXamarin.Droid.Resource.Attribute.titleMarginTop;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.titleTextAppearance = global::HelloworldXamarin.Droid.Resource.Attribute.titleTextAppearance;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.titleTextColor = global::HelloworldXamarin.Droid.Resource.Attribute.titleTextColor;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.titleTextStyle = global::HelloworldXamarin.Droid.Resource.Attribute.titleTextStyle;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.toolbarId = global::HelloworldXamarin.Droid.Resource.Attribute.toolbarId;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.toolbarNavigationButtonStyle = global::HelloworldXamarin.Droid.Resource.Attribute.toolbarNavigationButtonStyle;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.toolbarStyle = global::HelloworldXamarin.Droid.Resource.Attribute.toolbarStyle;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.tooltipForegroundColor = global::HelloworldXamarin.Droid.Resource.Attribute.tooltipForegroundColor;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.tooltipFrameBackground = global::HelloworldXamarin.Droid.Resource.Attribute.tooltipFrameBackground;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.tooltipText = global::HelloworldXamarin.Droid.Resource.Attribute.tooltipText;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.track = global::HelloworldXamarin.Droid.Resource.Attribute.track;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.trackTint = global::HelloworldXamarin.Droid.Resource.Attribute.trackTint;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.trackTintMode = global::HelloworldXamarin.Droid.Resource.Attribute.trackTintMode;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.ttcIndex = global::HelloworldXamarin.Droid.Resource.Attribute.ttcIndex;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.useCompatPadding = global::HelloworldXamarin.Droid.Resource.Attribute.useCompatPadding;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.viewInflaterClass = global::HelloworldXamarin.Droid.Resource.Attribute.viewInflaterClass;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.voiceIcon = global::HelloworldXamarin.Droid.Resource.Attribute.voiceIcon;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.windowActionBar = global::HelloworldXamarin.Droid.Resource.Attribute.windowActionBar;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.windowActionBarOverlay = global::HelloworldXamarin.Droid.Resource.Attribute.windowActionBarOverlay;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.windowActionModeOverlay = global::HelloworldXamarin.Droid.Resource.Attribute.windowActionModeOverlay;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.windowFixedHeightMajor = global::HelloworldXamarin.Droid.Resource.Attribute.windowFixedHeightMajor;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.windowFixedHeightMinor = global::HelloworldXamarin.Droid.Resource.Attribute.windowFixedHeightMinor;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.windowFixedWidthMajor = global::HelloworldXamarin.Droid.Resource.Attribute.windowFixedWidthMajor;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.windowFixedWidthMinor = global::HelloworldXamarin.Droid.Resource.Attribute.windowFixedWidthMinor;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.windowMinWidthMajor = global::HelloworldXamarin.Droid.Resource.Attribute.windowMinWidthMajor;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.windowMinWidthMinor = global::HelloworldXamarin.Droid.Resource.Attribute.windowMinWidthMinor;
+ global::Xamarin.Forms.Platform.Android.Resource.Attribute.windowNoTitle = global::HelloworldXamarin.Droid.Resource.Attribute.windowNoTitle;
+ global::Xamarin.Forms.Platform.Android.Resource.Boolean.abc_action_bar_embed_tabs = global::HelloworldXamarin.Droid.Resource.Boolean.abc_action_bar_embed_tabs;
+ global::Xamarin.Forms.Platform.Android.Resource.Boolean.abc_allow_stacked_button_bar = global::HelloworldXamarin.Droid.Resource.Boolean.abc_allow_stacked_button_bar;
+ global::Xamarin.Forms.Platform.Android.Resource.Boolean.abc_config_actionMenuItemAllCaps = global::HelloworldXamarin.Droid.Resource.Boolean.abc_config_actionMenuItemAllCaps;
+ global::Xamarin.Forms.Platform.Android.Resource.Boolean.mtrl_btn_textappearance_all_caps = global::HelloworldXamarin.Droid.Resource.Boolean.mtrl_btn_textappearance_all_caps;
+ global::Xamarin.Forms.Platform.Android.Resource.Color.abc_background_cache_hint_selector_material_dark = global::HelloworldXamarin.Droid.Resource.Color.abc_background_cache_hint_selector_material_dark;
+ global::Xamarin.Forms.Platform.Android.Resource.Color.abc_background_cache_hint_selector_material_light = global::HelloworldXamarin.Droid.Resource.Color.abc_background_cache_hint_selector_material_light;
+ global::Xamarin.Forms.Platform.Android.Resource.Color.abc_btn_colored_borderless_text_material = global::HelloworldXamarin.Droid.Resource.Color.abc_btn_colored_borderless_text_material;
+ global::Xamarin.Forms.Platform.Android.Resource.Color.abc_btn_colored_text_material = global::HelloworldXamarin.Droid.Resource.Color.abc_btn_colored_text_material;
+ global::Xamarin.Forms.Platform.Android.Resource.Color.abc_color_highlight_material = global::HelloworldXamarin.Droid.Resource.Color.abc_color_highlight_material;
+ global::Xamarin.Forms.Platform.Android.Resource.Color.abc_hint_foreground_material_dark = global::HelloworldXamarin.Droid.Resource.Color.abc_hint_foreground_material_dark;
+ global::Xamarin.Forms.Platform.Android.Resource.Color.abc_hint_foreground_material_light = global::HelloworldXamarin.Droid.Resource.Color.abc_hint_foreground_material_light;
+ global::Xamarin.Forms.Platform.Android.Resource.Color.abc_input_method_navigation_guard = global::HelloworldXamarin.Droid.Resource.Color.abc_input_method_navigation_guard;
+ global::Xamarin.Forms.Platform.Android.Resource.Color.abc_primary_text_disable_only_material_dark = global::HelloworldXamarin.Droid.Resource.Color.abc_primary_text_disable_only_material_dark;
+ global::Xamarin.Forms.Platform.Android.Resource.Color.abc_primary_text_disable_only_material_light = global::HelloworldXamarin.Droid.Resource.Color.abc_primary_text_disable_only_material_light;
+ global::Xamarin.Forms.Platform.Android.Resource.Color.abc_primary_text_material_dark = global::HelloworldXamarin.Droid.Resource.Color.abc_primary_text_material_dark;
+ global::Xamarin.Forms.Platform.Android.Resource.Color.abc_primary_text_material_light = global::HelloworldXamarin.Droid.Resource.Color.abc_primary_text_material_light;
+ global::Xamarin.Forms.Platform.Android.Resource.Color.abc_search_url_text = global::HelloworldXamarin.Droid.Resource.Color.abc_search_url_text;
+ global::Xamarin.Forms.Platform.Android.Resource.Color.abc_search_url_text_normal = global::HelloworldXamarin.Droid.Resource.Color.abc_search_url_text_normal;
+ global::Xamarin.Forms.Platform.Android.Resource.Color.abc_search_url_text_pressed = global::HelloworldXamarin.Droid.Resource.Color.abc_search_url_text_pressed;
+ global::Xamarin.Forms.Platform.Android.Resource.Color.abc_search_url_text_selected = global::HelloworldXamarin.Droid.Resource.Color.abc_search_url_text_selected;
+ global::Xamarin.Forms.Platform.Android.Resource.Color.abc_secondary_text_material_dark = global::HelloworldXamarin.Droid.Resource.Color.abc_secondary_text_material_dark;
+ global::Xamarin.Forms.Platform.Android.Resource.Color.abc_secondary_text_material_light = global::HelloworldXamarin.Droid.Resource.Color.abc_secondary_text_material_light;
+ global::Xamarin.Forms.Platform.Android.Resource.Color.abc_tint_btn_checkable = global::HelloworldXamarin.Droid.Resource.Color.abc_tint_btn_checkable;
+ global::Xamarin.Forms.Platform.Android.Resource.Color.abc_tint_default = global::HelloworldXamarin.Droid.Resource.Color.abc_tint_default;
+ global::Xamarin.Forms.Platform.Android.Resource.Color.abc_tint_edittext = global::HelloworldXamarin.Droid.Resource.Color.abc_tint_edittext;
+ global::Xamarin.Forms.Platform.Android.Resource.Color.abc_tint_seek_thumb = global::HelloworldXamarin.Droid.Resource.Color.abc_tint_seek_thumb;
+ global::Xamarin.Forms.Platform.Android.Resource.Color.abc_tint_spinner = global::HelloworldXamarin.Droid.Resource.Color.abc_tint_spinner;
+ global::Xamarin.Forms.Platform.Android.Resource.Color.abc_tint_switch_track = global::HelloworldXamarin.Droid.Resource.Color.abc_tint_switch_track;
+ global::Xamarin.Forms.Platform.Android.Resource.Color.accent_material_dark = global::HelloworldXamarin.Droid.Resource.Color.accent_material_dark;
+ global::Xamarin.Forms.Platform.Android.Resource.Color.accent_material_light = global::HelloworldXamarin.Droid.Resource.Color.accent_material_light;
+ global::Xamarin.Forms.Platform.Android.Resource.Color.background_floating_material_dark = global::HelloworldXamarin.Droid.Resource.Color.background_floating_material_dark;
+ global::Xamarin.Forms.Platform.Android.Resource.Color.background_floating_material_light = global::HelloworldXamarin.Droid.Resource.Color.background_floating_material_light;
+ global::Xamarin.Forms.Platform.Android.Resource.Color.background_material_dark = global::HelloworldXamarin.Droid.Resource.Color.background_material_dark;
+ global::Xamarin.Forms.Platform.Android.Resource.Color.background_material_light = global::HelloworldXamarin.Droid.Resource.Color.background_material_light;
+ global::Xamarin.Forms.Platform.Android.Resource.Color.bright_foreground_disabled_material_dark = global::HelloworldXamarin.Droid.Resource.Color.bright_foreground_disabled_material_dark;
+ global::Xamarin.Forms.Platform.Android.Resource.Color.bright_foreground_disabled_material_light = global::HelloworldXamarin.Droid.Resource.Color.bright_foreground_disabled_material_light;
+ global::Xamarin.Forms.Platform.Android.Resource.Color.bright_foreground_inverse_material_dark = global::HelloworldXamarin.Droid.Resource.Color.bright_foreground_inverse_material_dark;
+ global::Xamarin.Forms.Platform.Android.Resource.Color.bright_foreground_inverse_material_light = global::HelloworldXamarin.Droid.Resource.Color.bright_foreground_inverse_material_light;
+ global::Xamarin.Forms.Platform.Android.Resource.Color.bright_foreground_material_dark = global::HelloworldXamarin.Droid.Resource.Color.bright_foreground_material_dark;
+ global::Xamarin.Forms.Platform.Android.Resource.Color.bright_foreground_material_light = global::HelloworldXamarin.Droid.Resource.Color.bright_foreground_material_light;
+ global::Xamarin.Forms.Platform.Android.Resource.Color.button_material_dark = global::HelloworldXamarin.Droid.Resource.Color.button_material_dark;
+ global::Xamarin.Forms.Platform.Android.Resource.Color.button_material_light = global::HelloworldXamarin.Droid.Resource.Color.button_material_light;
+ global::Xamarin.Forms.Platform.Android.Resource.Color.cardview_dark_background = global::HelloworldXamarin.Droid.Resource.Color.cardview_dark_background;
+ global::Xamarin.Forms.Platform.Android.Resource.Color.cardview_light_background = global::HelloworldXamarin.Droid.Resource.Color.cardview_light_background;
+ global::Xamarin.Forms.Platform.Android.Resource.Color.cardview_shadow_end_color = global::HelloworldXamarin.Droid.Resource.Color.cardview_shadow_end_color;
+ global::Xamarin.Forms.Platform.Android.Resource.Color.cardview_shadow_start_color = global::HelloworldXamarin.Droid.Resource.Color.cardview_shadow_start_color;
+ global::Xamarin.Forms.Platform.Android.Resource.Color.design_bottom_navigation_shadow_color = global::HelloworldXamarin.Droid.Resource.Color.design_bottom_navigation_shadow_color;
+ global::Xamarin.Forms.Platform.Android.Resource.Color.design_default_color_primary = global::HelloworldXamarin.Droid.Resource.Color.design_default_color_primary;
+ global::Xamarin.Forms.Platform.Android.Resource.Color.design_default_color_primary_dark = global::HelloworldXamarin.Droid.Resource.Color.design_default_color_primary_dark;
+ global::Xamarin.Forms.Platform.Android.Resource.Color.design_error = global::HelloworldXamarin.Droid.Resource.Color.design_error;
+ global::Xamarin.Forms.Platform.Android.Resource.Color.design_fab_shadow_end_color = global::HelloworldXamarin.Droid.Resource.Color.design_fab_shadow_end_color;
+ global::Xamarin.Forms.Platform.Android.Resource.Color.design_fab_shadow_mid_color = global::HelloworldXamarin.Droid.Resource.Color.design_fab_shadow_mid_color;
+ global::Xamarin.Forms.Platform.Android.Resource.Color.design_fab_shadow_start_color = global::HelloworldXamarin.Droid.Resource.Color.design_fab_shadow_start_color;
+ global::Xamarin.Forms.Platform.Android.Resource.Color.design_fab_stroke_end_inner_color = global::HelloworldXamarin.Droid.Resource.Color.design_fab_stroke_end_inner_color;
+ global::Xamarin.Forms.Platform.Android.Resource.Color.design_fab_stroke_end_outer_color = global::HelloworldXamarin.Droid.Resource.Color.design_fab_stroke_end_outer_color;
+ global::Xamarin.Forms.Platform.Android.Resource.Color.design_fab_stroke_top_inner_color = global::HelloworldXamarin.Droid.Resource.Color.design_fab_stroke_top_inner_color;
+ global::Xamarin.Forms.Platform.Android.Resource.Color.design_fab_stroke_top_outer_color = global::HelloworldXamarin.Droid.Resource.Color.design_fab_stroke_top_outer_color;
+ global::Xamarin.Forms.Platform.Android.Resource.Color.design_snackbar_background_color = global::HelloworldXamarin.Droid.Resource.Color.design_snackbar_background_color;
+ global::Xamarin.Forms.Platform.Android.Resource.Color.design_tint_password_toggle = global::HelloworldXamarin.Droid.Resource.Color.design_tint_password_toggle;
+ global::Xamarin.Forms.Platform.Android.Resource.Color.dim_foreground_disabled_material_dark = global::HelloworldXamarin.Droid.Resource.Color.dim_foreground_disabled_material_dark;
+ global::Xamarin.Forms.Platform.Android.Resource.Color.dim_foreground_disabled_material_light = global::HelloworldXamarin.Droid.Resource.Color.dim_foreground_disabled_material_light;
+ global::Xamarin.Forms.Platform.Android.Resource.Color.dim_foreground_material_dark = global::HelloworldXamarin.Droid.Resource.Color.dim_foreground_material_dark;
+ global::Xamarin.Forms.Platform.Android.Resource.Color.dim_foreground_material_light = global::HelloworldXamarin.Droid.Resource.Color.dim_foreground_material_light;
+ global::Xamarin.Forms.Platform.Android.Resource.Color.error_color_material_dark = global::HelloworldXamarin.Droid.Resource.Color.error_color_material_dark;
+ global::Xamarin.Forms.Platform.Android.Resource.Color.error_color_material_light = global::HelloworldXamarin.Droid.Resource.Color.error_color_material_light;
+ global::Xamarin.Forms.Platform.Android.Resource.Color.foreground_material_dark = global::HelloworldXamarin.Droid.Resource.Color.foreground_material_dark;
+ global::Xamarin.Forms.Platform.Android.Resource.Color.foreground_material_light = global::HelloworldXamarin.Droid.Resource.Color.foreground_material_light;
+ global::Xamarin.Forms.Platform.Android.Resource.Color.highlighted_text_material_dark = global::HelloworldXamarin.Droid.Resource.Color.highlighted_text_material_dark;
+ global::Xamarin.Forms.Platform.Android.Resource.Color.highlighted_text_material_light = global::HelloworldXamarin.Droid.Resource.Color.highlighted_text_material_light;
+ global::Xamarin.Forms.Platform.Android.Resource.Color.material_blue_grey_800 = global::HelloworldXamarin.Droid.Resource.Color.material_blue_grey_800;
+ global::Xamarin.Forms.Platform.Android.Resource.Color.material_blue_grey_900 = global::HelloworldXamarin.Droid.Resource.Color.material_blue_grey_900;
+ global::Xamarin.Forms.Platform.Android.Resource.Color.material_blue_grey_950 = global::HelloworldXamarin.Droid.Resource.Color.material_blue_grey_950;
+ global::Xamarin.Forms.Platform.Android.Resource.Color.material_deep_teal_200 = global::HelloworldXamarin.Droid.Resource.Color.material_deep_teal_200;
+ global::Xamarin.Forms.Platform.Android.Resource.Color.material_deep_teal_500 = global::HelloworldXamarin.Droid.Resource.Color.material_deep_teal_500;
+ global::Xamarin.Forms.Platform.Android.Resource.Color.material_grey_100 = global::HelloworldXamarin.Droid.Resource.Color.material_grey_100;
+ global::Xamarin.Forms.Platform.Android.Resource.Color.material_grey_300 = global::HelloworldXamarin.Droid.Resource.Color.material_grey_300;
+ global::Xamarin.Forms.Platform.Android.Resource.Color.material_grey_50 = global::HelloworldXamarin.Droid.Resource.Color.material_grey_50;
+ global::Xamarin.Forms.Platform.Android.Resource.Color.material_grey_600 = global::HelloworldXamarin.Droid.Resource.Color.material_grey_600;
+ global::Xamarin.Forms.Platform.Android.Resource.Color.material_grey_800 = global::HelloworldXamarin.Droid.Resource.Color.material_grey_800;
+ global::Xamarin.Forms.Platform.Android.Resource.Color.material_grey_850 = global::HelloworldXamarin.Droid.Resource.Color.material_grey_850;
+ global::Xamarin.Forms.Platform.Android.Resource.Color.material_grey_900 = global::HelloworldXamarin.Droid.Resource.Color.material_grey_900;
+ global::Xamarin.Forms.Platform.Android.Resource.Color.mtrl_bottom_nav_colored_item_tint = global::HelloworldXamarin.Droid.Resource.Color.mtrl_bottom_nav_colored_item_tint;
+ global::Xamarin.Forms.Platform.Android.Resource.Color.mtrl_bottom_nav_item_tint = global::HelloworldXamarin.Droid.Resource.Color.mtrl_bottom_nav_item_tint;
+ global::Xamarin.Forms.Platform.Android.Resource.Color.mtrl_btn_bg_color_disabled = global::HelloworldXamarin.Droid.Resource.Color.mtrl_btn_bg_color_disabled;
+ global::Xamarin.Forms.Platform.Android.Resource.Color.mtrl_btn_bg_color_selector = global::HelloworldXamarin.Droid.Resource.Color.mtrl_btn_bg_color_selector;
+ global::Xamarin.Forms.Platform.Android.Resource.Color.mtrl_btn_ripple_color = global::HelloworldXamarin.Droid.Resource.Color.mtrl_btn_ripple_color;
+ global::Xamarin.Forms.Platform.Android.Resource.Color.mtrl_btn_stroke_color_selector = global::HelloworldXamarin.Droid.Resource.Color.mtrl_btn_stroke_color_selector;
+ global::Xamarin.Forms.Platform.Android.Resource.Color.mtrl_btn_text_btn_ripple_color = global::HelloworldXamarin.Droid.Resource.Color.mtrl_btn_text_btn_ripple_color;
+ global::Xamarin.Forms.Platform.Android.Resource.Color.mtrl_btn_text_color_disabled = global::HelloworldXamarin.Droid.Resource.Color.mtrl_btn_text_color_disabled;
+ global::Xamarin.Forms.Platform.Android.Resource.Color.mtrl_btn_text_color_selector = global::HelloworldXamarin.Droid.Resource.Color.mtrl_btn_text_color_selector;
+ global::Xamarin.Forms.Platform.Android.Resource.Color.mtrl_btn_transparent_bg_color = global::HelloworldXamarin.Droid.Resource.Color.mtrl_btn_transparent_bg_color;
+ global::Xamarin.Forms.Platform.Android.Resource.Color.mtrl_chip_background_color = global::HelloworldXamarin.Droid.Resource.Color.mtrl_chip_background_color;
+ global::Xamarin.Forms.Platform.Android.Resource.Color.mtrl_chip_close_icon_tint = global::HelloworldXamarin.Droid.Resource.Color.mtrl_chip_close_icon_tint;
+ global::Xamarin.Forms.Platform.Android.Resource.Color.mtrl_chip_ripple_color = global::HelloworldXamarin.Droid.Resource.Color.mtrl_chip_ripple_color;
+ global::Xamarin.Forms.Platform.Android.Resource.Color.mtrl_chip_text_color = global::HelloworldXamarin.Droid.Resource.Color.mtrl_chip_text_color;
+ global::Xamarin.Forms.Platform.Android.Resource.Color.mtrl_fab_ripple_color = global::HelloworldXamarin.Droid.Resource.Color.mtrl_fab_ripple_color;
+ global::Xamarin.Forms.Platform.Android.Resource.Color.mtrl_scrim_color = global::HelloworldXamarin.Droid.Resource.Color.mtrl_scrim_color;
+ global::Xamarin.Forms.Platform.Android.Resource.Color.mtrl_tabs_colored_ripple_color = global::HelloworldXamarin.Droid.Resource.Color.mtrl_tabs_colored_ripple_color;
+ global::Xamarin.Forms.Platform.Android.Resource.Color.mtrl_tabs_icon_color_selector = global::HelloworldXamarin.Droid.Resource.Color.mtrl_tabs_icon_color_selector;
+ global::Xamarin.Forms.Platform.Android.Resource.Color.mtrl_tabs_icon_color_selector_colored = global::HelloworldXamarin.Droid.Resource.Color.mtrl_tabs_icon_color_selector_colored;
+ global::Xamarin.Forms.Platform.Android.Resource.Color.mtrl_tabs_legacy_text_color_selector = global::HelloworldXamarin.Droid.Resource.Color.mtrl_tabs_legacy_text_color_selector;
+ global::Xamarin.Forms.Platform.Android.Resource.Color.mtrl_tabs_ripple_color = global::HelloworldXamarin.Droid.Resource.Color.mtrl_tabs_ripple_color;
+ global::Xamarin.Forms.Platform.Android.Resource.Color.mtrl_textinput_default_box_stroke_color = global::HelloworldXamarin.Droid.Resource.Color.mtrl_textinput_default_box_stroke_color;
+ global::Xamarin.Forms.Platform.Android.Resource.Color.mtrl_textinput_disabled_color = global::HelloworldXamarin.Droid.Resource.Color.mtrl_textinput_disabled_color;
+ global::Xamarin.Forms.Platform.Android.Resource.Color.mtrl_textinput_filled_box_default_background_color = global::HelloworldXamarin.Droid.Resource.Color.mtrl_textinput_filled_box_default_background_color;
+ global::Xamarin.Forms.Platform.Android.Resource.Color.mtrl_textinput_hovered_box_stroke_color = global::HelloworldXamarin.Droid.Resource.Color.mtrl_textinput_hovered_box_stroke_color;
+ global::Xamarin.Forms.Platform.Android.Resource.Color.mtrl_text_btn_text_color_selector = global::HelloworldXamarin.Droid.Resource.Color.mtrl_text_btn_text_color_selector;
+ global::Xamarin.Forms.Platform.Android.Resource.Color.notification_action_color_filter = global::HelloworldXamarin.Droid.Resource.Color.notification_action_color_filter;
+ global::Xamarin.Forms.Platform.Android.Resource.Color.notification_icon_bg_color = global::HelloworldXamarin.Droid.Resource.Color.notification_icon_bg_color;
+ global::Xamarin.Forms.Platform.Android.Resource.Color.notification_material_background_media_default_color = global::HelloworldXamarin.Droid.Resource.Color.notification_material_background_media_default_color;
+ global::Xamarin.Forms.Platform.Android.Resource.Color.primary_dark_material_dark = global::HelloworldXamarin.Droid.Resource.Color.primary_dark_material_dark;
+ global::Xamarin.Forms.Platform.Android.Resource.Color.primary_dark_material_light = global::HelloworldXamarin.Droid.Resource.Color.primary_dark_material_light;
+ global::Xamarin.Forms.Platform.Android.Resource.Color.primary_material_dark = global::HelloworldXamarin.Droid.Resource.Color.primary_material_dark;
+ global::Xamarin.Forms.Platform.Android.Resource.Color.primary_material_light = global::HelloworldXamarin.Droid.Resource.Color.primary_material_light;
+ global::Xamarin.Forms.Platform.Android.Resource.Color.primary_text_default_material_dark = global::HelloworldXamarin.Droid.Resource.Color.primary_text_default_material_dark;
+ global::Xamarin.Forms.Platform.Android.Resource.Color.primary_text_default_material_light = global::HelloworldXamarin.Droid.Resource.Color.primary_text_default_material_light;
+ global::Xamarin.Forms.Platform.Android.Resource.Color.primary_text_disabled_material_dark = global::HelloworldXamarin.Droid.Resource.Color.primary_text_disabled_material_dark;
+ global::Xamarin.Forms.Platform.Android.Resource.Color.primary_text_disabled_material_light = global::HelloworldXamarin.Droid.Resource.Color.primary_text_disabled_material_light;
+ global::Xamarin.Forms.Platform.Android.Resource.Color.ripple_material_dark = global::HelloworldXamarin.Droid.Resource.Color.ripple_material_dark;
+ global::Xamarin.Forms.Platform.Android.Resource.Color.ripple_material_light = global::HelloworldXamarin.Droid.Resource.Color.ripple_material_light;
+ global::Xamarin.Forms.Platform.Android.Resource.Color.secondary_text_default_material_dark = global::HelloworldXamarin.Droid.Resource.Color.secondary_text_default_material_dark;
+ global::Xamarin.Forms.Platform.Android.Resource.Color.secondary_text_default_material_light = global::HelloworldXamarin.Droid.Resource.Color.secondary_text_default_material_light;
+ global::Xamarin.Forms.Platform.Android.Resource.Color.secondary_text_disabled_material_dark = global::HelloworldXamarin.Droid.Resource.Color.secondary_text_disabled_material_dark;
+ global::Xamarin.Forms.Platform.Android.Resource.Color.secondary_text_disabled_material_light = global::HelloworldXamarin.Droid.Resource.Color.secondary_text_disabled_material_light;
+ global::Xamarin.Forms.Platform.Android.Resource.Color.switch_thumb_disabled_material_dark = global::HelloworldXamarin.Droid.Resource.Color.switch_thumb_disabled_material_dark;
+ global::Xamarin.Forms.Platform.Android.Resource.Color.switch_thumb_disabled_material_light = global::HelloworldXamarin.Droid.Resource.Color.switch_thumb_disabled_material_light;
+ global::Xamarin.Forms.Platform.Android.Resource.Color.switch_thumb_material_dark = global::HelloworldXamarin.Droid.Resource.Color.switch_thumb_material_dark;
+ global::Xamarin.Forms.Platform.Android.Resource.Color.switch_thumb_material_light = global::HelloworldXamarin.Droid.Resource.Color.switch_thumb_material_light;
+ global::Xamarin.Forms.Platform.Android.Resource.Color.switch_thumb_normal_material_dark = global::HelloworldXamarin.Droid.Resource.Color.switch_thumb_normal_material_dark;
+ global::Xamarin.Forms.Platform.Android.Resource.Color.switch_thumb_normal_material_light = global::HelloworldXamarin.Droid.Resource.Color.switch_thumb_normal_material_light;
+ global::Xamarin.Forms.Platform.Android.Resource.Color.tooltip_background_dark = global::HelloworldXamarin.Droid.Resource.Color.tooltip_background_dark;
+ global::Xamarin.Forms.Platform.Android.Resource.Color.tooltip_background_light = global::HelloworldXamarin.Droid.Resource.Color.tooltip_background_light;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.abc_action_bar_content_inset_material = global::HelloworldXamarin.Droid.Resource.Dimension.abc_action_bar_content_inset_material;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.abc_action_bar_content_inset_with_nav = global::HelloworldXamarin.Droid.Resource.Dimension.abc_action_bar_content_inset_with_nav;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.abc_action_bar_default_height_material = global::HelloworldXamarin.Droid.Resource.Dimension.abc_action_bar_default_height_material;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.abc_action_bar_default_padding_end_material = global::HelloworldXamarin.Droid.Resource.Dimension.abc_action_bar_default_padding_end_material;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.abc_action_bar_default_padding_start_material = global::HelloworldXamarin.Droid.Resource.Dimension.abc_action_bar_default_padding_start_material;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.abc_action_bar_elevation_material = global::HelloworldXamarin.Droid.Resource.Dimension.abc_action_bar_elevation_material;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.abc_action_bar_icon_vertical_padding_material = global::HelloworldXamarin.Droid.Resource.Dimension.abc_action_bar_icon_vertical_padding_material;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.abc_action_bar_overflow_padding_end_material = global::HelloworldXamarin.Droid.Resource.Dimension.abc_action_bar_overflow_padding_end_material;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.abc_action_bar_overflow_padding_start_material = global::HelloworldXamarin.Droid.Resource.Dimension.abc_action_bar_overflow_padding_start_material;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.abc_action_bar_stacked_max_height = global::HelloworldXamarin.Droid.Resource.Dimension.abc_action_bar_stacked_max_height;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.abc_action_bar_stacked_tab_max_width = global::HelloworldXamarin.Droid.Resource.Dimension.abc_action_bar_stacked_tab_max_width;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.abc_action_bar_subtitle_bottom_margin_material = global::HelloworldXamarin.Droid.Resource.Dimension.abc_action_bar_subtitle_bottom_margin_material;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.abc_action_bar_subtitle_top_margin_material = global::HelloworldXamarin.Droid.Resource.Dimension.abc_action_bar_subtitle_top_margin_material;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.abc_action_button_min_height_material = global::HelloworldXamarin.Droid.Resource.Dimension.abc_action_button_min_height_material;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.abc_action_button_min_width_material = global::HelloworldXamarin.Droid.Resource.Dimension.abc_action_button_min_width_material;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.abc_action_button_min_width_overflow_material = global::HelloworldXamarin.Droid.Resource.Dimension.abc_action_button_min_width_overflow_material;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.abc_alert_dialog_button_bar_height = global::HelloworldXamarin.Droid.Resource.Dimension.abc_alert_dialog_button_bar_height;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.abc_alert_dialog_button_dimen = global::HelloworldXamarin.Droid.Resource.Dimension.abc_alert_dialog_button_dimen;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.abc_button_inset_horizontal_material = global::HelloworldXamarin.Droid.Resource.Dimension.abc_button_inset_horizontal_material;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.abc_button_inset_vertical_material = global::HelloworldXamarin.Droid.Resource.Dimension.abc_button_inset_vertical_material;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.abc_button_padding_horizontal_material = global::HelloworldXamarin.Droid.Resource.Dimension.abc_button_padding_horizontal_material;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.abc_button_padding_vertical_material = global::HelloworldXamarin.Droid.Resource.Dimension.abc_button_padding_vertical_material;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.abc_cascading_menus_min_smallest_width = global::HelloworldXamarin.Droid.Resource.Dimension.abc_cascading_menus_min_smallest_width;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.abc_config_prefDialogWidth = global::HelloworldXamarin.Droid.Resource.Dimension.abc_config_prefDialogWidth;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.abc_control_corner_material = global::HelloworldXamarin.Droid.Resource.Dimension.abc_control_corner_material;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.abc_control_inset_material = global::HelloworldXamarin.Droid.Resource.Dimension.abc_control_inset_material;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.abc_control_padding_material = global::HelloworldXamarin.Droid.Resource.Dimension.abc_control_padding_material;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.abc_dialog_corner_radius_material = global::HelloworldXamarin.Droid.Resource.Dimension.abc_dialog_corner_radius_material;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.abc_dialog_fixed_height_major = global::HelloworldXamarin.Droid.Resource.Dimension.abc_dialog_fixed_height_major;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.abc_dialog_fixed_height_minor = global::HelloworldXamarin.Droid.Resource.Dimension.abc_dialog_fixed_height_minor;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.abc_dialog_fixed_width_major = global::HelloworldXamarin.Droid.Resource.Dimension.abc_dialog_fixed_width_major;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.abc_dialog_fixed_width_minor = global::HelloworldXamarin.Droid.Resource.Dimension.abc_dialog_fixed_width_minor;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.abc_dialog_list_padding_bottom_no_buttons = global::HelloworldXamarin.Droid.Resource.Dimension.abc_dialog_list_padding_bottom_no_buttons;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.abc_dialog_list_padding_top_no_title = global::HelloworldXamarin.Droid.Resource.Dimension.abc_dialog_list_padding_top_no_title;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.abc_dialog_min_width_major = global::HelloworldXamarin.Droid.Resource.Dimension.abc_dialog_min_width_major;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.abc_dialog_min_width_minor = global::HelloworldXamarin.Droid.Resource.Dimension.abc_dialog_min_width_minor;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.abc_dialog_padding_material = global::HelloworldXamarin.Droid.Resource.Dimension.abc_dialog_padding_material;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.abc_dialog_padding_top_material = global::HelloworldXamarin.Droid.Resource.Dimension.abc_dialog_padding_top_material;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.abc_dialog_title_divider_material = global::HelloworldXamarin.Droid.Resource.Dimension.abc_dialog_title_divider_material;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.abc_disabled_alpha_material_dark = global::HelloworldXamarin.Droid.Resource.Dimension.abc_disabled_alpha_material_dark;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.abc_disabled_alpha_material_light = global::HelloworldXamarin.Droid.Resource.Dimension.abc_disabled_alpha_material_light;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.abc_dropdownitem_icon_width = global::HelloworldXamarin.Droid.Resource.Dimension.abc_dropdownitem_icon_width;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.abc_dropdownitem_text_padding_left = global::HelloworldXamarin.Droid.Resource.Dimension.abc_dropdownitem_text_padding_left;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.abc_dropdownitem_text_padding_right = global::HelloworldXamarin.Droid.Resource.Dimension.abc_dropdownitem_text_padding_right;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.abc_edit_text_inset_bottom_material = global::HelloworldXamarin.Droid.Resource.Dimension.abc_edit_text_inset_bottom_material;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.abc_edit_text_inset_horizontal_material = global::HelloworldXamarin.Droid.Resource.Dimension.abc_edit_text_inset_horizontal_material;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.abc_edit_text_inset_top_material = global::HelloworldXamarin.Droid.Resource.Dimension.abc_edit_text_inset_top_material;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.abc_floating_window_z = global::HelloworldXamarin.Droid.Resource.Dimension.abc_floating_window_z;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.abc_list_item_padding_horizontal_material = global::HelloworldXamarin.Droid.Resource.Dimension.abc_list_item_padding_horizontal_material;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.abc_panel_menu_list_width = global::HelloworldXamarin.Droid.Resource.Dimension.abc_panel_menu_list_width;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.abc_progress_bar_height_material = global::HelloworldXamarin.Droid.Resource.Dimension.abc_progress_bar_height_material;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.abc_search_view_preferred_height = global::HelloworldXamarin.Droid.Resource.Dimension.abc_search_view_preferred_height;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.abc_search_view_preferred_width = global::HelloworldXamarin.Droid.Resource.Dimension.abc_search_view_preferred_width;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.abc_seekbar_track_background_height_material = global::HelloworldXamarin.Droid.Resource.Dimension.abc_seekbar_track_background_height_material;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.abc_seekbar_track_progress_height_material = global::HelloworldXamarin.Droid.Resource.Dimension.abc_seekbar_track_progress_height_material;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.abc_select_dialog_padding_start_material = global::HelloworldXamarin.Droid.Resource.Dimension.abc_select_dialog_padding_start_material;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.abc_switch_padding = global::HelloworldXamarin.Droid.Resource.Dimension.abc_switch_padding;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.abc_text_size_body_1_material = global::HelloworldXamarin.Droid.Resource.Dimension.abc_text_size_body_1_material;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.abc_text_size_body_2_material = global::HelloworldXamarin.Droid.Resource.Dimension.abc_text_size_body_2_material;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.abc_text_size_button_material = global::HelloworldXamarin.Droid.Resource.Dimension.abc_text_size_button_material;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.abc_text_size_caption_material = global::HelloworldXamarin.Droid.Resource.Dimension.abc_text_size_caption_material;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.abc_text_size_display_1_material = global::HelloworldXamarin.Droid.Resource.Dimension.abc_text_size_display_1_material;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.abc_text_size_display_2_material = global::HelloworldXamarin.Droid.Resource.Dimension.abc_text_size_display_2_material;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.abc_text_size_display_3_material = global::HelloworldXamarin.Droid.Resource.Dimension.abc_text_size_display_3_material;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.abc_text_size_display_4_material = global::HelloworldXamarin.Droid.Resource.Dimension.abc_text_size_display_4_material;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.abc_text_size_headline_material = global::HelloworldXamarin.Droid.Resource.Dimension.abc_text_size_headline_material;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.abc_text_size_large_material = global::HelloworldXamarin.Droid.Resource.Dimension.abc_text_size_large_material;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.abc_text_size_medium_material = global::HelloworldXamarin.Droid.Resource.Dimension.abc_text_size_medium_material;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.abc_text_size_menu_header_material = global::HelloworldXamarin.Droid.Resource.Dimension.abc_text_size_menu_header_material;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.abc_text_size_menu_material = global::HelloworldXamarin.Droid.Resource.Dimension.abc_text_size_menu_material;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.abc_text_size_small_material = global::HelloworldXamarin.Droid.Resource.Dimension.abc_text_size_small_material;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.abc_text_size_subhead_material = global::HelloworldXamarin.Droid.Resource.Dimension.abc_text_size_subhead_material;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.abc_text_size_subtitle_material_toolbar = global::HelloworldXamarin.Droid.Resource.Dimension.abc_text_size_subtitle_material_toolbar;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.abc_text_size_title_material = global::HelloworldXamarin.Droid.Resource.Dimension.abc_text_size_title_material;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.abc_text_size_title_material_toolbar = global::HelloworldXamarin.Droid.Resource.Dimension.abc_text_size_title_material_toolbar;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.cardview_compat_inset_shadow = global::HelloworldXamarin.Droid.Resource.Dimension.cardview_compat_inset_shadow;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.cardview_default_elevation = global::HelloworldXamarin.Droid.Resource.Dimension.cardview_default_elevation;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.cardview_default_radius = global::HelloworldXamarin.Droid.Resource.Dimension.cardview_default_radius;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.compat_button_inset_horizontal_material = global::HelloworldXamarin.Droid.Resource.Dimension.compat_button_inset_horizontal_material;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.compat_button_inset_vertical_material = global::HelloworldXamarin.Droid.Resource.Dimension.compat_button_inset_vertical_material;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.compat_button_padding_horizontal_material = global::HelloworldXamarin.Droid.Resource.Dimension.compat_button_padding_horizontal_material;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.compat_button_padding_vertical_material = global::HelloworldXamarin.Droid.Resource.Dimension.compat_button_padding_vertical_material;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.compat_control_corner_material = global::HelloworldXamarin.Droid.Resource.Dimension.compat_control_corner_material;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.compat_notification_large_icon_max_height = global::HelloworldXamarin.Droid.Resource.Dimension.compat_notification_large_icon_max_height;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.compat_notification_large_icon_max_width = global::HelloworldXamarin.Droid.Resource.Dimension.compat_notification_large_icon_max_width;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.design_appbar_elevation = global::HelloworldXamarin.Droid.Resource.Dimension.design_appbar_elevation;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.design_bottom_navigation_active_item_max_width = global::HelloworldXamarin.Droid.Resource.Dimension.design_bottom_navigation_active_item_max_width;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.design_bottom_navigation_active_item_min_width = global::HelloworldXamarin.Droid.Resource.Dimension.design_bottom_navigation_active_item_min_width;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.design_bottom_navigation_active_text_size = global::HelloworldXamarin.Droid.Resource.Dimension.design_bottom_navigation_active_text_size;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.design_bottom_navigation_elevation = global::HelloworldXamarin.Droid.Resource.Dimension.design_bottom_navigation_elevation;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.design_bottom_navigation_height = global::HelloworldXamarin.Droid.Resource.Dimension.design_bottom_navigation_height;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.design_bottom_navigation_icon_size = global::HelloworldXamarin.Droid.Resource.Dimension.design_bottom_navigation_icon_size;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.design_bottom_navigation_item_max_width = global::HelloworldXamarin.Droid.Resource.Dimension.design_bottom_navigation_item_max_width;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.design_bottom_navigation_item_min_width = global::HelloworldXamarin.Droid.Resource.Dimension.design_bottom_navigation_item_min_width;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.design_bottom_navigation_margin = global::HelloworldXamarin.Droid.Resource.Dimension.design_bottom_navigation_margin;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.design_bottom_navigation_shadow_height = global::HelloworldXamarin.Droid.Resource.Dimension.design_bottom_navigation_shadow_height;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.design_bottom_navigation_text_size = global::HelloworldXamarin.Droid.Resource.Dimension.design_bottom_navigation_text_size;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.design_bottom_sheet_modal_elevation = global::HelloworldXamarin.Droid.Resource.Dimension.design_bottom_sheet_modal_elevation;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.design_bottom_sheet_peek_height_min = global::HelloworldXamarin.Droid.Resource.Dimension.design_bottom_sheet_peek_height_min;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.design_fab_border_width = global::HelloworldXamarin.Droid.Resource.Dimension.design_fab_border_width;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.design_fab_elevation = global::HelloworldXamarin.Droid.Resource.Dimension.design_fab_elevation;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.design_fab_image_size = global::HelloworldXamarin.Droid.Resource.Dimension.design_fab_image_size;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.design_fab_size_mini = global::HelloworldXamarin.Droid.Resource.Dimension.design_fab_size_mini;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.design_fab_size_normal = global::HelloworldXamarin.Droid.Resource.Dimension.design_fab_size_normal;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.design_fab_translation_z_hovered_focused = global::HelloworldXamarin.Droid.Resource.Dimension.design_fab_translation_z_hovered_focused;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.design_fab_translation_z_pressed = global::HelloworldXamarin.Droid.Resource.Dimension.design_fab_translation_z_pressed;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.design_navigation_elevation = global::HelloworldXamarin.Droid.Resource.Dimension.design_navigation_elevation;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.design_navigation_icon_padding = global::HelloworldXamarin.Droid.Resource.Dimension.design_navigation_icon_padding;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.design_navigation_icon_size = global::HelloworldXamarin.Droid.Resource.Dimension.design_navigation_icon_size;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.design_navigation_item_horizontal_padding = global::HelloworldXamarin.Droid.Resource.Dimension.design_navigation_item_horizontal_padding;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.design_navigation_item_icon_padding = global::HelloworldXamarin.Droid.Resource.Dimension.design_navigation_item_icon_padding;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.design_navigation_max_width = global::HelloworldXamarin.Droid.Resource.Dimension.design_navigation_max_width;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.design_navigation_padding_bottom = global::HelloworldXamarin.Droid.Resource.Dimension.design_navigation_padding_bottom;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.design_navigation_separator_vertical_padding = global::HelloworldXamarin.Droid.Resource.Dimension.design_navigation_separator_vertical_padding;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.design_snackbar_action_inline_max_width = global::HelloworldXamarin.Droid.Resource.Dimension.design_snackbar_action_inline_max_width;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.design_snackbar_background_corner_radius = global::HelloworldXamarin.Droid.Resource.Dimension.design_snackbar_background_corner_radius;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.design_snackbar_elevation = global::HelloworldXamarin.Droid.Resource.Dimension.design_snackbar_elevation;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.design_snackbar_extra_spacing_horizontal = global::HelloworldXamarin.Droid.Resource.Dimension.design_snackbar_extra_spacing_horizontal;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.design_snackbar_max_width = global::HelloworldXamarin.Droid.Resource.Dimension.design_snackbar_max_width;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.design_snackbar_min_width = global::HelloworldXamarin.Droid.Resource.Dimension.design_snackbar_min_width;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.design_snackbar_padding_horizontal = global::HelloworldXamarin.Droid.Resource.Dimension.design_snackbar_padding_horizontal;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.design_snackbar_padding_vertical = global::HelloworldXamarin.Droid.Resource.Dimension.design_snackbar_padding_vertical;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.design_snackbar_padding_vertical_2lines = global::HelloworldXamarin.Droid.Resource.Dimension.design_snackbar_padding_vertical_2lines;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.design_snackbar_text_size = global::HelloworldXamarin.Droid.Resource.Dimension.design_snackbar_text_size;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.design_tab_max_width = global::HelloworldXamarin.Droid.Resource.Dimension.design_tab_max_width;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.design_tab_scrollable_min_width = global::HelloworldXamarin.Droid.Resource.Dimension.design_tab_scrollable_min_width;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.design_tab_text_size = global::HelloworldXamarin.Droid.Resource.Dimension.design_tab_text_size;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.design_tab_text_size_2line = global::HelloworldXamarin.Droid.Resource.Dimension.design_tab_text_size_2line;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.design_textinput_caption_translate_y = global::HelloworldXamarin.Droid.Resource.Dimension.design_textinput_caption_translate_y;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.disabled_alpha_material_dark = global::HelloworldXamarin.Droid.Resource.Dimension.disabled_alpha_material_dark;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.disabled_alpha_material_light = global::HelloworldXamarin.Droid.Resource.Dimension.disabled_alpha_material_light;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.fastscroll_default_thickness = global::HelloworldXamarin.Droid.Resource.Dimension.fastscroll_default_thickness;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.fastscroll_margin = global::HelloworldXamarin.Droid.Resource.Dimension.fastscroll_margin;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.fastscroll_minimum_range = global::HelloworldXamarin.Droid.Resource.Dimension.fastscroll_minimum_range;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.highlight_alpha_material_colored = global::HelloworldXamarin.Droid.Resource.Dimension.highlight_alpha_material_colored;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.highlight_alpha_material_dark = global::HelloworldXamarin.Droid.Resource.Dimension.highlight_alpha_material_dark;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.highlight_alpha_material_light = global::HelloworldXamarin.Droid.Resource.Dimension.highlight_alpha_material_light;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.hint_alpha_material_dark = global::HelloworldXamarin.Droid.Resource.Dimension.hint_alpha_material_dark;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.hint_alpha_material_light = global::HelloworldXamarin.Droid.Resource.Dimension.hint_alpha_material_light;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.hint_pressed_alpha_material_dark = global::HelloworldXamarin.Droid.Resource.Dimension.hint_pressed_alpha_material_dark;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.hint_pressed_alpha_material_light = global::HelloworldXamarin.Droid.Resource.Dimension.hint_pressed_alpha_material_light;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.item_touch_helper_max_drag_scroll_per_frame = global::HelloworldXamarin.Droid.Resource.Dimension.item_touch_helper_max_drag_scroll_per_frame;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.item_touch_helper_swipe_escape_max_velocity = global::HelloworldXamarin.Droid.Resource.Dimension.item_touch_helper_swipe_escape_max_velocity;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.item_touch_helper_swipe_escape_velocity = global::HelloworldXamarin.Droid.Resource.Dimension.item_touch_helper_swipe_escape_velocity;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.mtrl_bottomappbar_fabOffsetEndMode = global::HelloworldXamarin.Droid.Resource.Dimension.mtrl_bottomappbar_fabOffsetEndMode;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.mtrl_bottomappbar_fab_cradle_margin = global::HelloworldXamarin.Droid.Resource.Dimension.mtrl_bottomappbar_fab_cradle_margin;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.mtrl_bottomappbar_fab_cradle_rounded_corner_radius = global::HelloworldXamarin.Droid.Resource.Dimension.mtrl_bottomappbar_fab_cradle_rounded_corner_radius;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.mtrl_bottomappbar_fab_cradle_vertical_offset = global::HelloworldXamarin.Droid.Resource.Dimension.mtrl_bottomappbar_fab_cradle_vertical_offset;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.mtrl_bottomappbar_height = global::HelloworldXamarin.Droid.Resource.Dimension.mtrl_bottomappbar_height;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.mtrl_btn_corner_radius = global::HelloworldXamarin.Droid.Resource.Dimension.mtrl_btn_corner_radius;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.mtrl_btn_dialog_btn_min_width = global::HelloworldXamarin.Droid.Resource.Dimension.mtrl_btn_dialog_btn_min_width;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.mtrl_btn_disabled_elevation = global::HelloworldXamarin.Droid.Resource.Dimension.mtrl_btn_disabled_elevation;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.mtrl_btn_disabled_z = global::HelloworldXamarin.Droid.Resource.Dimension.mtrl_btn_disabled_z;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.mtrl_btn_elevation = global::HelloworldXamarin.Droid.Resource.Dimension.mtrl_btn_elevation;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.mtrl_btn_focused_z = global::HelloworldXamarin.Droid.Resource.Dimension.mtrl_btn_focused_z;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.mtrl_btn_hovered_z = global::HelloworldXamarin.Droid.Resource.Dimension.mtrl_btn_hovered_z;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.mtrl_btn_icon_btn_padding_left = global::HelloworldXamarin.Droid.Resource.Dimension.mtrl_btn_icon_btn_padding_left;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.mtrl_btn_icon_padding = global::HelloworldXamarin.Droid.Resource.Dimension.mtrl_btn_icon_padding;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.mtrl_btn_inset = global::HelloworldXamarin.Droid.Resource.Dimension.mtrl_btn_inset;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.mtrl_btn_letter_spacing = global::HelloworldXamarin.Droid.Resource.Dimension.mtrl_btn_letter_spacing;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.mtrl_btn_padding_bottom = global::HelloworldXamarin.Droid.Resource.Dimension.mtrl_btn_padding_bottom;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.mtrl_btn_padding_left = global::HelloworldXamarin.Droid.Resource.Dimension.mtrl_btn_padding_left;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.mtrl_btn_padding_right = global::HelloworldXamarin.Droid.Resource.Dimension.mtrl_btn_padding_right;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.mtrl_btn_padding_top = global::HelloworldXamarin.Droid.Resource.Dimension.mtrl_btn_padding_top;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.mtrl_btn_pressed_z = global::HelloworldXamarin.Droid.Resource.Dimension.mtrl_btn_pressed_z;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.mtrl_btn_stroke_size = global::HelloworldXamarin.Droid.Resource.Dimension.mtrl_btn_stroke_size;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.mtrl_btn_text_btn_icon_padding = global::HelloworldXamarin.Droid.Resource.Dimension.mtrl_btn_text_btn_icon_padding;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.mtrl_btn_text_btn_padding_left = global::HelloworldXamarin.Droid.Resource.Dimension.mtrl_btn_text_btn_padding_left;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.mtrl_btn_text_btn_padding_right = global::HelloworldXamarin.Droid.Resource.Dimension.mtrl_btn_text_btn_padding_right;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.mtrl_btn_text_size = global::HelloworldXamarin.Droid.Resource.Dimension.mtrl_btn_text_size;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.mtrl_btn_z = global::HelloworldXamarin.Droid.Resource.Dimension.mtrl_btn_z;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.mtrl_card_elevation = global::HelloworldXamarin.Droid.Resource.Dimension.mtrl_card_elevation;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.mtrl_card_spacing = global::HelloworldXamarin.Droid.Resource.Dimension.mtrl_card_spacing;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.mtrl_chip_pressed_translation_z = global::HelloworldXamarin.Droid.Resource.Dimension.mtrl_chip_pressed_translation_z;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.mtrl_chip_text_size = global::HelloworldXamarin.Droid.Resource.Dimension.mtrl_chip_text_size;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.mtrl_fab_elevation = global::HelloworldXamarin.Droid.Resource.Dimension.mtrl_fab_elevation;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.mtrl_fab_translation_z_hovered_focused = global::HelloworldXamarin.Droid.Resource.Dimension.mtrl_fab_translation_z_hovered_focused;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.mtrl_fab_translation_z_pressed = global::HelloworldXamarin.Droid.Resource.Dimension.mtrl_fab_translation_z_pressed;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.mtrl_navigation_elevation = global::HelloworldXamarin.Droid.Resource.Dimension.mtrl_navigation_elevation;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.mtrl_navigation_item_horizontal_padding = global::HelloworldXamarin.Droid.Resource.Dimension.mtrl_navigation_item_horizontal_padding;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.mtrl_navigation_item_icon_padding = global::HelloworldXamarin.Droid.Resource.Dimension.mtrl_navigation_item_icon_padding;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.mtrl_snackbar_background_corner_radius = global::HelloworldXamarin.Droid.Resource.Dimension.mtrl_snackbar_background_corner_radius;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.mtrl_snackbar_margin = global::HelloworldXamarin.Droid.Resource.Dimension.mtrl_snackbar_margin;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.mtrl_textinput_box_bottom_offset = global::HelloworldXamarin.Droid.Resource.Dimension.mtrl_textinput_box_bottom_offset;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.mtrl_textinput_box_corner_radius_medium = global::HelloworldXamarin.Droid.Resource.Dimension.mtrl_textinput_box_corner_radius_medium;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.mtrl_textinput_box_corner_radius_small = global::HelloworldXamarin.Droid.Resource.Dimension.mtrl_textinput_box_corner_radius_small;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.mtrl_textinput_box_label_cutout_padding = global::HelloworldXamarin.Droid.Resource.Dimension.mtrl_textinput_box_label_cutout_padding;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.mtrl_textinput_box_padding_end = global::HelloworldXamarin.Droid.Resource.Dimension.mtrl_textinput_box_padding_end;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.mtrl_textinput_box_stroke_width_default = global::HelloworldXamarin.Droid.Resource.Dimension.mtrl_textinput_box_stroke_width_default;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.mtrl_textinput_box_stroke_width_focused = global::HelloworldXamarin.Droid.Resource.Dimension.mtrl_textinput_box_stroke_width_focused;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.mtrl_textinput_outline_box_expanded_padding = global::HelloworldXamarin.Droid.Resource.Dimension.mtrl_textinput_outline_box_expanded_padding;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.mtrl_toolbar_default_height = global::HelloworldXamarin.Droid.Resource.Dimension.mtrl_toolbar_default_height;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.notification_action_icon_size = global::HelloworldXamarin.Droid.Resource.Dimension.notification_action_icon_size;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.notification_action_text_size = global::HelloworldXamarin.Droid.Resource.Dimension.notification_action_text_size;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.notification_big_circle_margin = global::HelloworldXamarin.Droid.Resource.Dimension.notification_big_circle_margin;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.notification_content_margin_start = global::HelloworldXamarin.Droid.Resource.Dimension.notification_content_margin_start;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.notification_large_icon_height = global::HelloworldXamarin.Droid.Resource.Dimension.notification_large_icon_height;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.notification_large_icon_width = global::HelloworldXamarin.Droid.Resource.Dimension.notification_large_icon_width;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.notification_main_column_padding_top = global::HelloworldXamarin.Droid.Resource.Dimension.notification_main_column_padding_top;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.notification_media_narrow_margin = global::HelloworldXamarin.Droid.Resource.Dimension.notification_media_narrow_margin;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.notification_right_icon_size = global::HelloworldXamarin.Droid.Resource.Dimension.notification_right_icon_size;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.notification_right_side_padding_top = global::HelloworldXamarin.Droid.Resource.Dimension.notification_right_side_padding_top;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.notification_small_icon_background_padding = global::HelloworldXamarin.Droid.Resource.Dimension.notification_small_icon_background_padding;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.notification_small_icon_size_as_large = global::HelloworldXamarin.Droid.Resource.Dimension.notification_small_icon_size_as_large;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.notification_subtext_size = global::HelloworldXamarin.Droid.Resource.Dimension.notification_subtext_size;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.notification_top_pad = global::HelloworldXamarin.Droid.Resource.Dimension.notification_top_pad;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.notification_top_pad_large_text = global::HelloworldXamarin.Droid.Resource.Dimension.notification_top_pad_large_text;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.subtitle_corner_radius = global::HelloworldXamarin.Droid.Resource.Dimension.subtitle_corner_radius;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.subtitle_outline_width = global::HelloworldXamarin.Droid.Resource.Dimension.subtitle_outline_width;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.subtitle_shadow_offset = global::HelloworldXamarin.Droid.Resource.Dimension.subtitle_shadow_offset;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.subtitle_shadow_radius = global::HelloworldXamarin.Droid.Resource.Dimension.subtitle_shadow_radius;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.tooltip_corner_radius = global::HelloworldXamarin.Droid.Resource.Dimension.tooltip_corner_radius;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.tooltip_horizontal_padding = global::HelloworldXamarin.Droid.Resource.Dimension.tooltip_horizontal_padding;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.tooltip_margin = global::HelloworldXamarin.Droid.Resource.Dimension.tooltip_margin;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.tooltip_precise_anchor_extra_offset = global::HelloworldXamarin.Droid.Resource.Dimension.tooltip_precise_anchor_extra_offset;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.tooltip_precise_anchor_threshold = global::HelloworldXamarin.Droid.Resource.Dimension.tooltip_precise_anchor_threshold;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.tooltip_vertical_padding = global::HelloworldXamarin.Droid.Resource.Dimension.tooltip_vertical_padding;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.tooltip_y_offset_non_touch = global::HelloworldXamarin.Droid.Resource.Dimension.tooltip_y_offset_non_touch;
+ global::Xamarin.Forms.Platform.Android.Resource.Dimension.tooltip_y_offset_touch = global::HelloworldXamarin.Droid.Resource.Dimension.tooltip_y_offset_touch;
+ global::Xamarin.Forms.Platform.Android.Resource.Drawable.abc_ab_share_pack_mtrl_alpha = global::HelloworldXamarin.Droid.Resource.Drawable.abc_ab_share_pack_mtrl_alpha;
+ global::Xamarin.Forms.Platform.Android.Resource.Drawable.abc_action_bar_item_background_material = global::HelloworldXamarin.Droid.Resource.Drawable.abc_action_bar_item_background_material;
+ global::Xamarin.Forms.Platform.Android.Resource.Drawable.abc_btn_borderless_material = global::HelloworldXamarin.Droid.Resource.Drawable.abc_btn_borderless_material;
+ global::Xamarin.Forms.Platform.Android.Resource.Drawable.abc_btn_check_material = global::HelloworldXamarin.Droid.Resource.Drawable.abc_btn_check_material;
+ global::Xamarin.Forms.Platform.Android.Resource.Drawable.abc_btn_check_to_on_mtrl_000 = global::HelloworldXamarin.Droid.Resource.Drawable.abc_btn_check_to_on_mtrl_000;
+ global::Xamarin.Forms.Platform.Android.Resource.Drawable.abc_btn_check_to_on_mtrl_015 = global::HelloworldXamarin.Droid.Resource.Drawable.abc_btn_check_to_on_mtrl_015;
+ global::Xamarin.Forms.Platform.Android.Resource.Drawable.abc_btn_colored_material = global::HelloworldXamarin.Droid.Resource.Drawable.abc_btn_colored_material;
+ global::Xamarin.Forms.Platform.Android.Resource.Drawable.abc_btn_default_mtrl_shape = global::HelloworldXamarin.Droid.Resource.Drawable.abc_btn_default_mtrl_shape;
+ global::Xamarin.Forms.Platform.Android.Resource.Drawable.abc_btn_radio_material = global::HelloworldXamarin.Droid.Resource.Drawable.abc_btn_radio_material;
+ global::Xamarin.Forms.Platform.Android.Resource.Drawable.abc_btn_radio_to_on_mtrl_000 = global::HelloworldXamarin.Droid.Resource.Drawable.abc_btn_radio_to_on_mtrl_000;
+ global::Xamarin.Forms.Platform.Android.Resource.Drawable.abc_btn_radio_to_on_mtrl_015 = global::HelloworldXamarin.Droid.Resource.Drawable.abc_btn_radio_to_on_mtrl_015;
+ global::Xamarin.Forms.Platform.Android.Resource.Drawable.abc_btn_switch_to_on_mtrl_00001 = global::HelloworldXamarin.Droid.Resource.Drawable.abc_btn_switch_to_on_mtrl_00001;
+ global::Xamarin.Forms.Platform.Android.Resource.Drawable.abc_btn_switch_to_on_mtrl_00012 = global::HelloworldXamarin.Droid.Resource.Drawable.abc_btn_switch_to_on_mtrl_00012;
+ global::Xamarin.Forms.Platform.Android.Resource.Drawable.abc_cab_background_internal_bg = global::HelloworldXamarin.Droid.Resource.Drawable.abc_cab_background_internal_bg;
+ global::Xamarin.Forms.Platform.Android.Resource.Drawable.abc_cab_background_top_material = global::HelloworldXamarin.Droid.Resource.Drawable.abc_cab_background_top_material;
+ global::Xamarin.Forms.Platform.Android.Resource.Drawable.abc_cab_background_top_mtrl_alpha = global::HelloworldXamarin.Droid.Resource.Drawable.abc_cab_background_top_mtrl_alpha;
+ global::Xamarin.Forms.Platform.Android.Resource.Drawable.abc_control_background_material = global::HelloworldXamarin.Droid.Resource.Drawable.abc_control_background_material;
+ global::Xamarin.Forms.Platform.Android.Resource.Drawable.abc_dialog_material_background = global::HelloworldXamarin.Droid.Resource.Drawable.abc_dialog_material_background;
+ global::Xamarin.Forms.Platform.Android.Resource.Drawable.abc_edit_text_material = global::HelloworldXamarin.Droid.Resource.Drawable.abc_edit_text_material;
+ global::Xamarin.Forms.Platform.Android.Resource.Drawable.abc_ic_ab_back_material = global::HelloworldXamarin.Droid.Resource.Drawable.abc_ic_ab_back_material;
+ global::Xamarin.Forms.Platform.Android.Resource.Drawable.abc_ic_arrow_drop_right_black_24dp = global::HelloworldXamarin.Droid.Resource.Drawable.abc_ic_arrow_drop_right_black_24dp;
+ global::Xamarin.Forms.Platform.Android.Resource.Drawable.abc_ic_clear_material = global::HelloworldXamarin.Droid.Resource.Drawable.abc_ic_clear_material;
+ global::Xamarin.Forms.Platform.Android.Resource.Drawable.abc_ic_commit_search_api_mtrl_alpha = global::HelloworldXamarin.Droid.Resource.Drawable.abc_ic_commit_search_api_mtrl_alpha;
+ global::Xamarin.Forms.Platform.Android.Resource.Drawable.abc_ic_go_search_api_material = global::HelloworldXamarin.Droid.Resource.Drawable.abc_ic_go_search_api_material;
+ global::Xamarin.Forms.Platform.Android.Resource.Drawable.abc_ic_menu_copy_mtrl_am_alpha = global::HelloworldXamarin.Droid.Resource.Drawable.abc_ic_menu_copy_mtrl_am_alpha;
+ global::Xamarin.Forms.Platform.Android.Resource.Drawable.abc_ic_menu_cut_mtrl_alpha = global::HelloworldXamarin.Droid.Resource.Drawable.abc_ic_menu_cut_mtrl_alpha;
+ global::Xamarin.Forms.Platform.Android.Resource.Drawable.abc_ic_menu_overflow_material = global::HelloworldXamarin.Droid.Resource.Drawable.abc_ic_menu_overflow_material;
+ global::Xamarin.Forms.Platform.Android.Resource.Drawable.abc_ic_menu_paste_mtrl_am_alpha = global::HelloworldXamarin.Droid.Resource.Drawable.abc_ic_menu_paste_mtrl_am_alpha;
+ global::Xamarin.Forms.Platform.Android.Resource.Drawable.abc_ic_menu_selectall_mtrl_alpha = global::HelloworldXamarin.Droid.Resource.Drawable.abc_ic_menu_selectall_mtrl_alpha;
+ global::Xamarin.Forms.Platform.Android.Resource.Drawable.abc_ic_menu_share_mtrl_alpha = global::HelloworldXamarin.Droid.Resource.Drawable.abc_ic_menu_share_mtrl_alpha;
+ global::Xamarin.Forms.Platform.Android.Resource.Drawable.abc_ic_search_api_material = global::HelloworldXamarin.Droid.Resource.Drawable.abc_ic_search_api_material;
+ global::Xamarin.Forms.Platform.Android.Resource.Drawable.abc_ic_star_black_16dp = global::HelloworldXamarin.Droid.Resource.Drawable.abc_ic_star_black_16dp;
+ global::Xamarin.Forms.Platform.Android.Resource.Drawable.abc_ic_star_black_36dp = global::HelloworldXamarin.Droid.Resource.Drawable.abc_ic_star_black_36dp;
+ global::Xamarin.Forms.Platform.Android.Resource.Drawable.abc_ic_star_black_48dp = global::HelloworldXamarin.Droid.Resource.Drawable.abc_ic_star_black_48dp;
+ global::Xamarin.Forms.Platform.Android.Resource.Drawable.abc_ic_star_half_black_16dp = global::HelloworldXamarin.Droid.Resource.Drawable.abc_ic_star_half_black_16dp;
+ global::Xamarin.Forms.Platform.Android.Resource.Drawable.abc_ic_star_half_black_36dp = global::HelloworldXamarin.Droid.Resource.Drawable.abc_ic_star_half_black_36dp;
+ global::Xamarin.Forms.Platform.Android.Resource.Drawable.abc_ic_star_half_black_48dp = global::HelloworldXamarin.Droid.Resource.Drawable.abc_ic_star_half_black_48dp;
+ global::Xamarin.Forms.Platform.Android.Resource.Drawable.abc_ic_voice_search_api_material = global::HelloworldXamarin.Droid.Resource.Drawable.abc_ic_voice_search_api_material;
+ global::Xamarin.Forms.Platform.Android.Resource.Drawable.abc_item_background_holo_dark = global::HelloworldXamarin.Droid.Resource.Drawable.abc_item_background_holo_dark;
+ global::Xamarin.Forms.Platform.Android.Resource.Drawable.abc_item_background_holo_light = global::HelloworldXamarin.Droid.Resource.Drawable.abc_item_background_holo_light;
+ global::Xamarin.Forms.Platform.Android.Resource.Drawable.abc_list_divider_material = global::HelloworldXamarin.Droid.Resource.Drawable.abc_list_divider_material;
+ global::Xamarin.Forms.Platform.Android.Resource.Drawable.abc_list_divider_mtrl_alpha = global::HelloworldXamarin.Droid.Resource.Drawable.abc_list_divider_mtrl_alpha;
+ global::Xamarin.Forms.Platform.Android.Resource.Drawable.abc_list_focused_holo = global::HelloworldXamarin.Droid.Resource.Drawable.abc_list_focused_holo;
+ global::Xamarin.Forms.Platform.Android.Resource.Drawable.abc_list_longpressed_holo = global::HelloworldXamarin.Droid.Resource.Drawable.abc_list_longpressed_holo;
+ global::Xamarin.Forms.Platform.Android.Resource.Drawable.abc_list_pressed_holo_dark = global::HelloworldXamarin.Droid.Resource.Drawable.abc_list_pressed_holo_dark;
+ global::Xamarin.Forms.Platform.Android.Resource.Drawable.abc_list_pressed_holo_light = global::HelloworldXamarin.Droid.Resource.Drawable.abc_list_pressed_holo_light;
+ global::Xamarin.Forms.Platform.Android.Resource.Drawable.abc_list_selector_background_transition_holo_dark = global::HelloworldXamarin.Droid.Resource.Drawable.abc_list_selector_background_transition_holo_dark;
+ global::Xamarin.Forms.Platform.Android.Resource.Drawable.abc_list_selector_background_transition_holo_light = global::HelloworldXamarin.Droid.Resource.Drawable.abc_list_selector_background_transition_holo_light;
+ global::Xamarin.Forms.Platform.Android.Resource.Drawable.abc_list_selector_disabled_holo_dark = global::HelloworldXamarin.Droid.Resource.Drawable.abc_list_selector_disabled_holo_dark;
+ global::Xamarin.Forms.Platform.Android.Resource.Drawable.abc_list_selector_disabled_holo_light = global::HelloworldXamarin.Droid.Resource.Drawable.abc_list_selector_disabled_holo_light;
+ global::Xamarin.Forms.Platform.Android.Resource.Drawable.abc_list_selector_holo_dark = global::HelloworldXamarin.Droid.Resource.Drawable.abc_list_selector_holo_dark;
+ global::Xamarin.Forms.Platform.Android.Resource.Drawable.abc_list_selector_holo_light = global::HelloworldXamarin.Droid.Resource.Drawable.abc_list_selector_holo_light;
+ global::Xamarin.Forms.Platform.Android.Resource.Drawable.abc_menu_hardkey_panel_mtrl_mult = global::HelloworldXamarin.Droid.Resource.Drawable.abc_menu_hardkey_panel_mtrl_mult;
+ global::Xamarin.Forms.Platform.Android.Resource.Drawable.abc_popup_background_mtrl_mult = global::HelloworldXamarin.Droid.Resource.Drawable.abc_popup_background_mtrl_mult;
+ global::Xamarin.Forms.Platform.Android.Resource.Drawable.abc_ratingbar_indicator_material = global::HelloworldXamarin.Droid.Resource.Drawable.abc_ratingbar_indicator_material;
+ global::Xamarin.Forms.Platform.Android.Resource.Drawable.abc_ratingbar_material = global::HelloworldXamarin.Droid.Resource.Drawable.abc_ratingbar_material;
+ global::Xamarin.Forms.Platform.Android.Resource.Drawable.abc_ratingbar_small_material = global::HelloworldXamarin.Droid.Resource.Drawable.abc_ratingbar_small_material;
+ global::Xamarin.Forms.Platform.Android.Resource.Drawable.abc_scrubber_control_off_mtrl_alpha = global::HelloworldXamarin.Droid.Resource.Drawable.abc_scrubber_control_off_mtrl_alpha;
+ global::Xamarin.Forms.Platform.Android.Resource.Drawable.abc_scrubber_control_to_pressed_mtrl_000 = global::HelloworldXamarin.Droid.Resource.Drawable.abc_scrubber_control_to_pressed_mtrl_000;
+ global::Xamarin.Forms.Platform.Android.Resource.Drawable.abc_scrubber_control_to_pressed_mtrl_005 = global::HelloworldXamarin.Droid.Resource.Drawable.abc_scrubber_control_to_pressed_mtrl_005;
+ global::Xamarin.Forms.Platform.Android.Resource.Drawable.abc_scrubber_primary_mtrl_alpha = global::HelloworldXamarin.Droid.Resource.Drawable.abc_scrubber_primary_mtrl_alpha;
+ global::Xamarin.Forms.Platform.Android.Resource.Drawable.abc_scrubber_track_mtrl_alpha = global::HelloworldXamarin.Droid.Resource.Drawable.abc_scrubber_track_mtrl_alpha;
+ global::Xamarin.Forms.Platform.Android.Resource.Drawable.abc_seekbar_thumb_material = global::HelloworldXamarin.Droid.Resource.Drawable.abc_seekbar_thumb_material;
+ global::Xamarin.Forms.Platform.Android.Resource.Drawable.abc_seekbar_tick_mark_material = global::HelloworldXamarin.Droid.Resource.Drawable.abc_seekbar_tick_mark_material;
+ global::Xamarin.Forms.Platform.Android.Resource.Drawable.abc_seekbar_track_material = global::HelloworldXamarin.Droid.Resource.Drawable.abc_seekbar_track_material;
+ global::Xamarin.Forms.Platform.Android.Resource.Drawable.abc_spinner_mtrl_am_alpha = global::HelloworldXamarin.Droid.Resource.Drawable.abc_spinner_mtrl_am_alpha;
+ global::Xamarin.Forms.Platform.Android.Resource.Drawable.abc_spinner_textfield_background_material = global::HelloworldXamarin.Droid.Resource.Drawable.abc_spinner_textfield_background_material;
+ global::Xamarin.Forms.Platform.Android.Resource.Drawable.abc_switch_thumb_material = global::HelloworldXamarin.Droid.Resource.Drawable.abc_switch_thumb_material;
+ global::Xamarin.Forms.Platform.Android.Resource.Drawable.abc_switch_track_mtrl_alpha = global::HelloworldXamarin.Droid.Resource.Drawable.abc_switch_track_mtrl_alpha;
+ global::Xamarin.Forms.Platform.Android.Resource.Drawable.abc_tab_indicator_material = global::HelloworldXamarin.Droid.Resource.Drawable.abc_tab_indicator_material;
+ global::Xamarin.Forms.Platform.Android.Resource.Drawable.abc_tab_indicator_mtrl_alpha = global::HelloworldXamarin.Droid.Resource.Drawable.abc_tab_indicator_mtrl_alpha;
+ global::Xamarin.Forms.Platform.Android.Resource.Drawable.abc_textfield_activated_mtrl_alpha = global::HelloworldXamarin.Droid.Resource.Drawable.abc_textfield_activated_mtrl_alpha;
+ global::Xamarin.Forms.Platform.Android.Resource.Drawable.abc_textfield_default_mtrl_alpha = global::HelloworldXamarin.Droid.Resource.Drawable.abc_textfield_default_mtrl_alpha;
+ global::Xamarin.Forms.Platform.Android.Resource.Drawable.abc_textfield_search_activated_mtrl_alpha = global::HelloworldXamarin.Droid.Resource.Drawable.abc_textfield_search_activated_mtrl_alpha;
+ global::Xamarin.Forms.Platform.Android.Resource.Drawable.abc_textfield_search_default_mtrl_alpha = global::HelloworldXamarin.Droid.Resource.Drawable.abc_textfield_search_default_mtrl_alpha;
+ global::Xamarin.Forms.Platform.Android.Resource.Drawable.abc_textfield_search_material = global::HelloworldXamarin.Droid.Resource.Drawable.abc_textfield_search_material;
+ global::Xamarin.Forms.Platform.Android.Resource.Drawable.abc_text_cursor_material = global::HelloworldXamarin.Droid.Resource.Drawable.abc_text_cursor_material;
+ global::Xamarin.Forms.Platform.Android.Resource.Drawable.abc_text_select_handle_left_mtrl_dark = global::HelloworldXamarin.Droid.Resource.Drawable.abc_text_select_handle_left_mtrl_dark;
+ global::Xamarin.Forms.Platform.Android.Resource.Drawable.abc_text_select_handle_left_mtrl_light = global::HelloworldXamarin.Droid.Resource.Drawable.abc_text_select_handle_left_mtrl_light;
+ global::Xamarin.Forms.Platform.Android.Resource.Drawable.abc_text_select_handle_middle_mtrl_dark = global::HelloworldXamarin.Droid.Resource.Drawable.abc_text_select_handle_middle_mtrl_dark;
+ global::Xamarin.Forms.Platform.Android.Resource.Drawable.abc_text_select_handle_middle_mtrl_light = global::HelloworldXamarin.Droid.Resource.Drawable.abc_text_select_handle_middle_mtrl_light;
+ global::Xamarin.Forms.Platform.Android.Resource.Drawable.abc_text_select_handle_right_mtrl_dark = global::HelloworldXamarin.Droid.Resource.Drawable.abc_text_select_handle_right_mtrl_dark;
+ global::Xamarin.Forms.Platform.Android.Resource.Drawable.abc_text_select_handle_right_mtrl_light = global::HelloworldXamarin.Droid.Resource.Drawable.abc_text_select_handle_right_mtrl_light;
+ global::Xamarin.Forms.Platform.Android.Resource.Drawable.abc_vector_test = global::HelloworldXamarin.Droid.Resource.Drawable.abc_vector_test;
+ global::Xamarin.Forms.Platform.Android.Resource.Drawable.avd_hide_password = global::HelloworldXamarin.Droid.Resource.Drawable.avd_hide_password;
+ global::Xamarin.Forms.Platform.Android.Resource.Drawable.avd_show_password = global::HelloworldXamarin.Droid.Resource.Drawable.avd_show_password;
+ global::Xamarin.Forms.Platform.Android.Resource.Drawable.design_bottom_navigation_item_background = global::HelloworldXamarin.Droid.Resource.Drawable.design_bottom_navigation_item_background;
+ global::Xamarin.Forms.Platform.Android.Resource.Drawable.design_fab_background = global::HelloworldXamarin.Droid.Resource.Drawable.design_fab_background;
+ global::Xamarin.Forms.Platform.Android.Resource.Drawable.design_ic_visibility = global::HelloworldXamarin.Droid.Resource.Drawable.design_ic_visibility;
+ global::Xamarin.Forms.Platform.Android.Resource.Drawable.design_ic_visibility_off = global::HelloworldXamarin.Droid.Resource.Drawable.design_ic_visibility_off;
+ global::Xamarin.Forms.Platform.Android.Resource.Drawable.design_password_eye = global::HelloworldXamarin.Droid.Resource.Drawable.design_password_eye;
+ global::Xamarin.Forms.Platform.Android.Resource.Drawable.design_snackbar_background = global::HelloworldXamarin.Droid.Resource.Drawable.design_snackbar_background;
+ global::Xamarin.Forms.Platform.Android.Resource.Drawable.ic_mtrl_chip_checked_black = global::HelloworldXamarin.Droid.Resource.Drawable.ic_mtrl_chip_checked_black;
+ global::Xamarin.Forms.Platform.Android.Resource.Drawable.ic_mtrl_chip_checked_circle = global::HelloworldXamarin.Droid.Resource.Drawable.ic_mtrl_chip_checked_circle;
+ global::Xamarin.Forms.Platform.Android.Resource.Drawable.ic_mtrl_chip_close_circle = global::HelloworldXamarin.Droid.Resource.Drawable.ic_mtrl_chip_close_circle;
+ global::Xamarin.Forms.Platform.Android.Resource.Drawable.mtrl_snackbar_background = global::HelloworldXamarin.Droid.Resource.Drawable.mtrl_snackbar_background;
+ global::Xamarin.Forms.Platform.Android.Resource.Drawable.mtrl_tabs_default_indicator = global::HelloworldXamarin.Droid.Resource.Drawable.mtrl_tabs_default_indicator;
+ global::Xamarin.Forms.Platform.Android.Resource.Drawable.navigation_empty_icon = global::HelloworldXamarin.Droid.Resource.Drawable.navigation_empty_icon;
+ global::Xamarin.Forms.Platform.Android.Resource.Drawable.notification_action_background = global::HelloworldXamarin.Droid.Resource.Drawable.notification_action_background;
+ global::Xamarin.Forms.Platform.Android.Resource.Drawable.notification_bg = global::HelloworldXamarin.Droid.Resource.Drawable.notification_bg;
+ global::Xamarin.Forms.Platform.Android.Resource.Drawable.notification_bg_low = global::HelloworldXamarin.Droid.Resource.Drawable.notification_bg_low;
+ global::Xamarin.Forms.Platform.Android.Resource.Drawable.notification_bg_low_normal = global::HelloworldXamarin.Droid.Resource.Drawable.notification_bg_low_normal;
+ global::Xamarin.Forms.Platform.Android.Resource.Drawable.notification_bg_low_pressed = global::HelloworldXamarin.Droid.Resource.Drawable.notification_bg_low_pressed;
+ global::Xamarin.Forms.Platform.Android.Resource.Drawable.notification_bg_normal = global::HelloworldXamarin.Droid.Resource.Drawable.notification_bg_normal;
+ global::Xamarin.Forms.Platform.Android.Resource.Drawable.notification_bg_normal_pressed = global::HelloworldXamarin.Droid.Resource.Drawable.notification_bg_normal_pressed;
+ global::Xamarin.Forms.Platform.Android.Resource.Drawable.notification_icon_background = global::HelloworldXamarin.Droid.Resource.Drawable.notification_icon_background;
+ global::Xamarin.Forms.Platform.Android.Resource.Drawable.notification_template_icon_bg = global::HelloworldXamarin.Droid.Resource.Drawable.notification_template_icon_bg;
+ global::Xamarin.Forms.Platform.Android.Resource.Drawable.notification_template_icon_low_bg = global::HelloworldXamarin.Droid.Resource.Drawable.notification_template_icon_low_bg;
+ global::Xamarin.Forms.Platform.Android.Resource.Drawable.notification_tile_bg = global::HelloworldXamarin.Droid.Resource.Drawable.notification_tile_bg;
+ global::Xamarin.Forms.Platform.Android.Resource.Drawable.notify_panel_notification_icon_bg = global::HelloworldXamarin.Droid.Resource.Drawable.notify_panel_notification_icon_bg;
+ global::Xamarin.Forms.Platform.Android.Resource.Drawable.tooltip_frame_dark = global::HelloworldXamarin.Droid.Resource.Drawable.tooltip_frame_dark;
+ global::Xamarin.Forms.Platform.Android.Resource.Drawable.tooltip_frame_light = global::HelloworldXamarin.Droid.Resource.Drawable.tooltip_frame_light;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.action0 = global::HelloworldXamarin.Droid.Resource.Id.action0;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.actions = global::HelloworldXamarin.Droid.Resource.Id.actions;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.action_bar = global::HelloworldXamarin.Droid.Resource.Id.action_bar;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.action_bar_activity_content = global::HelloworldXamarin.Droid.Resource.Id.action_bar_activity_content;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.action_bar_container = global::HelloworldXamarin.Droid.Resource.Id.action_bar_container;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.action_bar_root = global::HelloworldXamarin.Droid.Resource.Id.action_bar_root;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.action_bar_spinner = global::HelloworldXamarin.Droid.Resource.Id.action_bar_spinner;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.action_bar_subtitle = global::HelloworldXamarin.Droid.Resource.Id.action_bar_subtitle;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.action_bar_title = global::HelloworldXamarin.Droid.Resource.Id.action_bar_title;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.action_container = global::HelloworldXamarin.Droid.Resource.Id.action_container;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.action_context_bar = global::HelloworldXamarin.Droid.Resource.Id.action_context_bar;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.action_divider = global::HelloworldXamarin.Droid.Resource.Id.action_divider;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.action_image = global::HelloworldXamarin.Droid.Resource.Id.action_image;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.action_menu_divider = global::HelloworldXamarin.Droid.Resource.Id.action_menu_divider;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.action_menu_presenter = global::HelloworldXamarin.Droid.Resource.Id.action_menu_presenter;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.action_mode_bar = global::HelloworldXamarin.Droid.Resource.Id.action_mode_bar;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.action_mode_bar_stub = global::HelloworldXamarin.Droid.Resource.Id.action_mode_bar_stub;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.action_mode_close_button = global::HelloworldXamarin.Droid.Resource.Id.action_mode_close_button;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.action_text = global::HelloworldXamarin.Droid.Resource.Id.action_text;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.activity_chooser_view_content = global::HelloworldXamarin.Droid.Resource.Id.activity_chooser_view_content;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.add = global::HelloworldXamarin.Droid.Resource.Id.add;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.alertTitle = global::HelloworldXamarin.Droid.Resource.Id.alertTitle;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.all = global::HelloworldXamarin.Droid.Resource.Id.all;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.ALT = global::HelloworldXamarin.Droid.Resource.Id.ALT;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.always = global::HelloworldXamarin.Droid.Resource.Id.always;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.async = global::HelloworldXamarin.Droid.Resource.Id.async;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.auto = global::HelloworldXamarin.Droid.Resource.Id.auto;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.beginning = global::HelloworldXamarin.Droid.Resource.Id.beginning;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.blocking = global::HelloworldXamarin.Droid.Resource.Id.blocking;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.bottom = global::HelloworldXamarin.Droid.Resource.Id.bottom;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.bottomtab_navarea = global::HelloworldXamarin.Droid.Resource.Id.bottomtab_navarea;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.bottomtab_tabbar = global::HelloworldXamarin.Droid.Resource.Id.bottomtab_tabbar;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.buttonPanel = global::HelloworldXamarin.Droid.Resource.Id.buttonPanel;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.cancel_action = global::HelloworldXamarin.Droid.Resource.Id.cancel_action;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.center = global::HelloworldXamarin.Droid.Resource.Id.center;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.center_horizontal = global::HelloworldXamarin.Droid.Resource.Id.center_horizontal;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.center_vertical = global::HelloworldXamarin.Droid.Resource.Id.center_vertical;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.checkbox = global::HelloworldXamarin.Droid.Resource.Id.checkbox;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.chronometer = global::HelloworldXamarin.Droid.Resource.Id.chronometer;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.clip_horizontal = global::HelloworldXamarin.Droid.Resource.Id.clip_horizontal;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.clip_vertical = global::HelloworldXamarin.Droid.Resource.Id.clip_vertical;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.collapseActionView = global::HelloworldXamarin.Droid.Resource.Id.collapseActionView;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.container = global::HelloworldXamarin.Droid.Resource.Id.container;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.content = global::HelloworldXamarin.Droid.Resource.Id.content;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.contentPanel = global::HelloworldXamarin.Droid.Resource.Id.contentPanel;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.coordinator = global::HelloworldXamarin.Droid.Resource.Id.coordinator;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.CTRL = global::HelloworldXamarin.Droid.Resource.Id.CTRL;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.custom = global::HelloworldXamarin.Droid.Resource.Id.custom;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.customPanel = global::HelloworldXamarin.Droid.Resource.Id.customPanel;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.decor_content_parent = global::HelloworldXamarin.Droid.Resource.Id.decor_content_parent;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.default_activity_button = global::HelloworldXamarin.Droid.Resource.Id.default_activity_button;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.design_bottom_sheet = global::HelloworldXamarin.Droid.Resource.Id.design_bottom_sheet;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.design_menu_item_action_area = global::HelloworldXamarin.Droid.Resource.Id.design_menu_item_action_area;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.design_menu_item_action_area_stub = global::HelloworldXamarin.Droid.Resource.Id.design_menu_item_action_area_stub;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.design_menu_item_text = global::HelloworldXamarin.Droid.Resource.Id.design_menu_item_text;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.design_navigation_view = global::HelloworldXamarin.Droid.Resource.Id.design_navigation_view;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.disableHome = global::HelloworldXamarin.Droid.Resource.Id.disableHome;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.edit_query = global::HelloworldXamarin.Droid.Resource.Id.edit_query;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.end = global::HelloworldXamarin.Droid.Resource.Id.end;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.end_padder = global::HelloworldXamarin.Droid.Resource.Id.end_padder;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.enterAlways = global::HelloworldXamarin.Droid.Resource.Id.enterAlways;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.enterAlwaysCollapsed = global::HelloworldXamarin.Droid.Resource.Id.enterAlwaysCollapsed;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.exitUntilCollapsed = global::HelloworldXamarin.Droid.Resource.Id.exitUntilCollapsed;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.expanded_menu = global::HelloworldXamarin.Droid.Resource.Id.expanded_menu;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.expand_activities_button = global::HelloworldXamarin.Droid.Resource.Id.expand_activities_button;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.fill = global::HelloworldXamarin.Droid.Resource.Id.fill;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.filled = global::HelloworldXamarin.Droid.Resource.Id.filled;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.fill_horizontal = global::HelloworldXamarin.Droid.Resource.Id.fill_horizontal;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.fill_vertical = global::HelloworldXamarin.Droid.Resource.Id.fill_vertical;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.@fixed = global::HelloworldXamarin.Droid.Resource.Id.@fixed;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.flyoutcontent_appbar = global::HelloworldXamarin.Droid.Resource.Id.flyoutcontent_appbar;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.flyoutcontent_recycler = global::HelloworldXamarin.Droid.Resource.Id.flyoutcontent_recycler;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.forever = global::HelloworldXamarin.Droid.Resource.Id.forever;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.FUNCTION = global::HelloworldXamarin.Droid.Resource.Id.FUNCTION;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.ghost_view = global::HelloworldXamarin.Droid.Resource.Id.ghost_view;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.group_divider = global::HelloworldXamarin.Droid.Resource.Id.group_divider;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.home = global::HelloworldXamarin.Droid.Resource.Id.home;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.homeAsUp = global::HelloworldXamarin.Droid.Resource.Id.homeAsUp;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.icon = global::HelloworldXamarin.Droid.Resource.Id.icon;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.icon_group = global::HelloworldXamarin.Droid.Resource.Id.icon_group;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.ifRoom = global::HelloworldXamarin.Droid.Resource.Id.ifRoom;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.image = global::HelloworldXamarin.Droid.Resource.Id.image;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.info = global::HelloworldXamarin.Droid.Resource.Id.info;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.italic = global::HelloworldXamarin.Droid.Resource.Id.italic;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.item_touch_helper_previous_elevation = global::HelloworldXamarin.Droid.Resource.Id.item_touch_helper_previous_elevation;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.labeled = global::HelloworldXamarin.Droid.Resource.Id.labeled;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.largeLabel = global::HelloworldXamarin.Droid.Resource.Id.largeLabel;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.left = global::HelloworldXamarin.Droid.Resource.Id.left;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.line1 = global::HelloworldXamarin.Droid.Resource.Id.line1;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.line3 = global::HelloworldXamarin.Droid.Resource.Id.line3;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.listMode = global::HelloworldXamarin.Droid.Resource.Id.listMode;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.list_item = global::HelloworldXamarin.Droid.Resource.Id.list_item;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.main_appbar = global::HelloworldXamarin.Droid.Resource.Id.main_appbar;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.main_tablayout = global::HelloworldXamarin.Droid.Resource.Id.main_tablayout;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.main_toolbar = global::HelloworldXamarin.Droid.Resource.Id.main_toolbar;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.main_viewpager = global::HelloworldXamarin.Droid.Resource.Id.main_viewpager;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.masked = global::HelloworldXamarin.Droid.Resource.Id.masked;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.media_actions = global::HelloworldXamarin.Droid.Resource.Id.media_actions;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.message = global::HelloworldXamarin.Droid.Resource.Id.message;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.META = global::HelloworldXamarin.Droid.Resource.Id.META;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.middle = global::HelloworldXamarin.Droid.Resource.Id.middle;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.mini = global::HelloworldXamarin.Droid.Resource.Id.mini;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.mtrl_child_content_container = global::HelloworldXamarin.Droid.Resource.Id.mtrl_child_content_container;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.mtrl_internal_children_alpha_tag = global::HelloworldXamarin.Droid.Resource.Id.mtrl_internal_children_alpha_tag;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.multiply = global::HelloworldXamarin.Droid.Resource.Id.multiply;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.navigation_header_container = global::HelloworldXamarin.Droid.Resource.Id.navigation_header_container;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.never = global::HelloworldXamarin.Droid.Resource.Id.never;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.none = global::HelloworldXamarin.Droid.Resource.Id.none;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.normal = global::HelloworldXamarin.Droid.Resource.Id.normal;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.notification_background = global::HelloworldXamarin.Droid.Resource.Id.notification_background;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.notification_main_column = global::HelloworldXamarin.Droid.Resource.Id.notification_main_column;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.notification_main_column_container = global::HelloworldXamarin.Droid.Resource.Id.notification_main_column_container;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.outline = global::HelloworldXamarin.Droid.Resource.Id.outline;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.parallax = global::HelloworldXamarin.Droid.Resource.Id.parallax;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.parentPanel = global::HelloworldXamarin.Droid.Resource.Id.parentPanel;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.parent_matrix = global::HelloworldXamarin.Droid.Resource.Id.parent_matrix;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.pin = global::HelloworldXamarin.Droid.Resource.Id.pin;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.progress_circular = global::HelloworldXamarin.Droid.Resource.Id.progress_circular;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.progress_horizontal = global::HelloworldXamarin.Droid.Resource.Id.progress_horizontal;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.radio = global::HelloworldXamarin.Droid.Resource.Id.radio;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.right = global::HelloworldXamarin.Droid.Resource.Id.right;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.right_icon = global::HelloworldXamarin.Droid.Resource.Id.right_icon;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.right_side = global::HelloworldXamarin.Droid.Resource.Id.right_side;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.save_image_matrix = global::HelloworldXamarin.Droid.Resource.Id.save_image_matrix;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.save_non_transition_alpha = global::HelloworldXamarin.Droid.Resource.Id.save_non_transition_alpha;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.save_scale_type = global::HelloworldXamarin.Droid.Resource.Id.save_scale_type;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.screen = global::HelloworldXamarin.Droid.Resource.Id.screen;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.scroll = global::HelloworldXamarin.Droid.Resource.Id.scroll;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.scrollable = global::HelloworldXamarin.Droid.Resource.Id.scrollable;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.scrollIndicatorDown = global::HelloworldXamarin.Droid.Resource.Id.scrollIndicatorDown;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.scrollIndicatorUp = global::HelloworldXamarin.Droid.Resource.Id.scrollIndicatorUp;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.scrollView = global::HelloworldXamarin.Droid.Resource.Id.scrollView;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.search_badge = global::HelloworldXamarin.Droid.Resource.Id.search_badge;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.search_bar = global::HelloworldXamarin.Droid.Resource.Id.search_bar;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.search_button = global::HelloworldXamarin.Droid.Resource.Id.search_button;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.search_close_btn = global::HelloworldXamarin.Droid.Resource.Id.search_close_btn;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.search_edit_frame = global::HelloworldXamarin.Droid.Resource.Id.search_edit_frame;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.search_go_btn = global::HelloworldXamarin.Droid.Resource.Id.search_go_btn;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.search_mag_icon = global::HelloworldXamarin.Droid.Resource.Id.search_mag_icon;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.search_plate = global::HelloworldXamarin.Droid.Resource.Id.search_plate;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.search_src_text = global::HelloworldXamarin.Droid.Resource.Id.search_src_text;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.search_voice_btn = global::HelloworldXamarin.Droid.Resource.Id.search_voice_btn;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.selected = global::HelloworldXamarin.Droid.Resource.Id.selected;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.select_dialog_listview = global::HelloworldXamarin.Droid.Resource.Id.select_dialog_listview;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.shellcontent_appbar = global::HelloworldXamarin.Droid.Resource.Id.shellcontent_appbar;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.shellcontent_toolbar = global::HelloworldXamarin.Droid.Resource.Id.shellcontent_toolbar;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.SHIFT = global::HelloworldXamarin.Droid.Resource.Id.SHIFT;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.shortcut = global::HelloworldXamarin.Droid.Resource.Id.shortcut;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.showCustom = global::HelloworldXamarin.Droid.Resource.Id.showCustom;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.showHome = global::HelloworldXamarin.Droid.Resource.Id.showHome;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.showTitle = global::HelloworldXamarin.Droid.Resource.Id.showTitle;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.smallLabel = global::HelloworldXamarin.Droid.Resource.Id.smallLabel;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.snackbar_action = global::HelloworldXamarin.Droid.Resource.Id.snackbar_action;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.snackbar_text = global::HelloworldXamarin.Droid.Resource.Id.snackbar_text;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.snap = global::HelloworldXamarin.Droid.Resource.Id.snap;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.snapMargins = global::HelloworldXamarin.Droid.Resource.Id.snapMargins;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.spacer = global::HelloworldXamarin.Droid.Resource.Id.spacer;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.split_action_bar = global::HelloworldXamarin.Droid.Resource.Id.split_action_bar;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.src_atop = global::HelloworldXamarin.Droid.Resource.Id.src_atop;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.src_in = global::HelloworldXamarin.Droid.Resource.Id.src_in;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.src_over = global::HelloworldXamarin.Droid.Resource.Id.src_over;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.start = global::HelloworldXamarin.Droid.Resource.Id.start;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.status_bar_latest_event_content = global::HelloworldXamarin.Droid.Resource.Id.status_bar_latest_event_content;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.stretch = global::HelloworldXamarin.Droid.Resource.Id.stretch;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.submenuarrow = global::HelloworldXamarin.Droid.Resource.Id.submenuarrow;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.submit_area = global::HelloworldXamarin.Droid.Resource.Id.submit_area;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.SYM = global::HelloworldXamarin.Droid.Resource.Id.SYM;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.tabMode = global::HelloworldXamarin.Droid.Resource.Id.tabMode;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.tag_transition_group = global::HelloworldXamarin.Droid.Resource.Id.tag_transition_group;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.tag_unhandled_key_event_manager = global::HelloworldXamarin.Droid.Resource.Id.tag_unhandled_key_event_manager;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.tag_unhandled_key_listeners = global::HelloworldXamarin.Droid.Resource.Id.tag_unhandled_key_listeners;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.text = global::HelloworldXamarin.Droid.Resource.Id.text;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.text2 = global::HelloworldXamarin.Droid.Resource.Id.text2;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.textinput_counter = global::HelloworldXamarin.Droid.Resource.Id.textinput_counter;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.textinput_error = global::HelloworldXamarin.Droid.Resource.Id.textinput_error;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.textinput_helper_text = global::HelloworldXamarin.Droid.Resource.Id.textinput_helper_text;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.textSpacerNoButtons = global::HelloworldXamarin.Droid.Resource.Id.textSpacerNoButtons;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.textSpacerNoTitle = global::HelloworldXamarin.Droid.Resource.Id.textSpacerNoTitle;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.textStart = global::HelloworldXamarin.Droid.Resource.Id.textStart;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.text_input_password_toggle = global::HelloworldXamarin.Droid.Resource.Id.text_input_password_toggle;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.time = global::HelloworldXamarin.Droid.Resource.Id.time;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.title = global::HelloworldXamarin.Droid.Resource.Id.title;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.titleDividerNoCustom = global::HelloworldXamarin.Droid.Resource.Id.titleDividerNoCustom;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.title_template = global::HelloworldXamarin.Droid.Resource.Id.title_template;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.top = global::HelloworldXamarin.Droid.Resource.Id.top;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.topPanel = global::HelloworldXamarin.Droid.Resource.Id.topPanel;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.touch_outside = global::HelloworldXamarin.Droid.Resource.Id.touch_outside;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.transition_current_scene = global::HelloworldXamarin.Droid.Resource.Id.transition_current_scene;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.transition_layout_save = global::HelloworldXamarin.Droid.Resource.Id.transition_layout_save;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.transition_position = global::HelloworldXamarin.Droid.Resource.Id.transition_position;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.transition_scene_layoutid_cache = global::HelloworldXamarin.Droid.Resource.Id.transition_scene_layoutid_cache;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.transition_transform = global::HelloworldXamarin.Droid.Resource.Id.transition_transform;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.uniform = global::HelloworldXamarin.Droid.Resource.Id.uniform;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.unlabeled = global::HelloworldXamarin.Droid.Resource.Id.unlabeled;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.up = global::HelloworldXamarin.Droid.Resource.Id.up;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.useLogo = global::HelloworldXamarin.Droid.Resource.Id.useLogo;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.view_offset_helper = global::HelloworldXamarin.Droid.Resource.Id.view_offset_helper;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.visible = global::HelloworldXamarin.Droid.Resource.Id.visible;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.withText = global::HelloworldXamarin.Droid.Resource.Id.withText;
+ global::Xamarin.Forms.Platform.Android.Resource.Id.wrap_content = global::HelloworldXamarin.Droid.Resource.Id.wrap_content;
+ global::Xamarin.Forms.Platform.Android.Resource.Integer.abc_config_activityDefaultDur = global::HelloworldXamarin.Droid.Resource.Integer.abc_config_activityDefaultDur;
+ global::Xamarin.Forms.Platform.Android.Resource.Integer.abc_config_activityShortDur = global::HelloworldXamarin.Droid.Resource.Integer.abc_config_activityShortDur;
+ global::Xamarin.Forms.Platform.Android.Resource.Integer.app_bar_elevation_anim_duration = global::HelloworldXamarin.Droid.Resource.Integer.app_bar_elevation_anim_duration;
+ global::Xamarin.Forms.Platform.Android.Resource.Integer.bottom_sheet_slide_duration = global::HelloworldXamarin.Droid.Resource.Integer.bottom_sheet_slide_duration;
+ global::Xamarin.Forms.Platform.Android.Resource.Integer.cancel_button_image_alpha = global::HelloworldXamarin.Droid.Resource.Integer.cancel_button_image_alpha;
+ global::Xamarin.Forms.Platform.Android.Resource.Integer.config_tooltipAnimTime = global::HelloworldXamarin.Droid.Resource.Integer.config_tooltipAnimTime;
+ global::Xamarin.Forms.Platform.Android.Resource.Integer.design_snackbar_text_max_lines = global::HelloworldXamarin.Droid.Resource.Integer.design_snackbar_text_max_lines;
+ global::Xamarin.Forms.Platform.Android.Resource.Integer.design_tab_indicator_anim_duration_ms = global::HelloworldXamarin.Droid.Resource.Integer.design_tab_indicator_anim_duration_ms;
+ global::Xamarin.Forms.Platform.Android.Resource.Integer.hide_password_duration = global::HelloworldXamarin.Droid.Resource.Integer.hide_password_duration;
+ global::Xamarin.Forms.Platform.Android.Resource.Integer.mtrl_btn_anim_delay_ms = global::HelloworldXamarin.Droid.Resource.Integer.mtrl_btn_anim_delay_ms;
+ global::Xamarin.Forms.Platform.Android.Resource.Integer.mtrl_btn_anim_duration_ms = global::HelloworldXamarin.Droid.Resource.Integer.mtrl_btn_anim_duration_ms;
+ global::Xamarin.Forms.Platform.Android.Resource.Integer.mtrl_chip_anim_duration = global::HelloworldXamarin.Droid.Resource.Integer.mtrl_chip_anim_duration;
+ global::Xamarin.Forms.Platform.Android.Resource.Integer.mtrl_tab_indicator_anim_duration_ms = global::HelloworldXamarin.Droid.Resource.Integer.mtrl_tab_indicator_anim_duration_ms;
+ global::Xamarin.Forms.Platform.Android.Resource.Integer.show_password_duration = global::HelloworldXamarin.Droid.Resource.Integer.show_password_duration;
+ global::Xamarin.Forms.Platform.Android.Resource.Integer.status_bar_notification_info_maxnum = global::HelloworldXamarin.Droid.Resource.Integer.status_bar_notification_info_maxnum;
+ global::Xamarin.Forms.Platform.Android.Resource.Interpolator.mtrl_fast_out_linear_in = global::HelloworldXamarin.Droid.Resource.Interpolator.mtrl_fast_out_linear_in;
+ global::Xamarin.Forms.Platform.Android.Resource.Interpolator.mtrl_fast_out_slow_in = global::HelloworldXamarin.Droid.Resource.Interpolator.mtrl_fast_out_slow_in;
+ global::Xamarin.Forms.Platform.Android.Resource.Interpolator.mtrl_linear = global::HelloworldXamarin.Droid.Resource.Interpolator.mtrl_linear;
+ global::Xamarin.Forms.Platform.Android.Resource.Interpolator.mtrl_linear_out_slow_in = global::HelloworldXamarin.Droid.Resource.Interpolator.mtrl_linear_out_slow_in;
+ global::Xamarin.Forms.Platform.Android.Resource.Layout.abc_action_bar_title_item = global::HelloworldXamarin.Droid.Resource.Layout.abc_action_bar_title_item;
+ global::Xamarin.Forms.Platform.Android.Resource.Layout.abc_action_bar_up_container = global::HelloworldXamarin.Droid.Resource.Layout.abc_action_bar_up_container;
+ global::Xamarin.Forms.Platform.Android.Resource.Layout.abc_action_menu_item_layout = global::HelloworldXamarin.Droid.Resource.Layout.abc_action_menu_item_layout;
+ global::Xamarin.Forms.Platform.Android.Resource.Layout.abc_action_menu_layout = global::HelloworldXamarin.Droid.Resource.Layout.abc_action_menu_layout;
+ global::Xamarin.Forms.Platform.Android.Resource.Layout.abc_action_mode_bar = global::HelloworldXamarin.Droid.Resource.Layout.abc_action_mode_bar;
+ global::Xamarin.Forms.Platform.Android.Resource.Layout.abc_action_mode_close_item_material = global::HelloworldXamarin.Droid.Resource.Layout.abc_action_mode_close_item_material;
+ global::Xamarin.Forms.Platform.Android.Resource.Layout.abc_activity_chooser_view = global::HelloworldXamarin.Droid.Resource.Layout.abc_activity_chooser_view;
+ global::Xamarin.Forms.Platform.Android.Resource.Layout.abc_activity_chooser_view_list_item = global::HelloworldXamarin.Droid.Resource.Layout.abc_activity_chooser_view_list_item;
+ global::Xamarin.Forms.Platform.Android.Resource.Layout.abc_alert_dialog_button_bar_material = global::HelloworldXamarin.Droid.Resource.Layout.abc_alert_dialog_button_bar_material;
+ global::Xamarin.Forms.Platform.Android.Resource.Layout.abc_alert_dialog_material = global::HelloworldXamarin.Droid.Resource.Layout.abc_alert_dialog_material;
+ global::Xamarin.Forms.Platform.Android.Resource.Layout.abc_alert_dialog_title_material = global::HelloworldXamarin.Droid.Resource.Layout.abc_alert_dialog_title_material;
+ global::Xamarin.Forms.Platform.Android.Resource.Layout.abc_cascading_menu_item_layout = global::HelloworldXamarin.Droid.Resource.Layout.abc_cascading_menu_item_layout;
+ global::Xamarin.Forms.Platform.Android.Resource.Layout.abc_dialog_title_material = global::HelloworldXamarin.Droid.Resource.Layout.abc_dialog_title_material;
+ global::Xamarin.Forms.Platform.Android.Resource.Layout.abc_expanded_menu_layout = global::HelloworldXamarin.Droid.Resource.Layout.abc_expanded_menu_layout;
+ global::Xamarin.Forms.Platform.Android.Resource.Layout.abc_list_menu_item_checkbox = global::HelloworldXamarin.Droid.Resource.Layout.abc_list_menu_item_checkbox;
+ global::Xamarin.Forms.Platform.Android.Resource.Layout.abc_list_menu_item_icon = global::HelloworldXamarin.Droid.Resource.Layout.abc_list_menu_item_icon;
+ global::Xamarin.Forms.Platform.Android.Resource.Layout.abc_list_menu_item_layout = global::HelloworldXamarin.Droid.Resource.Layout.abc_list_menu_item_layout;
+ global::Xamarin.Forms.Platform.Android.Resource.Layout.abc_list_menu_item_radio = global::HelloworldXamarin.Droid.Resource.Layout.abc_list_menu_item_radio;
+ global::Xamarin.Forms.Platform.Android.Resource.Layout.abc_popup_menu_header_item_layout = global::HelloworldXamarin.Droid.Resource.Layout.abc_popup_menu_header_item_layout;
+ global::Xamarin.Forms.Platform.Android.Resource.Layout.abc_popup_menu_item_layout = global::HelloworldXamarin.Droid.Resource.Layout.abc_popup_menu_item_layout;
+ global::Xamarin.Forms.Platform.Android.Resource.Layout.abc_screen_content_include = global::HelloworldXamarin.Droid.Resource.Layout.abc_screen_content_include;
+ global::Xamarin.Forms.Platform.Android.Resource.Layout.abc_screen_simple = global::HelloworldXamarin.Droid.Resource.Layout.abc_screen_simple;
+ global::Xamarin.Forms.Platform.Android.Resource.Layout.abc_screen_simple_overlay_action_mode = global::HelloworldXamarin.Droid.Resource.Layout.abc_screen_simple_overlay_action_mode;
+ global::Xamarin.Forms.Platform.Android.Resource.Layout.abc_screen_toolbar = global::HelloworldXamarin.Droid.Resource.Layout.abc_screen_toolbar;
+ global::Xamarin.Forms.Platform.Android.Resource.Layout.abc_search_dropdown_item_icons_2line = global::HelloworldXamarin.Droid.Resource.Layout.abc_search_dropdown_item_icons_2line;
+ global::Xamarin.Forms.Platform.Android.Resource.Layout.abc_search_view = global::HelloworldXamarin.Droid.Resource.Layout.abc_search_view;
+ global::Xamarin.Forms.Platform.Android.Resource.Layout.abc_select_dialog_material = global::HelloworldXamarin.Droid.Resource.Layout.abc_select_dialog_material;
+ global::Xamarin.Forms.Platform.Android.Resource.Layout.abc_tooltip = global::HelloworldXamarin.Droid.Resource.Layout.abc_tooltip;
+ global::Xamarin.Forms.Platform.Android.Resource.Layout.BottomTabLayout = global::HelloworldXamarin.Droid.Resource.Layout.BottomTabLayout;
+ global::Xamarin.Forms.Platform.Android.Resource.Layout.design_bottom_navigation_item = global::HelloworldXamarin.Droid.Resource.Layout.design_bottom_navigation_item;
+ global::Xamarin.Forms.Platform.Android.Resource.Layout.design_bottom_sheet_dialog = global::HelloworldXamarin.Droid.Resource.Layout.design_bottom_sheet_dialog;
+ global::Xamarin.Forms.Platform.Android.Resource.Layout.design_layout_snackbar = global::HelloworldXamarin.Droid.Resource.Layout.design_layout_snackbar;
+ global::Xamarin.Forms.Platform.Android.Resource.Layout.design_layout_snackbar_include = global::HelloworldXamarin.Droid.Resource.Layout.design_layout_snackbar_include;
+ global::Xamarin.Forms.Platform.Android.Resource.Layout.design_layout_tab_icon = global::HelloworldXamarin.Droid.Resource.Layout.design_layout_tab_icon;
+ global::Xamarin.Forms.Platform.Android.Resource.Layout.design_layout_tab_text = global::HelloworldXamarin.Droid.Resource.Layout.design_layout_tab_text;
+ global::Xamarin.Forms.Platform.Android.Resource.Layout.design_menu_item_action_area = global::HelloworldXamarin.Droid.Resource.Layout.design_menu_item_action_area;
+ global::Xamarin.Forms.Platform.Android.Resource.Layout.design_navigation_item = global::HelloworldXamarin.Droid.Resource.Layout.design_navigation_item;
+ global::Xamarin.Forms.Platform.Android.Resource.Layout.design_navigation_item_header = global::HelloworldXamarin.Droid.Resource.Layout.design_navigation_item_header;
+ global::Xamarin.Forms.Platform.Android.Resource.Layout.design_navigation_item_separator = global::HelloworldXamarin.Droid.Resource.Layout.design_navigation_item_separator;
+ global::Xamarin.Forms.Platform.Android.Resource.Layout.design_navigation_item_subheader = global::HelloworldXamarin.Droid.Resource.Layout.design_navigation_item_subheader;
+ global::Xamarin.Forms.Platform.Android.Resource.Layout.design_navigation_menu = global::HelloworldXamarin.Droid.Resource.Layout.design_navigation_menu;
+ global::Xamarin.Forms.Platform.Android.Resource.Layout.design_navigation_menu_item = global::HelloworldXamarin.Droid.Resource.Layout.design_navigation_menu_item;
+ global::Xamarin.Forms.Platform.Android.Resource.Layout.design_text_input_password_icon = global::HelloworldXamarin.Droid.Resource.Layout.design_text_input_password_icon;
+ global::Xamarin.Forms.Platform.Android.Resource.Layout.FlyoutContent = global::HelloworldXamarin.Droid.Resource.Layout.FlyoutContent;
+ global::Xamarin.Forms.Platform.Android.Resource.Layout.mtrl_layout_snackbar = global::HelloworldXamarin.Droid.Resource.Layout.mtrl_layout_snackbar;
+ global::Xamarin.Forms.Platform.Android.Resource.Layout.mtrl_layout_snackbar_include = global::HelloworldXamarin.Droid.Resource.Layout.mtrl_layout_snackbar_include;
+ global::Xamarin.Forms.Platform.Android.Resource.Layout.notification_action = global::HelloworldXamarin.Droid.Resource.Layout.notification_action;
+ global::Xamarin.Forms.Platform.Android.Resource.Layout.notification_action_tombstone = global::HelloworldXamarin.Droid.Resource.Layout.notification_action_tombstone;
+ global::Xamarin.Forms.Platform.Android.Resource.Layout.notification_media_action = global::HelloworldXamarin.Droid.Resource.Layout.notification_media_action;
+ global::Xamarin.Forms.Platform.Android.Resource.Layout.notification_media_cancel_action = global::HelloworldXamarin.Droid.Resource.Layout.notification_media_cancel_action;
+ global::Xamarin.Forms.Platform.Android.Resource.Layout.notification_template_big_media = global::HelloworldXamarin.Droid.Resource.Layout.notification_template_big_media;
+ global::Xamarin.Forms.Platform.Android.Resource.Layout.notification_template_big_media_custom = global::HelloworldXamarin.Droid.Resource.Layout.notification_template_big_media_custom;
+ global::Xamarin.Forms.Platform.Android.Resource.Layout.notification_template_big_media_narrow = global::HelloworldXamarin.Droid.Resource.Layout.notification_template_big_media_narrow;
+ global::Xamarin.Forms.Platform.Android.Resource.Layout.notification_template_big_media_narrow_custom = global::HelloworldXamarin.Droid.Resource.Layout.notification_template_big_media_narrow_custom;
+ global::Xamarin.Forms.Platform.Android.Resource.Layout.notification_template_custom_big = global::HelloworldXamarin.Droid.Resource.Layout.notification_template_custom_big;
+ global::Xamarin.Forms.Platform.Android.Resource.Layout.notification_template_icon_group = global::HelloworldXamarin.Droid.Resource.Layout.notification_template_icon_group;
+ global::Xamarin.Forms.Platform.Android.Resource.Layout.notification_template_lines_media = global::HelloworldXamarin.Droid.Resource.Layout.notification_template_lines_media;
+ global::Xamarin.Forms.Platform.Android.Resource.Layout.notification_template_media = global::HelloworldXamarin.Droid.Resource.Layout.notification_template_media;
+ global::Xamarin.Forms.Platform.Android.Resource.Layout.notification_template_media_custom = global::HelloworldXamarin.Droid.Resource.Layout.notification_template_media_custom;
+ global::Xamarin.Forms.Platform.Android.Resource.Layout.notification_template_part_chronometer = global::HelloworldXamarin.Droid.Resource.Layout.notification_template_part_chronometer;
+ global::Xamarin.Forms.Platform.Android.Resource.Layout.notification_template_part_time = global::HelloworldXamarin.Droid.Resource.Layout.notification_template_part_time;
+ global::Xamarin.Forms.Platform.Android.Resource.Layout.RootLayout = global::HelloworldXamarin.Droid.Resource.Layout.RootLayout;
+ global::Xamarin.Forms.Platform.Android.Resource.Layout.select_dialog_item_material = global::HelloworldXamarin.Droid.Resource.Layout.select_dialog_item_material;
+ global::Xamarin.Forms.Platform.Android.Resource.Layout.select_dialog_multichoice_material = global::HelloworldXamarin.Droid.Resource.Layout.select_dialog_multichoice_material;
+ global::Xamarin.Forms.Platform.Android.Resource.Layout.select_dialog_singlechoice_material = global::HelloworldXamarin.Droid.Resource.Layout.select_dialog_singlechoice_material;
+ global::Xamarin.Forms.Platform.Android.Resource.Layout.ShellContent = global::HelloworldXamarin.Droid.Resource.Layout.ShellContent;
+ global::Xamarin.Forms.Platform.Android.Resource.Layout.support_simple_spinner_dropdown_item = global::HelloworldXamarin.Droid.Resource.Layout.support_simple_spinner_dropdown_item;
+ global::Xamarin.Forms.Platform.Android.Resource.String.abc_action_bar_home_description = global::HelloworldXamarin.Droid.Resource.String.abc_action_bar_home_description;
+ global::Xamarin.Forms.Platform.Android.Resource.String.abc_action_bar_up_description = global::HelloworldXamarin.Droid.Resource.String.abc_action_bar_up_description;
+ global::Xamarin.Forms.Platform.Android.Resource.String.abc_action_menu_overflow_description = global::HelloworldXamarin.Droid.Resource.String.abc_action_menu_overflow_description;
+ global::Xamarin.Forms.Platform.Android.Resource.String.abc_action_mode_done = global::HelloworldXamarin.Droid.Resource.String.abc_action_mode_done;
+ global::Xamarin.Forms.Platform.Android.Resource.String.abc_activitychooserview_choose_application = global::HelloworldXamarin.Droid.Resource.String.abc_activitychooserview_choose_application;
+ global::Xamarin.Forms.Platform.Android.Resource.String.abc_activity_chooser_view_see_all = global::HelloworldXamarin.Droid.Resource.String.abc_activity_chooser_view_see_all;
+ global::Xamarin.Forms.Platform.Android.Resource.String.abc_capital_off = global::HelloworldXamarin.Droid.Resource.String.abc_capital_off;
+ global::Xamarin.Forms.Platform.Android.Resource.String.abc_capital_on = global::HelloworldXamarin.Droid.Resource.String.abc_capital_on;
+ global::Xamarin.Forms.Platform.Android.Resource.String.abc_font_family_body_1_material = global::HelloworldXamarin.Droid.Resource.String.abc_font_family_body_1_material;
+ global::Xamarin.Forms.Platform.Android.Resource.String.abc_font_family_body_2_material = global::HelloworldXamarin.Droid.Resource.String.abc_font_family_body_2_material;
+ global::Xamarin.Forms.Platform.Android.Resource.String.abc_font_family_button_material = global::HelloworldXamarin.Droid.Resource.String.abc_font_family_button_material;
+ global::Xamarin.Forms.Platform.Android.Resource.String.abc_font_family_caption_material = global::HelloworldXamarin.Droid.Resource.String.abc_font_family_caption_material;
+ global::Xamarin.Forms.Platform.Android.Resource.String.abc_font_family_display_1_material = global::HelloworldXamarin.Droid.Resource.String.abc_font_family_display_1_material;
+ global::Xamarin.Forms.Platform.Android.Resource.String.abc_font_family_display_2_material = global::HelloworldXamarin.Droid.Resource.String.abc_font_family_display_2_material;
+ global::Xamarin.Forms.Platform.Android.Resource.String.abc_font_family_display_3_material = global::HelloworldXamarin.Droid.Resource.String.abc_font_family_display_3_material;
+ global::Xamarin.Forms.Platform.Android.Resource.String.abc_font_family_display_4_material = global::HelloworldXamarin.Droid.Resource.String.abc_font_family_display_4_material;
+ global::Xamarin.Forms.Platform.Android.Resource.String.abc_font_family_headline_material = global::HelloworldXamarin.Droid.Resource.String.abc_font_family_headline_material;
+ global::Xamarin.Forms.Platform.Android.Resource.String.abc_font_family_menu_material = global::HelloworldXamarin.Droid.Resource.String.abc_font_family_menu_material;
+ global::Xamarin.Forms.Platform.Android.Resource.String.abc_font_family_subhead_material = global::HelloworldXamarin.Droid.Resource.String.abc_font_family_subhead_material;
+ global::Xamarin.Forms.Platform.Android.Resource.String.abc_font_family_title_material = global::HelloworldXamarin.Droid.Resource.String.abc_font_family_title_material;
+ global::Xamarin.Forms.Platform.Android.Resource.String.abc_menu_alt_shortcut_label = global::HelloworldXamarin.Droid.Resource.String.abc_menu_alt_shortcut_label;
+ global::Xamarin.Forms.Platform.Android.Resource.String.abc_menu_ctrl_shortcut_label = global::HelloworldXamarin.Droid.Resource.String.abc_menu_ctrl_shortcut_label;
+ global::Xamarin.Forms.Platform.Android.Resource.String.abc_menu_delete_shortcut_label = global::HelloworldXamarin.Droid.Resource.String.abc_menu_delete_shortcut_label;
+ global::Xamarin.Forms.Platform.Android.Resource.String.abc_menu_enter_shortcut_label = global::HelloworldXamarin.Droid.Resource.String.abc_menu_enter_shortcut_label;
+ global::Xamarin.Forms.Platform.Android.Resource.String.abc_menu_function_shortcut_label = global::HelloworldXamarin.Droid.Resource.String.abc_menu_function_shortcut_label;
+ global::Xamarin.Forms.Platform.Android.Resource.String.abc_menu_meta_shortcut_label = global::HelloworldXamarin.Droid.Resource.String.abc_menu_meta_shortcut_label;
+ global::Xamarin.Forms.Platform.Android.Resource.String.abc_menu_shift_shortcut_label = global::HelloworldXamarin.Droid.Resource.String.abc_menu_shift_shortcut_label;
+ global::Xamarin.Forms.Platform.Android.Resource.String.abc_menu_space_shortcut_label = global::HelloworldXamarin.Droid.Resource.String.abc_menu_space_shortcut_label;
+ global::Xamarin.Forms.Platform.Android.Resource.String.abc_menu_sym_shortcut_label = global::HelloworldXamarin.Droid.Resource.String.abc_menu_sym_shortcut_label;
+ global::Xamarin.Forms.Platform.Android.Resource.String.abc_prepend_shortcut_label = global::HelloworldXamarin.Droid.Resource.String.abc_prepend_shortcut_label;
+ global::Xamarin.Forms.Platform.Android.Resource.String.abc_searchview_description_clear = global::HelloworldXamarin.Droid.Resource.String.abc_searchview_description_clear;
+ global::Xamarin.Forms.Platform.Android.Resource.String.abc_searchview_description_query = global::HelloworldXamarin.Droid.Resource.String.abc_searchview_description_query;
+ global::Xamarin.Forms.Platform.Android.Resource.String.abc_searchview_description_search = global::HelloworldXamarin.Droid.Resource.String.abc_searchview_description_search;
+ global::Xamarin.Forms.Platform.Android.Resource.String.abc_searchview_description_submit = global::HelloworldXamarin.Droid.Resource.String.abc_searchview_description_submit;
+ global::Xamarin.Forms.Platform.Android.Resource.String.abc_searchview_description_voice = global::HelloworldXamarin.Droid.Resource.String.abc_searchview_description_voice;
+ global::Xamarin.Forms.Platform.Android.Resource.String.abc_search_hint = global::HelloworldXamarin.Droid.Resource.String.abc_search_hint;
+ global::Xamarin.Forms.Platform.Android.Resource.String.abc_shareactionprovider_share_with = global::HelloworldXamarin.Droid.Resource.String.abc_shareactionprovider_share_with;
+ global::Xamarin.Forms.Platform.Android.Resource.String.abc_shareactionprovider_share_with_application = global::HelloworldXamarin.Droid.Resource.String.abc_shareactionprovider_share_with_application;
+ global::Xamarin.Forms.Platform.Android.Resource.String.abc_toolbar_collapse_description = global::HelloworldXamarin.Droid.Resource.String.abc_toolbar_collapse_description;
+ global::Xamarin.Forms.Platform.Android.Resource.String.appbar_scrolling_view_behavior = global::HelloworldXamarin.Droid.Resource.String.appbar_scrolling_view_behavior;
+ global::Xamarin.Forms.Platform.Android.Resource.String.bottom_sheet_behavior = global::HelloworldXamarin.Droid.Resource.String.bottom_sheet_behavior;
+ global::Xamarin.Forms.Platform.Android.Resource.String.character_counter_content_description = global::HelloworldXamarin.Droid.Resource.String.character_counter_content_description;
+ global::Xamarin.Forms.Platform.Android.Resource.String.character_counter_pattern = global::HelloworldXamarin.Droid.Resource.String.character_counter_pattern;
+ global::Xamarin.Forms.Platform.Android.Resource.String.fab_transformation_scrim_behavior = global::HelloworldXamarin.Droid.Resource.String.fab_transformation_scrim_behavior;
+ global::Xamarin.Forms.Platform.Android.Resource.String.fab_transformation_sheet_behavior = global::HelloworldXamarin.Droid.Resource.String.fab_transformation_sheet_behavior;
+ global::Xamarin.Forms.Platform.Android.Resource.String.hide_bottom_view_on_scroll_behavior = global::HelloworldXamarin.Droid.Resource.String.hide_bottom_view_on_scroll_behavior;
+ global::Xamarin.Forms.Platform.Android.Resource.String.mtrl_chip_close_icon_content_description = global::HelloworldXamarin.Droid.Resource.String.mtrl_chip_close_icon_content_description;
+ global::Xamarin.Forms.Platform.Android.Resource.String.password_toggle_content_description = global::HelloworldXamarin.Droid.Resource.String.password_toggle_content_description;
+ global::Xamarin.Forms.Platform.Android.Resource.String.path_password_eye = global::HelloworldXamarin.Droid.Resource.String.path_password_eye;
+ global::Xamarin.Forms.Platform.Android.Resource.String.path_password_eye_mask_strike_through = global::HelloworldXamarin.Droid.Resource.String.path_password_eye_mask_strike_through;
+ global::Xamarin.Forms.Platform.Android.Resource.String.path_password_eye_mask_visible = global::HelloworldXamarin.Droid.Resource.String.path_password_eye_mask_visible;
+ global::Xamarin.Forms.Platform.Android.Resource.String.path_password_strike_through = global::HelloworldXamarin.Droid.Resource.String.path_password_strike_through;
+ global::Xamarin.Forms.Platform.Android.Resource.String.search_menu_title = global::HelloworldXamarin.Droid.Resource.String.search_menu_title;
+ global::Xamarin.Forms.Platform.Android.Resource.String.status_bar_notification_info_overflow = global::HelloworldXamarin.Droid.Resource.String.status_bar_notification_info_overflow;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.AlertDialog_AppCompat = global::HelloworldXamarin.Droid.Resource.Style.AlertDialog_AppCompat;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.AlertDialog_AppCompat_Light = global::HelloworldXamarin.Droid.Resource.Style.AlertDialog_AppCompat_Light;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Animation_AppCompat_Dialog = global::HelloworldXamarin.Droid.Resource.Style.Animation_AppCompat_Dialog;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Animation_AppCompat_DropDownUp = global::HelloworldXamarin.Droid.Resource.Style.Animation_AppCompat_DropDownUp;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Animation_AppCompat_Tooltip = global::HelloworldXamarin.Droid.Resource.Style.Animation_AppCompat_Tooltip;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Animation_Design_BottomSheetDialog = global::HelloworldXamarin.Droid.Resource.Style.Animation_Design_BottomSheetDialog;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.AppCompatDialogStyle = global::HelloworldXamarin.Droid.Resource.Style.AppCompatDialogStyle;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_AlertDialog_AppCompat = global::HelloworldXamarin.Droid.Resource.Style.Base_AlertDialog_AppCompat;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_AlertDialog_AppCompat_Light = global::HelloworldXamarin.Droid.Resource.Style.Base_AlertDialog_AppCompat_Light;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Animation_AppCompat_Dialog = global::HelloworldXamarin.Droid.Resource.Style.Base_Animation_AppCompat_Dialog;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Animation_AppCompat_DropDownUp = global::HelloworldXamarin.Droid.Resource.Style.Base_Animation_AppCompat_DropDownUp;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Animation_AppCompat_Tooltip = global::HelloworldXamarin.Droid.Resource.Style.Base_Animation_AppCompat_Tooltip;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_CardView = global::HelloworldXamarin.Droid.Resource.Style.Base_CardView;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_DialogWindowTitleBackground_AppCompat = global::HelloworldXamarin.Droid.Resource.Style.Base_DialogWindowTitleBackground_AppCompat;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_DialogWindowTitle_AppCompat = global::HelloworldXamarin.Droid.Resource.Style.Base_DialogWindowTitle_AppCompat;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_TextAppearance_AppCompat = global::HelloworldXamarin.Droid.Resource.Style.Base_TextAppearance_AppCompat;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_TextAppearance_AppCompat_Body1 = global::HelloworldXamarin.Droid.Resource.Style.Base_TextAppearance_AppCompat_Body1;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_TextAppearance_AppCompat_Body2 = global::HelloworldXamarin.Droid.Resource.Style.Base_TextAppearance_AppCompat_Body2;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_TextAppearance_AppCompat_Button = global::HelloworldXamarin.Droid.Resource.Style.Base_TextAppearance_AppCompat_Button;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_TextAppearance_AppCompat_Caption = global::HelloworldXamarin.Droid.Resource.Style.Base_TextAppearance_AppCompat_Caption;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_TextAppearance_AppCompat_Display1 = global::HelloworldXamarin.Droid.Resource.Style.Base_TextAppearance_AppCompat_Display1;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_TextAppearance_AppCompat_Display2 = global::HelloworldXamarin.Droid.Resource.Style.Base_TextAppearance_AppCompat_Display2;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_TextAppearance_AppCompat_Display3 = global::HelloworldXamarin.Droid.Resource.Style.Base_TextAppearance_AppCompat_Display3;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_TextAppearance_AppCompat_Display4 = global::HelloworldXamarin.Droid.Resource.Style.Base_TextAppearance_AppCompat_Display4;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_TextAppearance_AppCompat_Headline = global::HelloworldXamarin.Droid.Resource.Style.Base_TextAppearance_AppCompat_Headline;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_TextAppearance_AppCompat_Inverse = global::HelloworldXamarin.Droid.Resource.Style.Base_TextAppearance_AppCompat_Inverse;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_TextAppearance_AppCompat_Large = global::HelloworldXamarin.Droid.Resource.Style.Base_TextAppearance_AppCompat_Large;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_TextAppearance_AppCompat_Large_Inverse = global::HelloworldXamarin.Droid.Resource.Style.Base_TextAppearance_AppCompat_Large_Inverse;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_TextAppearance_AppCompat_Light_Widget_PopupMenu_Large = global::HelloworldXamarin.Droid.Resource.Style.Base_TextAppearance_AppCompat_Light_Widget_PopupMenu_Large;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_TextAppearance_AppCompat_Light_Widget_PopupMenu_Small = global::HelloworldXamarin.Droid.Resource.Style.Base_TextAppearance_AppCompat_Light_Widget_PopupMenu_Small;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_TextAppearance_AppCompat_Medium = global::HelloworldXamarin.Droid.Resource.Style.Base_TextAppearance_AppCompat_Medium;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_TextAppearance_AppCompat_Medium_Inverse = global::HelloworldXamarin.Droid.Resource.Style.Base_TextAppearance_AppCompat_Medium_Inverse;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_TextAppearance_AppCompat_Menu = global::HelloworldXamarin.Droid.Resource.Style.Base_TextAppearance_AppCompat_Menu;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_TextAppearance_AppCompat_SearchResult = global::HelloworldXamarin.Droid.Resource.Style.Base_TextAppearance_AppCompat_SearchResult;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_TextAppearance_AppCompat_SearchResult_Subtitle = global::HelloworldXamarin.Droid.Resource.Style.Base_TextAppearance_AppCompat_SearchResult_Subtitle;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_TextAppearance_AppCompat_SearchResult_Title = global::HelloworldXamarin.Droid.Resource.Style.Base_TextAppearance_AppCompat_SearchResult_Title;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_TextAppearance_AppCompat_Small = global::HelloworldXamarin.Droid.Resource.Style.Base_TextAppearance_AppCompat_Small;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_TextAppearance_AppCompat_Small_Inverse = global::HelloworldXamarin.Droid.Resource.Style.Base_TextAppearance_AppCompat_Small_Inverse;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_TextAppearance_AppCompat_Subhead = global::HelloworldXamarin.Droid.Resource.Style.Base_TextAppearance_AppCompat_Subhead;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_TextAppearance_AppCompat_Subhead_Inverse = global::HelloworldXamarin.Droid.Resource.Style.Base_TextAppearance_AppCompat_Subhead_Inverse;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_TextAppearance_AppCompat_Title = global::HelloworldXamarin.Droid.Resource.Style.Base_TextAppearance_AppCompat_Title;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_TextAppearance_AppCompat_Title_Inverse = global::HelloworldXamarin.Droid.Resource.Style.Base_TextAppearance_AppCompat_Title_Inverse;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_TextAppearance_AppCompat_Tooltip = global::HelloworldXamarin.Droid.Resource.Style.Base_TextAppearance_AppCompat_Tooltip;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_TextAppearance_AppCompat_Widget_ActionBar_Menu = global::HelloworldXamarin.Droid.Resource.Style.Base_TextAppearance_AppCompat_Widget_ActionBar_Menu;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_TextAppearance_AppCompat_Widget_ActionBar_Subtitle = global::HelloworldXamarin.Droid.Resource.Style.Base_TextAppearance_AppCompat_Widget_ActionBar_Subtitle;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_TextAppearance_AppCompat_Widget_ActionBar_Subtitle_Inverse = global::HelloworldXamarin.Droid.Resource.Style.Base_TextAppearance_AppCompat_Widget_ActionBar_Subtitle_Inverse;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_TextAppearance_AppCompat_Widget_ActionBar_Title = global::HelloworldXamarin.Droid.Resource.Style.Base_TextAppearance_AppCompat_Widget_ActionBar_Title;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_TextAppearance_AppCompat_Widget_ActionBar_Title_Inverse = global::HelloworldXamarin.Droid.Resource.Style.Base_TextAppearance_AppCompat_Widget_ActionBar_Title_Inverse;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_TextAppearance_AppCompat_Widget_ActionMode_Subtitle = global::HelloworldXamarin.Droid.Resource.Style.Base_TextAppearance_AppCompat_Widget_ActionMode_Subtitle;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_TextAppearance_AppCompat_Widget_ActionMode_Title = global::HelloworldXamarin.Droid.Resource.Style.Base_TextAppearance_AppCompat_Widget_ActionMode_Title;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_TextAppearance_AppCompat_Widget_Button = global::HelloworldXamarin.Droid.Resource.Style.Base_TextAppearance_AppCompat_Widget_Button;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_TextAppearance_AppCompat_Widget_Button_Borderless_Colored = global::HelloworldXamarin.Droid.Resource.Style.Base_TextAppearance_AppCompat_Widget_Button_Borderless_Colored;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_TextAppearance_AppCompat_Widget_Button_Colored = global::HelloworldXamarin.Droid.Resource.Style.Base_TextAppearance_AppCompat_Widget_Button_Colored;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_TextAppearance_AppCompat_Widget_Button_Inverse = global::HelloworldXamarin.Droid.Resource.Style.Base_TextAppearance_AppCompat_Widget_Button_Inverse;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_TextAppearance_AppCompat_Widget_DropDownItem = global::HelloworldXamarin.Droid.Resource.Style.Base_TextAppearance_AppCompat_Widget_DropDownItem;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_TextAppearance_AppCompat_Widget_PopupMenu_Header = global::HelloworldXamarin.Droid.Resource.Style.Base_TextAppearance_AppCompat_Widget_PopupMenu_Header;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_TextAppearance_AppCompat_Widget_PopupMenu_Large = global::HelloworldXamarin.Droid.Resource.Style.Base_TextAppearance_AppCompat_Widget_PopupMenu_Large;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_TextAppearance_AppCompat_Widget_PopupMenu_Small = global::HelloworldXamarin.Droid.Resource.Style.Base_TextAppearance_AppCompat_Widget_PopupMenu_Small;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_TextAppearance_AppCompat_Widget_Switch = global::HelloworldXamarin.Droid.Resource.Style.Base_TextAppearance_AppCompat_Widget_Switch;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_TextAppearance_AppCompat_Widget_TextView_SpinnerItem = global::HelloworldXamarin.Droid.Resource.Style.Base_TextAppearance_AppCompat_Widget_TextView_SpinnerItem;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_TextAppearance_Widget_AppCompat_ExpandedMenu_Item = global::HelloworldXamarin.Droid.Resource.Style.Base_TextAppearance_Widget_AppCompat_ExpandedMenu_Item;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_TextAppearance_Widget_AppCompat_Toolbar_Subtitle = global::HelloworldXamarin.Droid.Resource.Style.Base_TextAppearance_Widget_AppCompat_Toolbar_Subtitle;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_TextAppearance_Widget_AppCompat_Toolbar_Title = global::HelloworldXamarin.Droid.Resource.Style.Base_TextAppearance_Widget_AppCompat_Toolbar_Title;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_ThemeOverlay_AppCompat = global::HelloworldXamarin.Droid.Resource.Style.Base_ThemeOverlay_AppCompat;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_ThemeOverlay_AppCompat_ActionBar = global::HelloworldXamarin.Droid.Resource.Style.Base_ThemeOverlay_AppCompat_ActionBar;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_ThemeOverlay_AppCompat_Dark = global::HelloworldXamarin.Droid.Resource.Style.Base_ThemeOverlay_AppCompat_Dark;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_ThemeOverlay_AppCompat_Dark_ActionBar = global::HelloworldXamarin.Droid.Resource.Style.Base_ThemeOverlay_AppCompat_Dark_ActionBar;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_ThemeOverlay_AppCompat_Dialog = global::HelloworldXamarin.Droid.Resource.Style.Base_ThemeOverlay_AppCompat_Dialog;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_ThemeOverlay_AppCompat_Dialog_Alert = global::HelloworldXamarin.Droid.Resource.Style.Base_ThemeOverlay_AppCompat_Dialog_Alert;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_ThemeOverlay_AppCompat_Light = global::HelloworldXamarin.Droid.Resource.Style.Base_ThemeOverlay_AppCompat_Light;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_ThemeOverlay_MaterialComponents_Dialog = global::HelloworldXamarin.Droid.Resource.Style.Base_ThemeOverlay_MaterialComponents_Dialog;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_ThemeOverlay_MaterialComponents_Dialog_Alert = global::HelloworldXamarin.Droid.Resource.Style.Base_ThemeOverlay_MaterialComponents_Dialog_Alert;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Theme_AppCompat = global::HelloworldXamarin.Droid.Resource.Style.Base_Theme_AppCompat;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Theme_AppCompat_CompactMenu = global::HelloworldXamarin.Droid.Resource.Style.Base_Theme_AppCompat_CompactMenu;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Theme_AppCompat_Dialog = global::HelloworldXamarin.Droid.Resource.Style.Base_Theme_AppCompat_Dialog;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Theme_AppCompat_DialogWhenLarge = global::HelloworldXamarin.Droid.Resource.Style.Base_Theme_AppCompat_DialogWhenLarge;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Theme_AppCompat_Dialog_Alert = global::HelloworldXamarin.Droid.Resource.Style.Base_Theme_AppCompat_Dialog_Alert;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Theme_AppCompat_Dialog_FixedSize = global::HelloworldXamarin.Droid.Resource.Style.Base_Theme_AppCompat_Dialog_FixedSize;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Theme_AppCompat_Dialog_MinWidth = global::HelloworldXamarin.Droid.Resource.Style.Base_Theme_AppCompat_Dialog_MinWidth;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Theme_AppCompat_Light = global::HelloworldXamarin.Droid.Resource.Style.Base_Theme_AppCompat_Light;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Theme_AppCompat_Light_DarkActionBar = global::HelloworldXamarin.Droid.Resource.Style.Base_Theme_AppCompat_Light_DarkActionBar;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Theme_AppCompat_Light_Dialog = global::HelloworldXamarin.Droid.Resource.Style.Base_Theme_AppCompat_Light_Dialog;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Theme_AppCompat_Light_DialogWhenLarge = global::HelloworldXamarin.Droid.Resource.Style.Base_Theme_AppCompat_Light_DialogWhenLarge;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Theme_AppCompat_Light_Dialog_Alert = global::HelloworldXamarin.Droid.Resource.Style.Base_Theme_AppCompat_Light_Dialog_Alert;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Theme_AppCompat_Light_Dialog_FixedSize = global::HelloworldXamarin.Droid.Resource.Style.Base_Theme_AppCompat_Light_Dialog_FixedSize;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Theme_AppCompat_Light_Dialog_MinWidth = global::HelloworldXamarin.Droid.Resource.Style.Base_Theme_AppCompat_Light_Dialog_MinWidth;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Theme_MaterialComponents = global::HelloworldXamarin.Droid.Resource.Style.Base_Theme_MaterialComponents;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Theme_MaterialComponents_Bridge = global::HelloworldXamarin.Droid.Resource.Style.Base_Theme_MaterialComponents_Bridge;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Theme_MaterialComponents_CompactMenu = global::HelloworldXamarin.Droid.Resource.Style.Base_Theme_MaterialComponents_CompactMenu;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Theme_MaterialComponents_Dialog = global::HelloworldXamarin.Droid.Resource.Style.Base_Theme_MaterialComponents_Dialog;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Theme_MaterialComponents_DialogWhenLarge = global::HelloworldXamarin.Droid.Resource.Style.Base_Theme_MaterialComponents_DialogWhenLarge;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Theme_MaterialComponents_Dialog_Alert = global::HelloworldXamarin.Droid.Resource.Style.Base_Theme_MaterialComponents_Dialog_Alert;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Theme_MaterialComponents_Dialog_FixedSize = global::HelloworldXamarin.Droid.Resource.Style.Base_Theme_MaterialComponents_Dialog_FixedSize;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Theme_MaterialComponents_Dialog_MinWidth = global::HelloworldXamarin.Droid.Resource.Style.Base_Theme_MaterialComponents_Dialog_MinWidth;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Theme_MaterialComponents_Light = global::HelloworldXamarin.Droid.Resource.Style.Base_Theme_MaterialComponents_Light;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Theme_MaterialComponents_Light_Bridge = global::HelloworldXamarin.Droid.Resource.Style.Base_Theme_MaterialComponents_Light_Bridge;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Theme_MaterialComponents_Light_DarkActionBar = global::HelloworldXamarin.Droid.Resource.Style.Base_Theme_MaterialComponents_Light_DarkActionBar;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Theme_MaterialComponents_Light_DarkActionBar_Bridge = global::HelloworldXamarin.Droid.Resource.Style.Base_Theme_MaterialComponents_Light_DarkActionBar_Bridge;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Theme_MaterialComponents_Light_Dialog = global::HelloworldXamarin.Droid.Resource.Style.Base_Theme_MaterialComponents_Light_Dialog;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Theme_MaterialComponents_Light_DialogWhenLarge = global::HelloworldXamarin.Droid.Resource.Style.Base_Theme_MaterialComponents_Light_DialogWhenLarge;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Theme_MaterialComponents_Light_Dialog_Alert = global::HelloworldXamarin.Droid.Resource.Style.Base_Theme_MaterialComponents_Light_Dialog_Alert;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Theme_MaterialComponents_Light_Dialog_FixedSize = global::HelloworldXamarin.Droid.Resource.Style.Base_Theme_MaterialComponents_Light_Dialog_FixedSize;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Theme_MaterialComponents_Light_Dialog_MinWidth = global::HelloworldXamarin.Droid.Resource.Style.Base_Theme_MaterialComponents_Light_Dialog_MinWidth;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_V14_ThemeOverlay_MaterialComponents_Dialog = global::HelloworldXamarin.Droid.Resource.Style.Base_V14_ThemeOverlay_MaterialComponents_Dialog;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_V14_ThemeOverlay_MaterialComponents_Dialog_Alert = global::HelloworldXamarin.Droid.Resource.Style.Base_V14_ThemeOverlay_MaterialComponents_Dialog_Alert;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_V14_Theme_MaterialComponents = global::HelloworldXamarin.Droid.Resource.Style.Base_V14_Theme_MaterialComponents;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_V14_Theme_MaterialComponents_Bridge = global::HelloworldXamarin.Droid.Resource.Style.Base_V14_Theme_MaterialComponents_Bridge;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_V14_Theme_MaterialComponents_Dialog = global::HelloworldXamarin.Droid.Resource.Style.Base_V14_Theme_MaterialComponents_Dialog;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_V14_Theme_MaterialComponents_Light = global::HelloworldXamarin.Droid.Resource.Style.Base_V14_Theme_MaterialComponents_Light;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_V14_Theme_MaterialComponents_Light_Bridge = global::HelloworldXamarin.Droid.Resource.Style.Base_V14_Theme_MaterialComponents_Light_Bridge;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_V14_Theme_MaterialComponents_Light_DarkActionBar_Bridge = global::HelloworldXamarin.Droid.Resource.Style.Base_V14_Theme_MaterialComponents_Light_DarkActionBar_Bridge;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_V14_Theme_MaterialComponents_Light_Dialog = global::HelloworldXamarin.Droid.Resource.Style.Base_V14_Theme_MaterialComponents_Light_Dialog;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_V21_ThemeOverlay_AppCompat_Dialog = global::HelloworldXamarin.Droid.Resource.Style.Base_V21_ThemeOverlay_AppCompat_Dialog;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_V21_Theme_AppCompat = global::HelloworldXamarin.Droid.Resource.Style.Base_V21_Theme_AppCompat;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_V21_Theme_AppCompat_Dialog = global::HelloworldXamarin.Droid.Resource.Style.Base_V21_Theme_AppCompat_Dialog;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_V21_Theme_AppCompat_Light = global::HelloworldXamarin.Droid.Resource.Style.Base_V21_Theme_AppCompat_Light;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_V21_Theme_AppCompat_Light_Dialog = global::HelloworldXamarin.Droid.Resource.Style.Base_V21_Theme_AppCompat_Light_Dialog;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_V22_Theme_AppCompat = global::HelloworldXamarin.Droid.Resource.Style.Base_V22_Theme_AppCompat;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_V22_Theme_AppCompat_Light = global::HelloworldXamarin.Droid.Resource.Style.Base_V22_Theme_AppCompat_Light;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_V23_Theme_AppCompat = global::HelloworldXamarin.Droid.Resource.Style.Base_V23_Theme_AppCompat;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_V23_Theme_AppCompat_Light = global::HelloworldXamarin.Droid.Resource.Style.Base_V23_Theme_AppCompat_Light;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_V26_Theme_AppCompat = global::HelloworldXamarin.Droid.Resource.Style.Base_V26_Theme_AppCompat;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_V26_Theme_AppCompat_Light = global::HelloworldXamarin.Droid.Resource.Style.Base_V26_Theme_AppCompat_Light;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_V26_Widget_AppCompat_Toolbar = global::HelloworldXamarin.Droid.Resource.Style.Base_V26_Widget_AppCompat_Toolbar;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_V28_Theme_AppCompat = global::HelloworldXamarin.Droid.Resource.Style.Base_V28_Theme_AppCompat;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_V28_Theme_AppCompat_Light = global::HelloworldXamarin.Droid.Resource.Style.Base_V28_Theme_AppCompat_Light;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_V7_ThemeOverlay_AppCompat_Dialog = global::HelloworldXamarin.Droid.Resource.Style.Base_V7_ThemeOverlay_AppCompat_Dialog;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_V7_Theme_AppCompat = global::HelloworldXamarin.Droid.Resource.Style.Base_V7_Theme_AppCompat;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_V7_Theme_AppCompat_Dialog = global::HelloworldXamarin.Droid.Resource.Style.Base_V7_Theme_AppCompat_Dialog;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_V7_Theme_AppCompat_Light = global::HelloworldXamarin.Droid.Resource.Style.Base_V7_Theme_AppCompat_Light;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_V7_Theme_AppCompat_Light_Dialog = global::HelloworldXamarin.Droid.Resource.Style.Base_V7_Theme_AppCompat_Light_Dialog;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_V7_Widget_AppCompat_AutoCompleteTextView = global::HelloworldXamarin.Droid.Resource.Style.Base_V7_Widget_AppCompat_AutoCompleteTextView;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_V7_Widget_AppCompat_EditText = global::HelloworldXamarin.Droid.Resource.Style.Base_V7_Widget_AppCompat_EditText;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_V7_Widget_AppCompat_Toolbar = global::HelloworldXamarin.Droid.Resource.Style.Base_V7_Widget_AppCompat_Toolbar;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Widget_AppCompat_ActionBar = global::HelloworldXamarin.Droid.Resource.Style.Base_Widget_AppCompat_ActionBar;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Widget_AppCompat_ActionBar_Solid = global::HelloworldXamarin.Droid.Resource.Style.Base_Widget_AppCompat_ActionBar_Solid;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Widget_AppCompat_ActionBar_TabBar = global::HelloworldXamarin.Droid.Resource.Style.Base_Widget_AppCompat_ActionBar_TabBar;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Widget_AppCompat_ActionBar_TabText = global::HelloworldXamarin.Droid.Resource.Style.Base_Widget_AppCompat_ActionBar_TabText;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Widget_AppCompat_ActionBar_TabView = global::HelloworldXamarin.Droid.Resource.Style.Base_Widget_AppCompat_ActionBar_TabView;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Widget_AppCompat_ActionButton = global::HelloworldXamarin.Droid.Resource.Style.Base_Widget_AppCompat_ActionButton;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Widget_AppCompat_ActionButton_CloseMode = global::HelloworldXamarin.Droid.Resource.Style.Base_Widget_AppCompat_ActionButton_CloseMode;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Widget_AppCompat_ActionButton_Overflow = global::HelloworldXamarin.Droid.Resource.Style.Base_Widget_AppCompat_ActionButton_Overflow;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Widget_AppCompat_ActionMode = global::HelloworldXamarin.Droid.Resource.Style.Base_Widget_AppCompat_ActionMode;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Widget_AppCompat_ActivityChooserView = global::HelloworldXamarin.Droid.Resource.Style.Base_Widget_AppCompat_ActivityChooserView;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Widget_AppCompat_AutoCompleteTextView = global::HelloworldXamarin.Droid.Resource.Style.Base_Widget_AppCompat_AutoCompleteTextView;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Widget_AppCompat_Button = global::HelloworldXamarin.Droid.Resource.Style.Base_Widget_AppCompat_Button;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Widget_AppCompat_ButtonBar = global::HelloworldXamarin.Droid.Resource.Style.Base_Widget_AppCompat_ButtonBar;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Widget_AppCompat_ButtonBar_AlertDialog = global::HelloworldXamarin.Droid.Resource.Style.Base_Widget_AppCompat_ButtonBar_AlertDialog;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Widget_AppCompat_Button_Borderless = global::HelloworldXamarin.Droid.Resource.Style.Base_Widget_AppCompat_Button_Borderless;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Widget_AppCompat_Button_Borderless_Colored = global::HelloworldXamarin.Droid.Resource.Style.Base_Widget_AppCompat_Button_Borderless_Colored;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Widget_AppCompat_Button_ButtonBar_AlertDialog = global::HelloworldXamarin.Droid.Resource.Style.Base_Widget_AppCompat_Button_ButtonBar_AlertDialog;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Widget_AppCompat_Button_Colored = global::HelloworldXamarin.Droid.Resource.Style.Base_Widget_AppCompat_Button_Colored;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Widget_AppCompat_Button_Small = global::HelloworldXamarin.Droid.Resource.Style.Base_Widget_AppCompat_Button_Small;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Widget_AppCompat_CompoundButton_CheckBox = global::HelloworldXamarin.Droid.Resource.Style.Base_Widget_AppCompat_CompoundButton_CheckBox;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Widget_AppCompat_CompoundButton_RadioButton = global::HelloworldXamarin.Droid.Resource.Style.Base_Widget_AppCompat_CompoundButton_RadioButton;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Widget_AppCompat_CompoundButton_Switch = global::HelloworldXamarin.Droid.Resource.Style.Base_Widget_AppCompat_CompoundButton_Switch;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Widget_AppCompat_DrawerArrowToggle = global::HelloworldXamarin.Droid.Resource.Style.Base_Widget_AppCompat_DrawerArrowToggle;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Widget_AppCompat_DrawerArrowToggle_Common = global::HelloworldXamarin.Droid.Resource.Style.Base_Widget_AppCompat_DrawerArrowToggle_Common;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Widget_AppCompat_DropDownItem_Spinner = global::HelloworldXamarin.Droid.Resource.Style.Base_Widget_AppCompat_DropDownItem_Spinner;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Widget_AppCompat_EditText = global::HelloworldXamarin.Droid.Resource.Style.Base_Widget_AppCompat_EditText;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Widget_AppCompat_ImageButton = global::HelloworldXamarin.Droid.Resource.Style.Base_Widget_AppCompat_ImageButton;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Widget_AppCompat_Light_ActionBar = global::HelloworldXamarin.Droid.Resource.Style.Base_Widget_AppCompat_Light_ActionBar;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Widget_AppCompat_Light_ActionBar_Solid = global::HelloworldXamarin.Droid.Resource.Style.Base_Widget_AppCompat_Light_ActionBar_Solid;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Widget_AppCompat_Light_ActionBar_TabBar = global::HelloworldXamarin.Droid.Resource.Style.Base_Widget_AppCompat_Light_ActionBar_TabBar;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Widget_AppCompat_Light_ActionBar_TabText = global::HelloworldXamarin.Droid.Resource.Style.Base_Widget_AppCompat_Light_ActionBar_TabText;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Widget_AppCompat_Light_ActionBar_TabText_Inverse = global::HelloworldXamarin.Droid.Resource.Style.Base_Widget_AppCompat_Light_ActionBar_TabText_Inverse;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Widget_AppCompat_Light_ActionBar_TabView = global::HelloworldXamarin.Droid.Resource.Style.Base_Widget_AppCompat_Light_ActionBar_TabView;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Widget_AppCompat_Light_PopupMenu = global::HelloworldXamarin.Droid.Resource.Style.Base_Widget_AppCompat_Light_PopupMenu;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Widget_AppCompat_Light_PopupMenu_Overflow = global::HelloworldXamarin.Droid.Resource.Style.Base_Widget_AppCompat_Light_PopupMenu_Overflow;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Widget_AppCompat_ListMenuView = global::HelloworldXamarin.Droid.Resource.Style.Base_Widget_AppCompat_ListMenuView;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Widget_AppCompat_ListPopupWindow = global::HelloworldXamarin.Droid.Resource.Style.Base_Widget_AppCompat_ListPopupWindow;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Widget_AppCompat_ListView = global::HelloworldXamarin.Droid.Resource.Style.Base_Widget_AppCompat_ListView;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Widget_AppCompat_ListView_DropDown = global::HelloworldXamarin.Droid.Resource.Style.Base_Widget_AppCompat_ListView_DropDown;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Widget_AppCompat_ListView_Menu = global::HelloworldXamarin.Droid.Resource.Style.Base_Widget_AppCompat_ListView_Menu;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Widget_AppCompat_PopupMenu = global::HelloworldXamarin.Droid.Resource.Style.Base_Widget_AppCompat_PopupMenu;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Widget_AppCompat_PopupMenu_Overflow = global::HelloworldXamarin.Droid.Resource.Style.Base_Widget_AppCompat_PopupMenu_Overflow;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Widget_AppCompat_PopupWindow = global::HelloworldXamarin.Droid.Resource.Style.Base_Widget_AppCompat_PopupWindow;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Widget_AppCompat_ProgressBar = global::HelloworldXamarin.Droid.Resource.Style.Base_Widget_AppCompat_ProgressBar;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Widget_AppCompat_ProgressBar_Horizontal = global::HelloworldXamarin.Droid.Resource.Style.Base_Widget_AppCompat_ProgressBar_Horizontal;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Widget_AppCompat_RatingBar = global::HelloworldXamarin.Droid.Resource.Style.Base_Widget_AppCompat_RatingBar;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Widget_AppCompat_RatingBar_Indicator = global::HelloworldXamarin.Droid.Resource.Style.Base_Widget_AppCompat_RatingBar_Indicator;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Widget_AppCompat_RatingBar_Small = global::HelloworldXamarin.Droid.Resource.Style.Base_Widget_AppCompat_RatingBar_Small;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Widget_AppCompat_SearchView = global::HelloworldXamarin.Droid.Resource.Style.Base_Widget_AppCompat_SearchView;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Widget_AppCompat_SearchView_ActionBar = global::HelloworldXamarin.Droid.Resource.Style.Base_Widget_AppCompat_SearchView_ActionBar;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Widget_AppCompat_SeekBar = global::HelloworldXamarin.Droid.Resource.Style.Base_Widget_AppCompat_SeekBar;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Widget_AppCompat_SeekBar_Discrete = global::HelloworldXamarin.Droid.Resource.Style.Base_Widget_AppCompat_SeekBar_Discrete;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Widget_AppCompat_Spinner = global::HelloworldXamarin.Droid.Resource.Style.Base_Widget_AppCompat_Spinner;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Widget_AppCompat_Spinner_Underlined = global::HelloworldXamarin.Droid.Resource.Style.Base_Widget_AppCompat_Spinner_Underlined;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Widget_AppCompat_TextView_SpinnerItem = global::HelloworldXamarin.Droid.Resource.Style.Base_Widget_AppCompat_TextView_SpinnerItem;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Widget_AppCompat_Toolbar = global::HelloworldXamarin.Droid.Resource.Style.Base_Widget_AppCompat_Toolbar;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Widget_AppCompat_Toolbar_Button_Navigation = global::HelloworldXamarin.Droid.Resource.Style.Base_Widget_AppCompat_Toolbar_Button_Navigation;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Widget_Design_TabLayout = global::HelloworldXamarin.Droid.Resource.Style.Base_Widget_Design_TabLayout;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Widget_MaterialComponents_Chip = global::HelloworldXamarin.Droid.Resource.Style.Base_Widget_MaterialComponents_Chip;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Widget_MaterialComponents_TextInputEditText = global::HelloworldXamarin.Droid.Resource.Style.Base_Widget_MaterialComponents_TextInputEditText;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Widget_MaterialComponents_TextInputLayout = global::HelloworldXamarin.Droid.Resource.Style.Base_Widget_MaterialComponents_TextInputLayout;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.CardView = global::HelloworldXamarin.Droid.Resource.Style.CardView;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.CardView_Dark = global::HelloworldXamarin.Droid.Resource.Style.CardView_Dark;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.CardView_Light = global::HelloworldXamarin.Droid.Resource.Style.CardView_Light;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.collectionViewStyle = global::HelloworldXamarin.Droid.Resource.Style.collectionViewStyle;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.MainTheme = global::HelloworldXamarin.Droid.Resource.Style.MainTheme;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.MainTheme_Base = global::HelloworldXamarin.Droid.Resource.Style.MainTheme_Base;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Platform_AppCompat = global::HelloworldXamarin.Droid.Resource.Style.Platform_AppCompat;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Platform_AppCompat_Light = global::HelloworldXamarin.Droid.Resource.Style.Platform_AppCompat_Light;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Platform_MaterialComponents = global::HelloworldXamarin.Droid.Resource.Style.Platform_MaterialComponents;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Platform_MaterialComponents_Dialog = global::HelloworldXamarin.Droid.Resource.Style.Platform_MaterialComponents_Dialog;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Platform_MaterialComponents_Light = global::HelloworldXamarin.Droid.Resource.Style.Platform_MaterialComponents_Light;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Platform_MaterialComponents_Light_Dialog = global::HelloworldXamarin.Droid.Resource.Style.Platform_MaterialComponents_Light_Dialog;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Platform_ThemeOverlay_AppCompat = global::HelloworldXamarin.Droid.Resource.Style.Platform_ThemeOverlay_AppCompat;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Platform_ThemeOverlay_AppCompat_Dark = global::HelloworldXamarin.Droid.Resource.Style.Platform_ThemeOverlay_AppCompat_Dark;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Platform_ThemeOverlay_AppCompat_Light = global::HelloworldXamarin.Droid.Resource.Style.Platform_ThemeOverlay_AppCompat_Light;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Platform_V21_AppCompat = global::HelloworldXamarin.Droid.Resource.Style.Platform_V21_AppCompat;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Platform_V21_AppCompat_Light = global::HelloworldXamarin.Droid.Resource.Style.Platform_V21_AppCompat_Light;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Platform_V25_AppCompat = global::HelloworldXamarin.Droid.Resource.Style.Platform_V25_AppCompat;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Platform_V25_AppCompat_Light = global::HelloworldXamarin.Droid.Resource.Style.Platform_V25_AppCompat_Light;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Platform_Widget_AppCompat_Spinner = global::HelloworldXamarin.Droid.Resource.Style.Platform_Widget_AppCompat_Spinner;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.RtlOverlay_DialogWindowTitle_AppCompat = global::HelloworldXamarin.Droid.Resource.Style.RtlOverlay_DialogWindowTitle_AppCompat;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.RtlOverlay_Widget_AppCompat_ActionBar_TitleItem = global::HelloworldXamarin.Droid.Resource.Style.RtlOverlay_Widget_AppCompat_ActionBar_TitleItem;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.RtlOverlay_Widget_AppCompat_DialogTitle_Icon = global::HelloworldXamarin.Droid.Resource.Style.RtlOverlay_Widget_AppCompat_DialogTitle_Icon;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.RtlOverlay_Widget_AppCompat_PopupMenuItem = global::HelloworldXamarin.Droid.Resource.Style.RtlOverlay_Widget_AppCompat_PopupMenuItem;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.RtlOverlay_Widget_AppCompat_PopupMenuItem_InternalGroup = global::HelloworldXamarin.Droid.Resource.Style.RtlOverlay_Widget_AppCompat_PopupMenuItem_InternalGroup;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.RtlOverlay_Widget_AppCompat_PopupMenuItem_Shortcut = global::HelloworldXamarin.Droid.Resource.Style.RtlOverlay_Widget_AppCompat_PopupMenuItem_Shortcut;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.RtlOverlay_Widget_AppCompat_PopupMenuItem_SubmenuArrow = global::HelloworldXamarin.Droid.Resource.Style.RtlOverlay_Widget_AppCompat_PopupMenuItem_SubmenuArrow;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.RtlOverlay_Widget_AppCompat_PopupMenuItem_Text = global::HelloworldXamarin.Droid.Resource.Style.RtlOverlay_Widget_AppCompat_PopupMenuItem_Text;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.RtlOverlay_Widget_AppCompat_PopupMenuItem_Title = global::HelloworldXamarin.Droid.Resource.Style.RtlOverlay_Widget_AppCompat_PopupMenuItem_Title;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.RtlOverlay_Widget_AppCompat_SearchView_MagIcon = global::HelloworldXamarin.Droid.Resource.Style.RtlOverlay_Widget_AppCompat_SearchView_MagIcon;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.RtlOverlay_Widget_AppCompat_Search_DropDown = global::HelloworldXamarin.Droid.Resource.Style.RtlOverlay_Widget_AppCompat_Search_DropDown;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.RtlOverlay_Widget_AppCompat_Search_DropDown_Icon1 = global::HelloworldXamarin.Droid.Resource.Style.RtlOverlay_Widget_AppCompat_Search_DropDown_Icon1;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.RtlOverlay_Widget_AppCompat_Search_DropDown_Icon2 = global::HelloworldXamarin.Droid.Resource.Style.RtlOverlay_Widget_AppCompat_Search_DropDown_Icon2;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.RtlOverlay_Widget_AppCompat_Search_DropDown_Query = global::HelloworldXamarin.Droid.Resource.Style.RtlOverlay_Widget_AppCompat_Search_DropDown_Query;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.RtlOverlay_Widget_AppCompat_Search_DropDown_Text = global::HelloworldXamarin.Droid.Resource.Style.RtlOverlay_Widget_AppCompat_Search_DropDown_Text;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.RtlUnderlay_Widget_AppCompat_ActionButton = global::HelloworldXamarin.Droid.Resource.Style.RtlUnderlay_Widget_AppCompat_ActionButton;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.RtlUnderlay_Widget_AppCompat_ActionButton_Overflow = global::HelloworldXamarin.Droid.Resource.Style.RtlUnderlay_Widget_AppCompat_ActionButton_Overflow;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.TextAppearance_AppCompat = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_AppCompat;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.TextAppearance_AppCompat_Body1 = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_AppCompat_Body1;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.TextAppearance_AppCompat_Body2 = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_AppCompat_Body2;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.TextAppearance_AppCompat_Button = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_AppCompat_Button;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.TextAppearance_AppCompat_Caption = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_AppCompat_Caption;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.TextAppearance_AppCompat_Display1 = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_AppCompat_Display1;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.TextAppearance_AppCompat_Display2 = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_AppCompat_Display2;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.TextAppearance_AppCompat_Display3 = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_AppCompat_Display3;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.TextAppearance_AppCompat_Display4 = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_AppCompat_Display4;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.TextAppearance_AppCompat_Headline = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_AppCompat_Headline;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.TextAppearance_AppCompat_Inverse = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_AppCompat_Inverse;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.TextAppearance_AppCompat_Large = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_AppCompat_Large;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.TextAppearance_AppCompat_Large_Inverse = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_AppCompat_Large_Inverse;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.TextAppearance_AppCompat_Light_SearchResult_Subtitle = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_AppCompat_Light_SearchResult_Subtitle;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.TextAppearance_AppCompat_Light_SearchResult_Title = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_AppCompat_Light_SearchResult_Title;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.TextAppearance_AppCompat_Light_Widget_PopupMenu_Large = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_AppCompat_Light_Widget_PopupMenu_Large;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.TextAppearance_AppCompat_Light_Widget_PopupMenu_Small = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_AppCompat_Light_Widget_PopupMenu_Small;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.TextAppearance_AppCompat_Medium = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_AppCompat_Medium;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.TextAppearance_AppCompat_Medium_Inverse = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_AppCompat_Medium_Inverse;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.TextAppearance_AppCompat_Menu = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_AppCompat_Menu;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.TextAppearance_AppCompat_SearchResult_Subtitle = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_AppCompat_SearchResult_Subtitle;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.TextAppearance_AppCompat_SearchResult_Title = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_AppCompat_SearchResult_Title;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.TextAppearance_AppCompat_Small = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_AppCompat_Small;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.TextAppearance_AppCompat_Small_Inverse = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_AppCompat_Small_Inverse;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.TextAppearance_AppCompat_Subhead = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_AppCompat_Subhead;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.TextAppearance_AppCompat_Subhead_Inverse = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_AppCompat_Subhead_Inverse;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.TextAppearance_AppCompat_Title = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_AppCompat_Title;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.TextAppearance_AppCompat_Title_Inverse = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_AppCompat_Title_Inverse;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.TextAppearance_AppCompat_Tooltip = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_AppCompat_Tooltip;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.TextAppearance_AppCompat_Widget_ActionBar_Menu = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_AppCompat_Widget_ActionBar_Menu;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.TextAppearance_AppCompat_Widget_ActionBar_Subtitle = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_AppCompat_Widget_ActionBar_Subtitle;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.TextAppearance_AppCompat_Widget_ActionBar_Subtitle_Inverse = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_AppCompat_Widget_ActionBar_Subtitle_Inverse;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.TextAppearance_AppCompat_Widget_ActionBar_Title = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_AppCompat_Widget_ActionBar_Title;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.TextAppearance_AppCompat_Widget_ActionBar_Title_Inverse = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_AppCompat_Widget_ActionBar_Title_Inverse;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.TextAppearance_AppCompat_Widget_ActionMode_Subtitle = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_AppCompat_Widget_ActionMode_Subtitle;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.TextAppearance_AppCompat_Widget_ActionMode_Subtitle_Inverse = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_AppCompat_Widget_ActionMode_Subtitle_Inverse;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.TextAppearance_AppCompat_Widget_ActionMode_Title = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_AppCompat_Widget_ActionMode_Title;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.TextAppearance_AppCompat_Widget_ActionMode_Title_Inverse = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_AppCompat_Widget_ActionMode_Title_Inverse;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.TextAppearance_AppCompat_Widget_Button = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_AppCompat_Widget_Button;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.TextAppearance_AppCompat_Widget_Button_Borderless_Colored = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_AppCompat_Widget_Button_Borderless_Colored;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.TextAppearance_AppCompat_Widget_Button_Colored = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_AppCompat_Widget_Button_Colored;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.TextAppearance_AppCompat_Widget_Button_Inverse = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_AppCompat_Widget_Button_Inverse;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.TextAppearance_AppCompat_Widget_DropDownItem = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_AppCompat_Widget_DropDownItem;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.TextAppearance_AppCompat_Widget_PopupMenu_Header = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_AppCompat_Widget_PopupMenu_Header;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.TextAppearance_AppCompat_Widget_PopupMenu_Large = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_AppCompat_Widget_PopupMenu_Large;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.TextAppearance_AppCompat_Widget_PopupMenu_Small = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_AppCompat_Widget_PopupMenu_Small;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.TextAppearance_AppCompat_Widget_Switch = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_AppCompat_Widget_Switch;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.TextAppearance_AppCompat_Widget_TextView_SpinnerItem = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_AppCompat_Widget_TextView_SpinnerItem;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.TextAppearance_Compat_Notification = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_Compat_Notification;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.TextAppearance_Compat_Notification_Info = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_Compat_Notification_Info;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.TextAppearance_Compat_Notification_Info_Media = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_Compat_Notification_Info_Media;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.TextAppearance_Compat_Notification_Line2 = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_Compat_Notification_Line2;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.TextAppearance_Compat_Notification_Line2_Media = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_Compat_Notification_Line2_Media;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.TextAppearance_Compat_Notification_Media = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_Compat_Notification_Media;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.TextAppearance_Compat_Notification_Time = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_Compat_Notification_Time;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.TextAppearance_Compat_Notification_Time_Media = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_Compat_Notification_Time_Media;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.TextAppearance_Compat_Notification_Title = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_Compat_Notification_Title;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.TextAppearance_Compat_Notification_Title_Media = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_Compat_Notification_Title_Media;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.TextAppearance_Design_CollapsingToolbar_Expanded = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_Design_CollapsingToolbar_Expanded;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.TextAppearance_Design_Counter = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_Design_Counter;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.TextAppearance_Design_Counter_Overflow = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_Design_Counter_Overflow;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.TextAppearance_Design_Error = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_Design_Error;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.TextAppearance_Design_HelperText = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_Design_HelperText;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.TextAppearance_Design_Hint = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_Design_Hint;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.TextAppearance_Design_Snackbar_Message = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_Design_Snackbar_Message;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.TextAppearance_Design_Tab = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_Design_Tab;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.TextAppearance_MaterialComponents_Body1 = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_MaterialComponents_Body1;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.TextAppearance_MaterialComponents_Body2 = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_MaterialComponents_Body2;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.TextAppearance_MaterialComponents_Button = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_MaterialComponents_Button;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.TextAppearance_MaterialComponents_Caption = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_MaterialComponents_Caption;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.TextAppearance_MaterialComponents_Chip = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_MaterialComponents_Chip;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.TextAppearance_MaterialComponents_Headline1 = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_MaterialComponents_Headline1;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.TextAppearance_MaterialComponents_Headline2 = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_MaterialComponents_Headline2;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.TextAppearance_MaterialComponents_Headline3 = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_MaterialComponents_Headline3;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.TextAppearance_MaterialComponents_Headline4 = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_MaterialComponents_Headline4;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.TextAppearance_MaterialComponents_Headline5 = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_MaterialComponents_Headline5;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.TextAppearance_MaterialComponents_Headline6 = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_MaterialComponents_Headline6;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.TextAppearance_MaterialComponents_Overline = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_MaterialComponents_Overline;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.TextAppearance_MaterialComponents_Subtitle1 = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_MaterialComponents_Subtitle1;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.TextAppearance_MaterialComponents_Subtitle2 = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_MaterialComponents_Subtitle2;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.TextAppearance_MaterialComponents_Tab = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_MaterialComponents_Tab;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.TextAppearance_Widget_AppCompat_ExpandedMenu_Item = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_Widget_AppCompat_ExpandedMenu_Item;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.TextAppearance_Widget_AppCompat_Toolbar_Subtitle = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_Widget_AppCompat_Toolbar_Subtitle;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.TextAppearance_Widget_AppCompat_Toolbar_Title = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_Widget_AppCompat_Toolbar_Title;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.ThemeOverlay_AppCompat = global::HelloworldXamarin.Droid.Resource.Style.ThemeOverlay_AppCompat;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.ThemeOverlay_AppCompat_ActionBar = global::HelloworldXamarin.Droid.Resource.Style.ThemeOverlay_AppCompat_ActionBar;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.ThemeOverlay_AppCompat_Dark = global::HelloworldXamarin.Droid.Resource.Style.ThemeOverlay_AppCompat_Dark;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.ThemeOverlay_AppCompat_Dark_ActionBar = global::HelloworldXamarin.Droid.Resource.Style.ThemeOverlay_AppCompat_Dark_ActionBar;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.ThemeOverlay_AppCompat_Dialog = global::HelloworldXamarin.Droid.Resource.Style.ThemeOverlay_AppCompat_Dialog;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.ThemeOverlay_AppCompat_Dialog_Alert = global::HelloworldXamarin.Droid.Resource.Style.ThemeOverlay_AppCompat_Dialog_Alert;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.ThemeOverlay_AppCompat_Light = global::HelloworldXamarin.Droid.Resource.Style.ThemeOverlay_AppCompat_Light;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.ThemeOverlay_MaterialComponents = global::HelloworldXamarin.Droid.Resource.Style.ThemeOverlay_MaterialComponents;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.ThemeOverlay_MaterialComponents_ActionBar = global::HelloworldXamarin.Droid.Resource.Style.ThemeOverlay_MaterialComponents_ActionBar;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.ThemeOverlay_MaterialComponents_Dark = global::HelloworldXamarin.Droid.Resource.Style.ThemeOverlay_MaterialComponents_Dark;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.ThemeOverlay_MaterialComponents_Dark_ActionBar = global::HelloworldXamarin.Droid.Resource.Style.ThemeOverlay_MaterialComponents_Dark_ActionBar;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.ThemeOverlay_MaterialComponents_Dialog = global::HelloworldXamarin.Droid.Resource.Style.ThemeOverlay_MaterialComponents_Dialog;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.ThemeOverlay_MaterialComponents_Dialog_Alert = global::HelloworldXamarin.Droid.Resource.Style.ThemeOverlay_MaterialComponents_Dialog_Alert;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.ThemeOverlay_MaterialComponents_Light = global::HelloworldXamarin.Droid.Resource.Style.ThemeOverlay_MaterialComponents_Light;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.ThemeOverlay_MaterialComponents_TextInputEditText = global::HelloworldXamarin.Droid.Resource.Style.ThemeOverlay_MaterialComponents_TextInputEditText;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.ThemeOverlay_MaterialComponents_TextInputEditText_FilledBox = global::HelloworldXamarin.Droid.Resource.Style.ThemeOverlay_MaterialComponents_TextInputEditText_FilledBox;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.ThemeOverlay_MaterialComponents_TextInputEditText_FilledBox_Dense = global::HelloworldXamarin.Droid.Resource.Style.ThemeOverlay_MaterialComponents_TextInputEditText_FilledBox_Dense;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.ThemeOverlay_MaterialComponents_TextInputEditText_OutlinedBox = global::HelloworldXamarin.Droid.Resource.Style.ThemeOverlay_MaterialComponents_TextInputEditText_OutlinedBox;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.ThemeOverlay_MaterialComponents_TextInputEditText_OutlinedBox_Dense = global::HelloworldXamarin.Droid.Resource.Style.ThemeOverlay_MaterialComponents_TextInputEditText_OutlinedBox_Dense;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Theme_AppCompat = global::HelloworldXamarin.Droid.Resource.Style.Theme_AppCompat;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Theme_AppCompat_CompactMenu = global::HelloworldXamarin.Droid.Resource.Style.Theme_AppCompat_CompactMenu;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Theme_AppCompat_DayNight = global::HelloworldXamarin.Droid.Resource.Style.Theme_AppCompat_DayNight;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Theme_AppCompat_DayNight_DarkActionBar = global::HelloworldXamarin.Droid.Resource.Style.Theme_AppCompat_DayNight_DarkActionBar;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Theme_AppCompat_DayNight_Dialog = global::HelloworldXamarin.Droid.Resource.Style.Theme_AppCompat_DayNight_Dialog;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Theme_AppCompat_DayNight_DialogWhenLarge = global::HelloworldXamarin.Droid.Resource.Style.Theme_AppCompat_DayNight_DialogWhenLarge;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Theme_AppCompat_DayNight_Dialog_Alert = global::HelloworldXamarin.Droid.Resource.Style.Theme_AppCompat_DayNight_Dialog_Alert;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Theme_AppCompat_DayNight_Dialog_MinWidth = global::HelloworldXamarin.Droid.Resource.Style.Theme_AppCompat_DayNight_Dialog_MinWidth;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Theme_AppCompat_DayNight_NoActionBar = global::HelloworldXamarin.Droid.Resource.Style.Theme_AppCompat_DayNight_NoActionBar;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Theme_AppCompat_Dialog = global::HelloworldXamarin.Droid.Resource.Style.Theme_AppCompat_Dialog;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Theme_AppCompat_DialogWhenLarge = global::HelloworldXamarin.Droid.Resource.Style.Theme_AppCompat_DialogWhenLarge;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Theme_AppCompat_Dialog_Alert = global::HelloworldXamarin.Droid.Resource.Style.Theme_AppCompat_Dialog_Alert;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Theme_AppCompat_Dialog_MinWidth = global::HelloworldXamarin.Droid.Resource.Style.Theme_AppCompat_Dialog_MinWidth;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Theme_AppCompat_Light = global::HelloworldXamarin.Droid.Resource.Style.Theme_AppCompat_Light;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Theme_AppCompat_Light_DarkActionBar = global::HelloworldXamarin.Droid.Resource.Style.Theme_AppCompat_Light_DarkActionBar;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Theme_AppCompat_Light_Dialog = global::HelloworldXamarin.Droid.Resource.Style.Theme_AppCompat_Light_Dialog;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Theme_AppCompat_Light_DialogWhenLarge = global::HelloworldXamarin.Droid.Resource.Style.Theme_AppCompat_Light_DialogWhenLarge;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Theme_AppCompat_Light_Dialog_Alert = global::HelloworldXamarin.Droid.Resource.Style.Theme_AppCompat_Light_Dialog_Alert;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Theme_AppCompat_Light_Dialog_MinWidth = global::HelloworldXamarin.Droid.Resource.Style.Theme_AppCompat_Light_Dialog_MinWidth;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Theme_AppCompat_Light_NoActionBar = global::HelloworldXamarin.Droid.Resource.Style.Theme_AppCompat_Light_NoActionBar;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Theme_AppCompat_NoActionBar = global::HelloworldXamarin.Droid.Resource.Style.Theme_AppCompat_NoActionBar;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Theme_Design = global::HelloworldXamarin.Droid.Resource.Style.Theme_Design;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Theme_Design_BottomSheetDialog = global::HelloworldXamarin.Droid.Resource.Style.Theme_Design_BottomSheetDialog;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Theme_Design_Light = global::HelloworldXamarin.Droid.Resource.Style.Theme_Design_Light;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Theme_Design_Light_BottomSheetDialog = global::HelloworldXamarin.Droid.Resource.Style.Theme_Design_Light_BottomSheetDialog;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Theme_Design_Light_NoActionBar = global::HelloworldXamarin.Droid.Resource.Style.Theme_Design_Light_NoActionBar;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Theme_Design_NoActionBar = global::HelloworldXamarin.Droid.Resource.Style.Theme_Design_NoActionBar;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Theme_MaterialComponents = global::HelloworldXamarin.Droid.Resource.Style.Theme_MaterialComponents;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Theme_MaterialComponents_BottomSheetDialog = global::HelloworldXamarin.Droid.Resource.Style.Theme_MaterialComponents_BottomSheetDialog;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Theme_MaterialComponents_Bridge = global::HelloworldXamarin.Droid.Resource.Style.Theme_MaterialComponents_Bridge;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Theme_MaterialComponents_CompactMenu = global::HelloworldXamarin.Droid.Resource.Style.Theme_MaterialComponents_CompactMenu;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Theme_MaterialComponents_Dialog = global::HelloworldXamarin.Droid.Resource.Style.Theme_MaterialComponents_Dialog;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Theme_MaterialComponents_DialogWhenLarge = global::HelloworldXamarin.Droid.Resource.Style.Theme_MaterialComponents_DialogWhenLarge;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Theme_MaterialComponents_Dialog_Alert = global::HelloworldXamarin.Droid.Resource.Style.Theme_MaterialComponents_Dialog_Alert;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Theme_MaterialComponents_Dialog_MinWidth = global::HelloworldXamarin.Droid.Resource.Style.Theme_MaterialComponents_Dialog_MinWidth;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Theme_MaterialComponents_Light = global::HelloworldXamarin.Droid.Resource.Style.Theme_MaterialComponents_Light;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Theme_MaterialComponents_Light_BottomSheetDialog = global::HelloworldXamarin.Droid.Resource.Style.Theme_MaterialComponents_Light_BottomSheetDialog;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Theme_MaterialComponents_Light_Bridge = global::HelloworldXamarin.Droid.Resource.Style.Theme_MaterialComponents_Light_Bridge;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Theme_MaterialComponents_Light_DarkActionBar = global::HelloworldXamarin.Droid.Resource.Style.Theme_MaterialComponents_Light_DarkActionBar;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Theme_MaterialComponents_Light_DarkActionBar_Bridge = global::HelloworldXamarin.Droid.Resource.Style.Theme_MaterialComponents_Light_DarkActionBar_Bridge;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Theme_MaterialComponents_Light_Dialog = global::HelloworldXamarin.Droid.Resource.Style.Theme_MaterialComponents_Light_Dialog;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Theme_MaterialComponents_Light_DialogWhenLarge = global::HelloworldXamarin.Droid.Resource.Style.Theme_MaterialComponents_Light_DialogWhenLarge;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Theme_MaterialComponents_Light_Dialog_Alert = global::HelloworldXamarin.Droid.Resource.Style.Theme_MaterialComponents_Light_Dialog_Alert;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Theme_MaterialComponents_Light_Dialog_MinWidth = global::HelloworldXamarin.Droid.Resource.Style.Theme_MaterialComponents_Light_Dialog_MinWidth;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Theme_MaterialComponents_Light_NoActionBar = global::HelloworldXamarin.Droid.Resource.Style.Theme_MaterialComponents_Light_NoActionBar;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Theme_MaterialComponents_Light_NoActionBar_Bridge = global::HelloworldXamarin.Droid.Resource.Style.Theme_MaterialComponents_Light_NoActionBar_Bridge;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Theme_MaterialComponents_NoActionBar = global::HelloworldXamarin.Droid.Resource.Style.Theme_MaterialComponents_NoActionBar;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Theme_MaterialComponents_NoActionBar_Bridge = global::HelloworldXamarin.Droid.Resource.Style.Theme_MaterialComponents_NoActionBar_Bridge;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_AppCompat_ActionBar = global::HelloworldXamarin.Droid.Resource.Style.Widget_AppCompat_ActionBar;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_AppCompat_ActionBar_Solid = global::HelloworldXamarin.Droid.Resource.Style.Widget_AppCompat_ActionBar_Solid;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_AppCompat_ActionBar_TabBar = global::HelloworldXamarin.Droid.Resource.Style.Widget_AppCompat_ActionBar_TabBar;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_AppCompat_ActionBar_TabText = global::HelloworldXamarin.Droid.Resource.Style.Widget_AppCompat_ActionBar_TabText;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_AppCompat_ActionBar_TabView = global::HelloworldXamarin.Droid.Resource.Style.Widget_AppCompat_ActionBar_TabView;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_AppCompat_ActionButton = global::HelloworldXamarin.Droid.Resource.Style.Widget_AppCompat_ActionButton;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_AppCompat_ActionButton_CloseMode = global::HelloworldXamarin.Droid.Resource.Style.Widget_AppCompat_ActionButton_CloseMode;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_AppCompat_ActionButton_Overflow = global::HelloworldXamarin.Droid.Resource.Style.Widget_AppCompat_ActionButton_Overflow;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_AppCompat_ActionMode = global::HelloworldXamarin.Droid.Resource.Style.Widget_AppCompat_ActionMode;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_AppCompat_ActivityChooserView = global::HelloworldXamarin.Droid.Resource.Style.Widget_AppCompat_ActivityChooserView;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_AppCompat_AutoCompleteTextView = global::HelloworldXamarin.Droid.Resource.Style.Widget_AppCompat_AutoCompleteTextView;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_AppCompat_Button = global::HelloworldXamarin.Droid.Resource.Style.Widget_AppCompat_Button;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_AppCompat_ButtonBar = global::HelloworldXamarin.Droid.Resource.Style.Widget_AppCompat_ButtonBar;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_AppCompat_ButtonBar_AlertDialog = global::HelloworldXamarin.Droid.Resource.Style.Widget_AppCompat_ButtonBar_AlertDialog;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_AppCompat_Button_Borderless = global::HelloworldXamarin.Droid.Resource.Style.Widget_AppCompat_Button_Borderless;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_AppCompat_Button_Borderless_Colored = global::HelloworldXamarin.Droid.Resource.Style.Widget_AppCompat_Button_Borderless_Colored;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_AppCompat_Button_ButtonBar_AlertDialog = global::HelloworldXamarin.Droid.Resource.Style.Widget_AppCompat_Button_ButtonBar_AlertDialog;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_AppCompat_Button_Colored = global::HelloworldXamarin.Droid.Resource.Style.Widget_AppCompat_Button_Colored;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_AppCompat_Button_Small = global::HelloworldXamarin.Droid.Resource.Style.Widget_AppCompat_Button_Small;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_AppCompat_CompoundButton_CheckBox = global::HelloworldXamarin.Droid.Resource.Style.Widget_AppCompat_CompoundButton_CheckBox;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_AppCompat_CompoundButton_RadioButton = global::HelloworldXamarin.Droid.Resource.Style.Widget_AppCompat_CompoundButton_RadioButton;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_AppCompat_CompoundButton_Switch = global::HelloworldXamarin.Droid.Resource.Style.Widget_AppCompat_CompoundButton_Switch;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_AppCompat_DrawerArrowToggle = global::HelloworldXamarin.Droid.Resource.Style.Widget_AppCompat_DrawerArrowToggle;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_AppCompat_DropDownItem_Spinner = global::HelloworldXamarin.Droid.Resource.Style.Widget_AppCompat_DropDownItem_Spinner;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_AppCompat_EditText = global::HelloworldXamarin.Droid.Resource.Style.Widget_AppCompat_EditText;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_AppCompat_ImageButton = global::HelloworldXamarin.Droid.Resource.Style.Widget_AppCompat_ImageButton;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_AppCompat_Light_ActionBar = global::HelloworldXamarin.Droid.Resource.Style.Widget_AppCompat_Light_ActionBar;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_AppCompat_Light_ActionBar_Solid = global::HelloworldXamarin.Droid.Resource.Style.Widget_AppCompat_Light_ActionBar_Solid;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_AppCompat_Light_ActionBar_Solid_Inverse = global::HelloworldXamarin.Droid.Resource.Style.Widget_AppCompat_Light_ActionBar_Solid_Inverse;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_AppCompat_Light_ActionBar_TabBar = global::HelloworldXamarin.Droid.Resource.Style.Widget_AppCompat_Light_ActionBar_TabBar;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_AppCompat_Light_ActionBar_TabBar_Inverse = global::HelloworldXamarin.Droid.Resource.Style.Widget_AppCompat_Light_ActionBar_TabBar_Inverse;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_AppCompat_Light_ActionBar_TabText = global::HelloworldXamarin.Droid.Resource.Style.Widget_AppCompat_Light_ActionBar_TabText;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_AppCompat_Light_ActionBar_TabText_Inverse = global::HelloworldXamarin.Droid.Resource.Style.Widget_AppCompat_Light_ActionBar_TabText_Inverse;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_AppCompat_Light_ActionBar_TabView = global::HelloworldXamarin.Droid.Resource.Style.Widget_AppCompat_Light_ActionBar_TabView;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_AppCompat_Light_ActionBar_TabView_Inverse = global::HelloworldXamarin.Droid.Resource.Style.Widget_AppCompat_Light_ActionBar_TabView_Inverse;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_AppCompat_Light_ActionButton = global::HelloworldXamarin.Droid.Resource.Style.Widget_AppCompat_Light_ActionButton;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_AppCompat_Light_ActionButton_CloseMode = global::HelloworldXamarin.Droid.Resource.Style.Widget_AppCompat_Light_ActionButton_CloseMode;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_AppCompat_Light_ActionButton_Overflow = global::HelloworldXamarin.Droid.Resource.Style.Widget_AppCompat_Light_ActionButton_Overflow;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_AppCompat_Light_ActionMode_Inverse = global::HelloworldXamarin.Droid.Resource.Style.Widget_AppCompat_Light_ActionMode_Inverse;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_AppCompat_Light_ActivityChooserView = global::HelloworldXamarin.Droid.Resource.Style.Widget_AppCompat_Light_ActivityChooserView;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_AppCompat_Light_AutoCompleteTextView = global::HelloworldXamarin.Droid.Resource.Style.Widget_AppCompat_Light_AutoCompleteTextView;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_AppCompat_Light_DropDownItem_Spinner = global::HelloworldXamarin.Droid.Resource.Style.Widget_AppCompat_Light_DropDownItem_Spinner;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_AppCompat_Light_ListPopupWindow = global::HelloworldXamarin.Droid.Resource.Style.Widget_AppCompat_Light_ListPopupWindow;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_AppCompat_Light_ListView_DropDown = global::HelloworldXamarin.Droid.Resource.Style.Widget_AppCompat_Light_ListView_DropDown;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_AppCompat_Light_PopupMenu = global::HelloworldXamarin.Droid.Resource.Style.Widget_AppCompat_Light_PopupMenu;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_AppCompat_Light_PopupMenu_Overflow = global::HelloworldXamarin.Droid.Resource.Style.Widget_AppCompat_Light_PopupMenu_Overflow;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_AppCompat_Light_SearchView = global::HelloworldXamarin.Droid.Resource.Style.Widget_AppCompat_Light_SearchView;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_AppCompat_Light_Spinner_DropDown_ActionBar = global::HelloworldXamarin.Droid.Resource.Style.Widget_AppCompat_Light_Spinner_DropDown_ActionBar;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_AppCompat_ListMenuView = global::HelloworldXamarin.Droid.Resource.Style.Widget_AppCompat_ListMenuView;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_AppCompat_ListPopupWindow = global::HelloworldXamarin.Droid.Resource.Style.Widget_AppCompat_ListPopupWindow;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_AppCompat_ListView = global::HelloworldXamarin.Droid.Resource.Style.Widget_AppCompat_ListView;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_AppCompat_ListView_DropDown = global::HelloworldXamarin.Droid.Resource.Style.Widget_AppCompat_ListView_DropDown;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_AppCompat_ListView_Menu = global::HelloworldXamarin.Droid.Resource.Style.Widget_AppCompat_ListView_Menu;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_AppCompat_PopupMenu = global::HelloworldXamarin.Droid.Resource.Style.Widget_AppCompat_PopupMenu;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_AppCompat_PopupMenu_Overflow = global::HelloworldXamarin.Droid.Resource.Style.Widget_AppCompat_PopupMenu_Overflow;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_AppCompat_PopupWindow = global::HelloworldXamarin.Droid.Resource.Style.Widget_AppCompat_PopupWindow;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_AppCompat_ProgressBar = global::HelloworldXamarin.Droid.Resource.Style.Widget_AppCompat_ProgressBar;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_AppCompat_ProgressBar_Horizontal = global::HelloworldXamarin.Droid.Resource.Style.Widget_AppCompat_ProgressBar_Horizontal;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_AppCompat_RatingBar = global::HelloworldXamarin.Droid.Resource.Style.Widget_AppCompat_RatingBar;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_AppCompat_RatingBar_Indicator = global::HelloworldXamarin.Droid.Resource.Style.Widget_AppCompat_RatingBar_Indicator;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_AppCompat_RatingBar_Small = global::HelloworldXamarin.Droid.Resource.Style.Widget_AppCompat_RatingBar_Small;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_AppCompat_SearchView = global::HelloworldXamarin.Droid.Resource.Style.Widget_AppCompat_SearchView;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_AppCompat_SearchView_ActionBar = global::HelloworldXamarin.Droid.Resource.Style.Widget_AppCompat_SearchView_ActionBar;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_AppCompat_SeekBar = global::HelloworldXamarin.Droid.Resource.Style.Widget_AppCompat_SeekBar;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_AppCompat_SeekBar_Discrete = global::HelloworldXamarin.Droid.Resource.Style.Widget_AppCompat_SeekBar_Discrete;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_AppCompat_Spinner = global::HelloworldXamarin.Droid.Resource.Style.Widget_AppCompat_Spinner;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_AppCompat_Spinner_DropDown = global::HelloworldXamarin.Droid.Resource.Style.Widget_AppCompat_Spinner_DropDown;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_AppCompat_Spinner_DropDown_ActionBar = global::HelloworldXamarin.Droid.Resource.Style.Widget_AppCompat_Spinner_DropDown_ActionBar;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_AppCompat_Spinner_Underlined = global::HelloworldXamarin.Droid.Resource.Style.Widget_AppCompat_Spinner_Underlined;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_AppCompat_TextView_SpinnerItem = global::HelloworldXamarin.Droid.Resource.Style.Widget_AppCompat_TextView_SpinnerItem;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_AppCompat_Toolbar = global::HelloworldXamarin.Droid.Resource.Style.Widget_AppCompat_Toolbar;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_AppCompat_Toolbar_Button_Navigation = global::HelloworldXamarin.Droid.Resource.Style.Widget_AppCompat_Toolbar_Button_Navigation;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_Compat_NotificationActionContainer = global::HelloworldXamarin.Droid.Resource.Style.Widget_Compat_NotificationActionContainer;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_Compat_NotificationActionText = global::HelloworldXamarin.Droid.Resource.Style.Widget_Compat_NotificationActionText;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_Design_AppBarLayout = global::HelloworldXamarin.Droid.Resource.Style.Widget_Design_AppBarLayout;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_Design_BottomNavigationView = global::HelloworldXamarin.Droid.Resource.Style.Widget_Design_BottomNavigationView;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_Design_BottomSheet_Modal = global::HelloworldXamarin.Droid.Resource.Style.Widget_Design_BottomSheet_Modal;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_Design_CollapsingToolbar = global::HelloworldXamarin.Droid.Resource.Style.Widget_Design_CollapsingToolbar;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_Design_FloatingActionButton = global::HelloworldXamarin.Droid.Resource.Style.Widget_Design_FloatingActionButton;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_Design_NavigationView = global::HelloworldXamarin.Droid.Resource.Style.Widget_Design_NavigationView;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_Design_ScrimInsetsFrameLayout = global::HelloworldXamarin.Droid.Resource.Style.Widget_Design_ScrimInsetsFrameLayout;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_Design_Snackbar = global::HelloworldXamarin.Droid.Resource.Style.Widget_Design_Snackbar;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_Design_TabLayout = global::HelloworldXamarin.Droid.Resource.Style.Widget_Design_TabLayout;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_Design_TextInputLayout = global::HelloworldXamarin.Droid.Resource.Style.Widget_Design_TextInputLayout;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_MaterialComponents_BottomAppBar = global::HelloworldXamarin.Droid.Resource.Style.Widget_MaterialComponents_BottomAppBar;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_MaterialComponents_BottomAppBar_Colored = global::HelloworldXamarin.Droid.Resource.Style.Widget_MaterialComponents_BottomAppBar_Colored;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_MaterialComponents_BottomNavigationView = global::HelloworldXamarin.Droid.Resource.Style.Widget_MaterialComponents_BottomNavigationView;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_MaterialComponents_BottomNavigationView_Colored = global::HelloworldXamarin.Droid.Resource.Style.Widget_MaterialComponents_BottomNavigationView_Colored;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_MaterialComponents_BottomSheet_Modal = global::HelloworldXamarin.Droid.Resource.Style.Widget_MaterialComponents_BottomSheet_Modal;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_MaterialComponents_Button = global::HelloworldXamarin.Droid.Resource.Style.Widget_MaterialComponents_Button;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_MaterialComponents_Button_Icon = global::HelloworldXamarin.Droid.Resource.Style.Widget_MaterialComponents_Button_Icon;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_MaterialComponents_Button_OutlinedButton = global::HelloworldXamarin.Droid.Resource.Style.Widget_MaterialComponents_Button_OutlinedButton;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_MaterialComponents_Button_OutlinedButton_Icon = global::HelloworldXamarin.Droid.Resource.Style.Widget_MaterialComponents_Button_OutlinedButton_Icon;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_MaterialComponents_Button_TextButton = global::HelloworldXamarin.Droid.Resource.Style.Widget_MaterialComponents_Button_TextButton;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_MaterialComponents_Button_TextButton_Dialog = global::HelloworldXamarin.Droid.Resource.Style.Widget_MaterialComponents_Button_TextButton_Dialog;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_MaterialComponents_Button_TextButton_Dialog_Icon = global::HelloworldXamarin.Droid.Resource.Style.Widget_MaterialComponents_Button_TextButton_Dialog_Icon;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_MaterialComponents_Button_TextButton_Icon = global::HelloworldXamarin.Droid.Resource.Style.Widget_MaterialComponents_Button_TextButton_Icon;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_MaterialComponents_Button_UnelevatedButton = global::HelloworldXamarin.Droid.Resource.Style.Widget_MaterialComponents_Button_UnelevatedButton;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_MaterialComponents_Button_UnelevatedButton_Icon = global::HelloworldXamarin.Droid.Resource.Style.Widget_MaterialComponents_Button_UnelevatedButton_Icon;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_MaterialComponents_CardView = global::HelloworldXamarin.Droid.Resource.Style.Widget_MaterialComponents_CardView;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_MaterialComponents_ChipGroup = global::HelloworldXamarin.Droid.Resource.Style.Widget_MaterialComponents_ChipGroup;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_MaterialComponents_Chip_Action = global::HelloworldXamarin.Droid.Resource.Style.Widget_MaterialComponents_Chip_Action;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_MaterialComponents_Chip_Choice = global::HelloworldXamarin.Droid.Resource.Style.Widget_MaterialComponents_Chip_Choice;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_MaterialComponents_Chip_Entry = global::HelloworldXamarin.Droid.Resource.Style.Widget_MaterialComponents_Chip_Entry;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_MaterialComponents_Chip_Filter = global::HelloworldXamarin.Droid.Resource.Style.Widget_MaterialComponents_Chip_Filter;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_MaterialComponents_FloatingActionButton = global::HelloworldXamarin.Droid.Resource.Style.Widget_MaterialComponents_FloatingActionButton;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_MaterialComponents_NavigationView = global::HelloworldXamarin.Droid.Resource.Style.Widget_MaterialComponents_NavigationView;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_MaterialComponents_Snackbar = global::HelloworldXamarin.Droid.Resource.Style.Widget_MaterialComponents_Snackbar;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_MaterialComponents_Snackbar_FullWidth = global::HelloworldXamarin.Droid.Resource.Style.Widget_MaterialComponents_Snackbar_FullWidth;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_MaterialComponents_TabLayout = global::HelloworldXamarin.Droid.Resource.Style.Widget_MaterialComponents_TabLayout;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_MaterialComponents_TabLayout_Colored = global::HelloworldXamarin.Droid.Resource.Style.Widget_MaterialComponents_TabLayout_Colored;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_MaterialComponents_TextInputEditText_FilledBox = global::HelloworldXamarin.Droid.Resource.Style.Widget_MaterialComponents_TextInputEditText_FilledBox;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_MaterialComponents_TextInputEditText_FilledBox_Dense = global::HelloworldXamarin.Droid.Resource.Style.Widget_MaterialComponents_TextInputEditText_FilledBox_Dense;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_MaterialComponents_TextInputEditText_OutlinedBox = global::HelloworldXamarin.Droid.Resource.Style.Widget_MaterialComponents_TextInputEditText_OutlinedBox;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_MaterialComponents_TextInputEditText_OutlinedBox_Dense = global::HelloworldXamarin.Droid.Resource.Style.Widget_MaterialComponents_TextInputEditText_OutlinedBox_Dense;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_MaterialComponents_TextInputLayout_FilledBox = global::HelloworldXamarin.Droid.Resource.Style.Widget_MaterialComponents_TextInputLayout_FilledBox;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_MaterialComponents_TextInputLayout_FilledBox_Dense = global::HelloworldXamarin.Droid.Resource.Style.Widget_MaterialComponents_TextInputLayout_FilledBox_Dense;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_MaterialComponents_TextInputLayout_OutlinedBox = global::HelloworldXamarin.Droid.Resource.Style.Widget_MaterialComponents_TextInputLayout_OutlinedBox;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_MaterialComponents_TextInputLayout_OutlinedBox_Dense = global::HelloworldXamarin.Droid.Resource.Style.Widget_MaterialComponents_TextInputLayout_OutlinedBox_Dense;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_MaterialComponents_Toolbar = global::HelloworldXamarin.Droid.Resource.Style.Widget_MaterialComponents_Toolbar;
+ global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_Support_CoordinatorLayout = global::HelloworldXamarin.Droid.Resource.Style.Widget_Support_CoordinatorLayout;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.ActionBar = global::HelloworldXamarin.Droid.Resource.Styleable.ActionBar;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.ActionBarLayout = global::HelloworldXamarin.Droid.Resource.Styleable.ActionBarLayout;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.ActionBarLayout_android_layout_gravity = global::HelloworldXamarin.Droid.Resource.Styleable.ActionBarLayout_android_layout_gravity;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.ActionBar_background = global::HelloworldXamarin.Droid.Resource.Styleable.ActionBar_background;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.ActionBar_backgroundSplit = global::HelloworldXamarin.Droid.Resource.Styleable.ActionBar_backgroundSplit;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.ActionBar_backgroundStacked = global::HelloworldXamarin.Droid.Resource.Styleable.ActionBar_backgroundStacked;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.ActionBar_contentInsetEnd = global::HelloworldXamarin.Droid.Resource.Styleable.ActionBar_contentInsetEnd;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.ActionBar_contentInsetEndWithActions = global::HelloworldXamarin.Droid.Resource.Styleable.ActionBar_contentInsetEndWithActions;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.ActionBar_contentInsetLeft = global::HelloworldXamarin.Droid.Resource.Styleable.ActionBar_contentInsetLeft;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.ActionBar_contentInsetRight = global::HelloworldXamarin.Droid.Resource.Styleable.ActionBar_contentInsetRight;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.ActionBar_contentInsetStart = global::HelloworldXamarin.Droid.Resource.Styleable.ActionBar_contentInsetStart;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.ActionBar_contentInsetStartWithNavigation = global::HelloworldXamarin.Droid.Resource.Styleable.ActionBar_contentInsetStartWithNavigation;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.ActionBar_customNavigationLayout = global::HelloworldXamarin.Droid.Resource.Styleable.ActionBar_customNavigationLayout;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.ActionBar_displayOptions = global::HelloworldXamarin.Droid.Resource.Styleable.ActionBar_displayOptions;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.ActionBar_divider = global::HelloworldXamarin.Droid.Resource.Styleable.ActionBar_divider;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.ActionBar_elevation = global::HelloworldXamarin.Droid.Resource.Styleable.ActionBar_elevation;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.ActionBar_height = global::HelloworldXamarin.Droid.Resource.Styleable.ActionBar_height;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.ActionBar_hideOnContentScroll = global::HelloworldXamarin.Droid.Resource.Styleable.ActionBar_hideOnContentScroll;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.ActionBar_homeAsUpIndicator = global::HelloworldXamarin.Droid.Resource.Styleable.ActionBar_homeAsUpIndicator;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.ActionBar_homeLayout = global::HelloworldXamarin.Droid.Resource.Styleable.ActionBar_homeLayout;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.ActionBar_icon = global::HelloworldXamarin.Droid.Resource.Styleable.ActionBar_icon;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.ActionBar_indeterminateProgressStyle = global::HelloworldXamarin.Droid.Resource.Styleable.ActionBar_indeterminateProgressStyle;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.ActionBar_itemPadding = global::HelloworldXamarin.Droid.Resource.Styleable.ActionBar_itemPadding;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.ActionBar_logo = global::HelloworldXamarin.Droid.Resource.Styleable.ActionBar_logo;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.ActionBar_navigationMode = global::HelloworldXamarin.Droid.Resource.Styleable.ActionBar_navigationMode;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.ActionBar_popupTheme = global::HelloworldXamarin.Droid.Resource.Styleable.ActionBar_popupTheme;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.ActionBar_progressBarPadding = global::HelloworldXamarin.Droid.Resource.Styleable.ActionBar_progressBarPadding;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.ActionBar_progressBarStyle = global::HelloworldXamarin.Droid.Resource.Styleable.ActionBar_progressBarStyle;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.ActionBar_subtitle = global::HelloworldXamarin.Droid.Resource.Styleable.ActionBar_subtitle;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.ActionBar_subtitleTextStyle = global::HelloworldXamarin.Droid.Resource.Styleable.ActionBar_subtitleTextStyle;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.ActionBar_title = global::HelloworldXamarin.Droid.Resource.Styleable.ActionBar_title;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.ActionBar_titleTextStyle = global::HelloworldXamarin.Droid.Resource.Styleable.ActionBar_titleTextStyle;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.ActionMenuItemView = global::HelloworldXamarin.Droid.Resource.Styleable.ActionMenuItemView;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.ActionMenuItemView_android_minWidth = global::HelloworldXamarin.Droid.Resource.Styleable.ActionMenuItemView_android_minWidth;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.ActionMenuView = global::HelloworldXamarin.Droid.Resource.Styleable.ActionMenuView;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.ActionMode = global::HelloworldXamarin.Droid.Resource.Styleable.ActionMode;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.ActionMode_background = global::HelloworldXamarin.Droid.Resource.Styleable.ActionMode_background;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.ActionMode_backgroundSplit = global::HelloworldXamarin.Droid.Resource.Styleable.ActionMode_backgroundSplit;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.ActionMode_closeItemLayout = global::HelloworldXamarin.Droid.Resource.Styleable.ActionMode_closeItemLayout;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.ActionMode_height = global::HelloworldXamarin.Droid.Resource.Styleable.ActionMode_height;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.ActionMode_subtitleTextStyle = global::HelloworldXamarin.Droid.Resource.Styleable.ActionMode_subtitleTextStyle;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.ActionMode_titleTextStyle = global::HelloworldXamarin.Droid.Resource.Styleable.ActionMode_titleTextStyle;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.ActivityChooserView = global::HelloworldXamarin.Droid.Resource.Styleable.ActivityChooserView;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.ActivityChooserView_expandActivityOverflowButtonDrawable = global::HelloworldXamarin.Droid.Resource.Styleable.ActivityChooserView_expandActivityOverflowButtonDrawable;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.ActivityChooserView_initialActivityCount = global::HelloworldXamarin.Droid.Resource.Styleable.ActivityChooserView_initialActivityCount;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AlertDialog = global::HelloworldXamarin.Droid.Resource.Styleable.AlertDialog;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AlertDialog_android_layout = global::HelloworldXamarin.Droid.Resource.Styleable.AlertDialog_android_layout;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AlertDialog_buttonIconDimen = global::HelloworldXamarin.Droid.Resource.Styleable.AlertDialog_buttonIconDimen;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AlertDialog_buttonPanelSideLayout = global::HelloworldXamarin.Droid.Resource.Styleable.AlertDialog_buttonPanelSideLayout;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AlertDialog_listItemLayout = global::HelloworldXamarin.Droid.Resource.Styleable.AlertDialog_listItemLayout;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AlertDialog_listLayout = global::HelloworldXamarin.Droid.Resource.Styleable.AlertDialog_listLayout;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AlertDialog_multiChoiceItemLayout = global::HelloworldXamarin.Droid.Resource.Styleable.AlertDialog_multiChoiceItemLayout;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AlertDialog_showTitle = global::HelloworldXamarin.Droid.Resource.Styleable.AlertDialog_showTitle;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AlertDialog_singleChoiceItemLayout = global::HelloworldXamarin.Droid.Resource.Styleable.AlertDialog_singleChoiceItemLayout;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AnimatedStateListDrawableCompat = global::HelloworldXamarin.Droid.Resource.Styleable.AnimatedStateListDrawableCompat;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AnimatedStateListDrawableCompat_android_constantSize = global::HelloworldXamarin.Droid.Resource.Styleable.AnimatedStateListDrawableCompat_android_constantSize;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AnimatedStateListDrawableCompat_android_dither = global::HelloworldXamarin.Droid.Resource.Styleable.AnimatedStateListDrawableCompat_android_dither;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AnimatedStateListDrawableCompat_android_enterFadeDuration = global::HelloworldXamarin.Droid.Resource.Styleable.AnimatedStateListDrawableCompat_android_enterFadeDuration;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AnimatedStateListDrawableCompat_android_exitFadeDuration = global::HelloworldXamarin.Droid.Resource.Styleable.AnimatedStateListDrawableCompat_android_exitFadeDuration;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AnimatedStateListDrawableCompat_android_variablePadding = global::HelloworldXamarin.Droid.Resource.Styleable.AnimatedStateListDrawableCompat_android_variablePadding;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AnimatedStateListDrawableCompat_android_visible = global::HelloworldXamarin.Droid.Resource.Styleable.AnimatedStateListDrawableCompat_android_visible;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AnimatedStateListDrawableItem = global::HelloworldXamarin.Droid.Resource.Styleable.AnimatedStateListDrawableItem;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AnimatedStateListDrawableItem_android_drawable = global::HelloworldXamarin.Droid.Resource.Styleable.AnimatedStateListDrawableItem_android_drawable;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AnimatedStateListDrawableItem_android_id = global::HelloworldXamarin.Droid.Resource.Styleable.AnimatedStateListDrawableItem_android_id;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AnimatedStateListDrawableTransition = global::HelloworldXamarin.Droid.Resource.Styleable.AnimatedStateListDrawableTransition;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AnimatedStateListDrawableTransition_android_drawable = global::HelloworldXamarin.Droid.Resource.Styleable.AnimatedStateListDrawableTransition_android_drawable;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AnimatedStateListDrawableTransition_android_fromId = global::HelloworldXamarin.Droid.Resource.Styleable.AnimatedStateListDrawableTransition_android_fromId;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AnimatedStateListDrawableTransition_android_reversible = global::HelloworldXamarin.Droid.Resource.Styleable.AnimatedStateListDrawableTransition_android_reversible;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AnimatedStateListDrawableTransition_android_toId = global::HelloworldXamarin.Droid.Resource.Styleable.AnimatedStateListDrawableTransition_android_toId;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppBarLayout = global::HelloworldXamarin.Droid.Resource.Styleable.AppBarLayout;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppBarLayoutStates = global::HelloworldXamarin.Droid.Resource.Styleable.AppBarLayoutStates;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppBarLayoutStates_state_collapsed = global::HelloworldXamarin.Droid.Resource.Styleable.AppBarLayoutStates_state_collapsed;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppBarLayoutStates_state_collapsible = global::HelloworldXamarin.Droid.Resource.Styleable.AppBarLayoutStates_state_collapsible;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppBarLayoutStates_state_liftable = global::HelloworldXamarin.Droid.Resource.Styleable.AppBarLayoutStates_state_liftable;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppBarLayoutStates_state_lifted = global::HelloworldXamarin.Droid.Resource.Styleable.AppBarLayoutStates_state_lifted;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppBarLayout_android_background = global::HelloworldXamarin.Droid.Resource.Styleable.AppBarLayout_android_background;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppBarLayout_android_keyboardNavigationCluster = global::HelloworldXamarin.Droid.Resource.Styleable.AppBarLayout_android_keyboardNavigationCluster;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppBarLayout_android_touchscreenBlocksFocus = global::HelloworldXamarin.Droid.Resource.Styleable.AppBarLayout_android_touchscreenBlocksFocus;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppBarLayout_elevation = global::HelloworldXamarin.Droid.Resource.Styleable.AppBarLayout_elevation;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppBarLayout_expanded = global::HelloworldXamarin.Droid.Resource.Styleable.AppBarLayout_expanded;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppBarLayout_Layout = global::HelloworldXamarin.Droid.Resource.Styleable.AppBarLayout_Layout;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppBarLayout_Layout_layout_scrollFlags = global::HelloworldXamarin.Droid.Resource.Styleable.AppBarLayout_Layout_layout_scrollFlags;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppBarLayout_Layout_layout_scrollInterpolator = global::HelloworldXamarin.Droid.Resource.Styleable.AppBarLayout_Layout_layout_scrollInterpolator;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppBarLayout_liftOnScroll = global::HelloworldXamarin.Droid.Resource.Styleable.AppBarLayout_liftOnScroll;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatImageView = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatImageView;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatImageView_android_src = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatImageView_android_src;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatImageView_srcCompat = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatImageView_srcCompat;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatImageView_tint = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatImageView_tint;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatImageView_tintMode = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatImageView_tintMode;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatSeekBar = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatSeekBar;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatSeekBar_android_thumb = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatSeekBar_android_thumb;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatSeekBar_tickMark = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatSeekBar_tickMark;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatSeekBar_tickMarkTint = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatSeekBar_tickMarkTint;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatSeekBar_tickMarkTintMode = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatSeekBar_tickMarkTintMode;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTextHelper = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTextHelper;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTextHelper_android_drawableBottom = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTextHelper_android_drawableBottom;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTextHelper_android_drawableEnd = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTextHelper_android_drawableEnd;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTextHelper_android_drawableLeft = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTextHelper_android_drawableLeft;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTextHelper_android_drawableRight = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTextHelper_android_drawableRight;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTextHelper_android_drawableStart = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTextHelper_android_drawableStart;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTextHelper_android_drawableTop = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTextHelper_android_drawableTop;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTextHelper_android_textAppearance = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTextHelper_android_textAppearance;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTextView = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTextView;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTextView_android_textAppearance = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTextView_android_textAppearance;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTextView_autoSizeMaxTextSize = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTextView_autoSizeMaxTextSize;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTextView_autoSizeMinTextSize = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTextView_autoSizeMinTextSize;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTextView_autoSizePresetSizes = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTextView_autoSizePresetSizes;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTextView_autoSizeStepGranularity = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTextView_autoSizeStepGranularity;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTextView_autoSizeTextType = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTextView_autoSizeTextType;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTextView_firstBaselineToTopHeight = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTextView_firstBaselineToTopHeight;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTextView_fontFamily = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTextView_fontFamily;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTextView_lastBaselineToBottomHeight = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTextView_lastBaselineToBottomHeight;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTextView_lineHeight = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTextView_lineHeight;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTextView_textAllCaps = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTextView_textAllCaps;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_actionBarDivider = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_actionBarDivider;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_actionBarItemBackground = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_actionBarItemBackground;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_actionBarPopupTheme = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_actionBarPopupTheme;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_actionBarSize = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_actionBarSize;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_actionBarSplitStyle = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_actionBarSplitStyle;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_actionBarStyle = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_actionBarStyle;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_actionBarTabBarStyle = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_actionBarTabBarStyle;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_actionBarTabStyle = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_actionBarTabStyle;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_actionBarTabTextStyle = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_actionBarTabTextStyle;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_actionBarTheme = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_actionBarTheme;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_actionBarWidgetTheme = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_actionBarWidgetTheme;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_actionButtonStyle = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_actionButtonStyle;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_actionDropDownStyle = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_actionDropDownStyle;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_actionMenuTextAppearance = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_actionMenuTextAppearance;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_actionMenuTextColor = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_actionMenuTextColor;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_actionModeBackground = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_actionModeBackground;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_actionModeCloseButtonStyle = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_actionModeCloseButtonStyle;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_actionModeCloseDrawable = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_actionModeCloseDrawable;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_actionModeCopyDrawable = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_actionModeCopyDrawable;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_actionModeCutDrawable = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_actionModeCutDrawable;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_actionModeFindDrawable = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_actionModeFindDrawable;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_actionModePasteDrawable = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_actionModePasteDrawable;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_actionModePopupWindowStyle = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_actionModePopupWindowStyle;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_actionModeSelectAllDrawable = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_actionModeSelectAllDrawable;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_actionModeShareDrawable = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_actionModeShareDrawable;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_actionModeSplitBackground = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_actionModeSplitBackground;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_actionModeStyle = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_actionModeStyle;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_actionModeWebSearchDrawable = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_actionModeWebSearchDrawable;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_actionOverflowButtonStyle = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_actionOverflowButtonStyle;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_actionOverflowMenuStyle = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_actionOverflowMenuStyle;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_activityChooserViewStyle = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_activityChooserViewStyle;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_alertDialogButtonGroupStyle = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_alertDialogButtonGroupStyle;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_alertDialogCenterButtons = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_alertDialogCenterButtons;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_alertDialogStyle = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_alertDialogStyle;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_alertDialogTheme = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_alertDialogTheme;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_android_windowAnimationStyle = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_android_windowAnimationStyle;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_android_windowIsFloating = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_android_windowIsFloating;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_autoCompleteTextViewStyle = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_autoCompleteTextViewStyle;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_borderlessButtonStyle = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_borderlessButtonStyle;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_buttonBarButtonStyle = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_buttonBarButtonStyle;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_buttonBarNegativeButtonStyle = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_buttonBarNegativeButtonStyle;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_buttonBarNeutralButtonStyle = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_buttonBarNeutralButtonStyle;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_buttonBarPositiveButtonStyle = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_buttonBarPositiveButtonStyle;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_buttonBarStyle = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_buttonBarStyle;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_buttonStyle = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_buttonStyle;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_buttonStyleSmall = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_buttonStyleSmall;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_checkboxStyle = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_checkboxStyle;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_checkedTextViewStyle = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_checkedTextViewStyle;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_colorAccent = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_colorAccent;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_colorBackgroundFloating = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_colorBackgroundFloating;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_colorButtonNormal = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_colorButtonNormal;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_colorControlActivated = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_colorControlActivated;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_colorControlHighlight = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_colorControlHighlight;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_colorControlNormal = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_colorControlNormal;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_colorError = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_colorError;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_colorPrimary = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_colorPrimary;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_colorPrimaryDark = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_colorPrimaryDark;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_colorSwitchThumbNormal = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_colorSwitchThumbNormal;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_controlBackground = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_controlBackground;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_dialogCornerRadius = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_dialogCornerRadius;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_dialogPreferredPadding = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_dialogPreferredPadding;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_dialogTheme = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_dialogTheme;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_dividerHorizontal = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_dividerHorizontal;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_dividerVertical = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_dividerVertical;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_dropdownListPreferredItemHeight = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_dropdownListPreferredItemHeight;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_dropDownListViewStyle = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_dropDownListViewStyle;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_editTextBackground = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_editTextBackground;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_editTextColor = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_editTextColor;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_editTextStyle = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_editTextStyle;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_homeAsUpIndicator = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_homeAsUpIndicator;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_imageButtonStyle = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_imageButtonStyle;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_listChoiceBackgroundIndicator = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_listChoiceBackgroundIndicator;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_listDividerAlertDialog = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_listDividerAlertDialog;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_listMenuViewStyle = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_listMenuViewStyle;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_listPopupWindowStyle = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_listPopupWindowStyle;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_listPreferredItemHeight = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_listPreferredItemHeight;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_listPreferredItemHeightLarge = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_listPreferredItemHeightLarge;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_listPreferredItemHeightSmall = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_listPreferredItemHeightSmall;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_listPreferredItemPaddingLeft = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_listPreferredItemPaddingLeft;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_listPreferredItemPaddingRight = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_listPreferredItemPaddingRight;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_panelBackground = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_panelBackground;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_panelMenuListTheme = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_panelMenuListTheme;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_panelMenuListWidth = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_panelMenuListWidth;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_popupMenuStyle = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_popupMenuStyle;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_popupWindowStyle = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_popupWindowStyle;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_radioButtonStyle = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_radioButtonStyle;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_ratingBarStyle = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_ratingBarStyle;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_ratingBarStyleIndicator = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_ratingBarStyleIndicator;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_ratingBarStyleSmall = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_ratingBarStyleSmall;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_searchViewStyle = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_searchViewStyle;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_seekBarStyle = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_seekBarStyle;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_selectableItemBackground = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_selectableItemBackground;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_selectableItemBackgroundBorderless = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_selectableItemBackgroundBorderless;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_spinnerDropDownItemStyle = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_spinnerDropDownItemStyle;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_spinnerStyle = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_spinnerStyle;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_switchStyle = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_switchStyle;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_textAppearanceLargePopupMenu = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_textAppearanceLargePopupMenu;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_textAppearanceListItem = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_textAppearanceListItem;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_textAppearanceListItemSecondary = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_textAppearanceListItemSecondary;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_textAppearanceListItemSmall = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_textAppearanceListItemSmall;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_textAppearancePopupMenuHeader = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_textAppearancePopupMenuHeader;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_textAppearanceSearchResultSubtitle = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_textAppearanceSearchResultSubtitle;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_textAppearanceSearchResultTitle = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_textAppearanceSearchResultTitle;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_textAppearanceSmallPopupMenu = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_textAppearanceSmallPopupMenu;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_textColorAlertDialogListItem = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_textColorAlertDialogListItem;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_textColorSearchUrl = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_textColorSearchUrl;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_toolbarNavigationButtonStyle = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_toolbarNavigationButtonStyle;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_toolbarStyle = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_toolbarStyle;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_tooltipForegroundColor = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_tooltipForegroundColor;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_tooltipFrameBackground = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_tooltipFrameBackground;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_viewInflaterClass = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_viewInflaterClass;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_windowActionBar = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_windowActionBar;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_windowActionBarOverlay = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_windowActionBarOverlay;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_windowActionModeOverlay = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_windowActionModeOverlay;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_windowFixedHeightMajor = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_windowFixedHeightMajor;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_windowFixedHeightMinor = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_windowFixedHeightMinor;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_windowFixedWidthMajor = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_windowFixedWidthMajor;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_windowFixedWidthMinor = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_windowFixedWidthMinor;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_windowMinWidthMajor = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_windowMinWidthMajor;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_windowMinWidthMinor = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_windowMinWidthMinor;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_windowNoTitle = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_windowNoTitle;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.BottomAppBar = global::HelloworldXamarin.Droid.Resource.Styleable.BottomAppBar;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.BottomAppBar_backgroundTint = global::HelloworldXamarin.Droid.Resource.Styleable.BottomAppBar_backgroundTint;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.BottomAppBar_fabAlignmentMode = global::HelloworldXamarin.Droid.Resource.Styleable.BottomAppBar_fabAlignmentMode;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.BottomAppBar_fabCradleMargin = global::HelloworldXamarin.Droid.Resource.Styleable.BottomAppBar_fabCradleMargin;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.BottomAppBar_fabCradleRoundedCornerRadius = global::HelloworldXamarin.Droid.Resource.Styleable.BottomAppBar_fabCradleRoundedCornerRadius;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.BottomAppBar_fabCradleVerticalOffset = global::HelloworldXamarin.Droid.Resource.Styleable.BottomAppBar_fabCradleVerticalOffset;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.BottomAppBar_hideOnScroll = global::HelloworldXamarin.Droid.Resource.Styleable.BottomAppBar_hideOnScroll;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.BottomNavigationView = global::HelloworldXamarin.Droid.Resource.Styleable.BottomNavigationView;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.BottomNavigationView_elevation = global::HelloworldXamarin.Droid.Resource.Styleable.BottomNavigationView_elevation;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.BottomNavigationView_itemBackground = global::HelloworldXamarin.Droid.Resource.Styleable.BottomNavigationView_itemBackground;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.BottomNavigationView_itemHorizontalTranslationEnabled = global::HelloworldXamarin.Droid.Resource.Styleable.BottomNavigationView_itemHorizontalTranslationEnabled;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.BottomNavigationView_itemIconSize = global::HelloworldXamarin.Droid.Resource.Styleable.BottomNavigationView_itemIconSize;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.BottomNavigationView_itemIconTint = global::HelloworldXamarin.Droid.Resource.Styleable.BottomNavigationView_itemIconTint;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.BottomNavigationView_itemTextAppearanceActive = global::HelloworldXamarin.Droid.Resource.Styleable.BottomNavigationView_itemTextAppearanceActive;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.BottomNavigationView_itemTextAppearanceInactive = global::HelloworldXamarin.Droid.Resource.Styleable.BottomNavigationView_itemTextAppearanceInactive;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.BottomNavigationView_itemTextColor = global::HelloworldXamarin.Droid.Resource.Styleable.BottomNavigationView_itemTextColor;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.BottomNavigationView_labelVisibilityMode = global::HelloworldXamarin.Droid.Resource.Styleable.BottomNavigationView_labelVisibilityMode;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.BottomNavigationView_menu = global::HelloworldXamarin.Droid.Resource.Styleable.BottomNavigationView_menu;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.BottomSheetBehavior_Layout = global::HelloworldXamarin.Droid.Resource.Styleable.BottomSheetBehavior_Layout;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.BottomSheetBehavior_Layout_behavior_fitToContents = global::HelloworldXamarin.Droid.Resource.Styleable.BottomSheetBehavior_Layout_behavior_fitToContents;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.BottomSheetBehavior_Layout_behavior_hideable = global::HelloworldXamarin.Droid.Resource.Styleable.BottomSheetBehavior_Layout_behavior_hideable;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.BottomSheetBehavior_Layout_behavior_peekHeight = global::HelloworldXamarin.Droid.Resource.Styleable.BottomSheetBehavior_Layout_behavior_peekHeight;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.BottomSheetBehavior_Layout_behavior_skipCollapsed = global::HelloworldXamarin.Droid.Resource.Styleable.BottomSheetBehavior_Layout_behavior_skipCollapsed;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.ButtonBarLayout = global::HelloworldXamarin.Droid.Resource.Styleable.ButtonBarLayout;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.ButtonBarLayout_allowStacking = global::HelloworldXamarin.Droid.Resource.Styleable.ButtonBarLayout_allowStacking;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.CardView = global::HelloworldXamarin.Droid.Resource.Styleable.CardView;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.CardView_android_minHeight = global::HelloworldXamarin.Droid.Resource.Styleable.CardView_android_minHeight;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.CardView_android_minWidth = global::HelloworldXamarin.Droid.Resource.Styleable.CardView_android_minWidth;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.CardView_cardBackgroundColor = global::HelloworldXamarin.Droid.Resource.Styleable.CardView_cardBackgroundColor;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.CardView_cardCornerRadius = global::HelloworldXamarin.Droid.Resource.Styleable.CardView_cardCornerRadius;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.CardView_cardElevation = global::HelloworldXamarin.Droid.Resource.Styleable.CardView_cardElevation;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.CardView_cardMaxElevation = global::HelloworldXamarin.Droid.Resource.Styleable.CardView_cardMaxElevation;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.CardView_cardPreventCornerOverlap = global::HelloworldXamarin.Droid.Resource.Styleable.CardView_cardPreventCornerOverlap;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.CardView_cardUseCompatPadding = global::HelloworldXamarin.Droid.Resource.Styleable.CardView_cardUseCompatPadding;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.CardView_contentPadding = global::HelloworldXamarin.Droid.Resource.Styleable.CardView_contentPadding;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.CardView_contentPaddingBottom = global::HelloworldXamarin.Droid.Resource.Styleable.CardView_contentPaddingBottom;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.CardView_contentPaddingLeft = global::HelloworldXamarin.Droid.Resource.Styleable.CardView_contentPaddingLeft;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.CardView_contentPaddingRight = global::HelloworldXamarin.Droid.Resource.Styleable.CardView_contentPaddingRight;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.CardView_contentPaddingTop = global::HelloworldXamarin.Droid.Resource.Styleable.CardView_contentPaddingTop;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.Chip = global::HelloworldXamarin.Droid.Resource.Styleable.Chip;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.ChipGroup = global::HelloworldXamarin.Droid.Resource.Styleable.ChipGroup;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.ChipGroup_checkedChip = global::HelloworldXamarin.Droid.Resource.Styleable.ChipGroup_checkedChip;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.ChipGroup_chipSpacing = global::HelloworldXamarin.Droid.Resource.Styleable.ChipGroup_chipSpacing;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.ChipGroup_chipSpacingHorizontal = global::HelloworldXamarin.Droid.Resource.Styleable.ChipGroup_chipSpacingHorizontal;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.ChipGroup_chipSpacingVertical = global::HelloworldXamarin.Droid.Resource.Styleable.ChipGroup_chipSpacingVertical;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.ChipGroup_singleLine = global::HelloworldXamarin.Droid.Resource.Styleable.ChipGroup_singleLine;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.ChipGroup_singleSelection = global::HelloworldXamarin.Droid.Resource.Styleable.ChipGroup_singleSelection;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.Chip_android_checkable = global::HelloworldXamarin.Droid.Resource.Styleable.Chip_android_checkable;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.Chip_android_ellipsize = global::HelloworldXamarin.Droid.Resource.Styleable.Chip_android_ellipsize;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.Chip_android_maxWidth = global::HelloworldXamarin.Droid.Resource.Styleable.Chip_android_maxWidth;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.Chip_android_text = global::HelloworldXamarin.Droid.Resource.Styleable.Chip_android_text;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.Chip_android_textAppearance = global::HelloworldXamarin.Droid.Resource.Styleable.Chip_android_textAppearance;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.Chip_checkedIcon = global::HelloworldXamarin.Droid.Resource.Styleable.Chip_checkedIcon;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.Chip_checkedIconEnabled = global::HelloworldXamarin.Droid.Resource.Styleable.Chip_checkedIconEnabled;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.Chip_checkedIconVisible = global::HelloworldXamarin.Droid.Resource.Styleable.Chip_checkedIconVisible;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.Chip_chipBackgroundColor = global::HelloworldXamarin.Droid.Resource.Styleable.Chip_chipBackgroundColor;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.Chip_chipCornerRadius = global::HelloworldXamarin.Droid.Resource.Styleable.Chip_chipCornerRadius;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.Chip_chipEndPadding = global::HelloworldXamarin.Droid.Resource.Styleable.Chip_chipEndPadding;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.Chip_chipIcon = global::HelloworldXamarin.Droid.Resource.Styleable.Chip_chipIcon;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.Chip_chipIconEnabled = global::HelloworldXamarin.Droid.Resource.Styleable.Chip_chipIconEnabled;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.Chip_chipIconSize = global::HelloworldXamarin.Droid.Resource.Styleable.Chip_chipIconSize;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.Chip_chipIconTint = global::HelloworldXamarin.Droid.Resource.Styleable.Chip_chipIconTint;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.Chip_chipIconVisible = global::HelloworldXamarin.Droid.Resource.Styleable.Chip_chipIconVisible;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.Chip_chipMinHeight = global::HelloworldXamarin.Droid.Resource.Styleable.Chip_chipMinHeight;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.Chip_chipStartPadding = global::HelloworldXamarin.Droid.Resource.Styleable.Chip_chipStartPadding;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.Chip_chipStrokeColor = global::HelloworldXamarin.Droid.Resource.Styleable.Chip_chipStrokeColor;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.Chip_chipStrokeWidth = global::HelloworldXamarin.Droid.Resource.Styleable.Chip_chipStrokeWidth;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.Chip_closeIcon = global::HelloworldXamarin.Droid.Resource.Styleable.Chip_closeIcon;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.Chip_closeIconEnabled = global::HelloworldXamarin.Droid.Resource.Styleable.Chip_closeIconEnabled;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.Chip_closeIconEndPadding = global::HelloworldXamarin.Droid.Resource.Styleable.Chip_closeIconEndPadding;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.Chip_closeIconSize = global::HelloworldXamarin.Droid.Resource.Styleable.Chip_closeIconSize;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.Chip_closeIconStartPadding = global::HelloworldXamarin.Droid.Resource.Styleable.Chip_closeIconStartPadding;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.Chip_closeIconTint = global::HelloworldXamarin.Droid.Resource.Styleable.Chip_closeIconTint;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.Chip_closeIconVisible = global::HelloworldXamarin.Droid.Resource.Styleable.Chip_closeIconVisible;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.Chip_hideMotionSpec = global::HelloworldXamarin.Droid.Resource.Styleable.Chip_hideMotionSpec;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.Chip_iconEndPadding = global::HelloworldXamarin.Droid.Resource.Styleable.Chip_iconEndPadding;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.Chip_iconStartPadding = global::HelloworldXamarin.Droid.Resource.Styleable.Chip_iconStartPadding;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.Chip_rippleColor = global::HelloworldXamarin.Droid.Resource.Styleable.Chip_rippleColor;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.Chip_showMotionSpec = global::HelloworldXamarin.Droid.Resource.Styleable.Chip_showMotionSpec;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.Chip_textEndPadding = global::HelloworldXamarin.Droid.Resource.Styleable.Chip_textEndPadding;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.Chip_textStartPadding = global::HelloworldXamarin.Droid.Resource.Styleable.Chip_textStartPadding;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.CollapsingToolbarLayout = global::HelloworldXamarin.Droid.Resource.Styleable.CollapsingToolbarLayout;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.CollapsingToolbarLayout_collapsedTitleGravity = global::HelloworldXamarin.Droid.Resource.Styleable.CollapsingToolbarLayout_collapsedTitleGravity;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.CollapsingToolbarLayout_collapsedTitleTextAppearance = global::HelloworldXamarin.Droid.Resource.Styleable.CollapsingToolbarLayout_collapsedTitleTextAppearance;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.CollapsingToolbarLayout_contentScrim = global::HelloworldXamarin.Droid.Resource.Styleable.CollapsingToolbarLayout_contentScrim;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.CollapsingToolbarLayout_expandedTitleGravity = global::HelloworldXamarin.Droid.Resource.Styleable.CollapsingToolbarLayout_expandedTitleGravity;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.CollapsingToolbarLayout_expandedTitleMargin = global::HelloworldXamarin.Droid.Resource.Styleable.CollapsingToolbarLayout_expandedTitleMargin;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.CollapsingToolbarLayout_expandedTitleMarginBottom = global::HelloworldXamarin.Droid.Resource.Styleable.CollapsingToolbarLayout_expandedTitleMarginBottom;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.CollapsingToolbarLayout_expandedTitleMarginEnd = global::HelloworldXamarin.Droid.Resource.Styleable.CollapsingToolbarLayout_expandedTitleMarginEnd;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.CollapsingToolbarLayout_expandedTitleMarginStart = global::HelloworldXamarin.Droid.Resource.Styleable.CollapsingToolbarLayout_expandedTitleMarginStart;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.CollapsingToolbarLayout_expandedTitleMarginTop = global::HelloworldXamarin.Droid.Resource.Styleable.CollapsingToolbarLayout_expandedTitleMarginTop;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.CollapsingToolbarLayout_expandedTitleTextAppearance = global::HelloworldXamarin.Droid.Resource.Styleable.CollapsingToolbarLayout_expandedTitleTextAppearance;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.CollapsingToolbarLayout_Layout = global::HelloworldXamarin.Droid.Resource.Styleable.CollapsingToolbarLayout_Layout;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.CollapsingToolbarLayout_Layout_layout_collapseMode = global::HelloworldXamarin.Droid.Resource.Styleable.CollapsingToolbarLayout_Layout_layout_collapseMode;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.CollapsingToolbarLayout_Layout_layout_collapseParallaxMultiplier = global::HelloworldXamarin.Droid.Resource.Styleable.CollapsingToolbarLayout_Layout_layout_collapseParallaxMultiplier;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.CollapsingToolbarLayout_scrimAnimationDuration = global::HelloworldXamarin.Droid.Resource.Styleable.CollapsingToolbarLayout_scrimAnimationDuration;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.CollapsingToolbarLayout_scrimVisibleHeightTrigger = global::HelloworldXamarin.Droid.Resource.Styleable.CollapsingToolbarLayout_scrimVisibleHeightTrigger;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.CollapsingToolbarLayout_statusBarScrim = global::HelloworldXamarin.Droid.Resource.Styleable.CollapsingToolbarLayout_statusBarScrim;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.CollapsingToolbarLayout_title = global::HelloworldXamarin.Droid.Resource.Styleable.CollapsingToolbarLayout_title;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.CollapsingToolbarLayout_titleEnabled = global::HelloworldXamarin.Droid.Resource.Styleable.CollapsingToolbarLayout_titleEnabled;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.CollapsingToolbarLayout_toolbarId = global::HelloworldXamarin.Droid.Resource.Styleable.CollapsingToolbarLayout_toolbarId;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.ColorStateListItem = global::HelloworldXamarin.Droid.Resource.Styleable.ColorStateListItem;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.ColorStateListItem_alpha = global::HelloworldXamarin.Droid.Resource.Styleable.ColorStateListItem_alpha;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.ColorStateListItem_android_alpha = global::HelloworldXamarin.Droid.Resource.Styleable.ColorStateListItem_android_alpha;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.ColorStateListItem_android_color = global::HelloworldXamarin.Droid.Resource.Styleable.ColorStateListItem_android_color;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.CompoundButton = global::HelloworldXamarin.Droid.Resource.Styleable.CompoundButton;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.CompoundButton_android_button = global::HelloworldXamarin.Droid.Resource.Styleable.CompoundButton_android_button;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.CompoundButton_buttonTint = global::HelloworldXamarin.Droid.Resource.Styleable.CompoundButton_buttonTint;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.CompoundButton_buttonTintMode = global::HelloworldXamarin.Droid.Resource.Styleable.CompoundButton_buttonTintMode;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.CoordinatorLayout = global::HelloworldXamarin.Droid.Resource.Styleable.CoordinatorLayout;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.CoordinatorLayout_keylines = global::HelloworldXamarin.Droid.Resource.Styleable.CoordinatorLayout_keylines;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.CoordinatorLayout_Layout = global::HelloworldXamarin.Droid.Resource.Styleable.CoordinatorLayout_Layout;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.CoordinatorLayout_Layout_android_layout_gravity = global::HelloworldXamarin.Droid.Resource.Styleable.CoordinatorLayout_Layout_android_layout_gravity;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.CoordinatorLayout_Layout_layout_anchor = global::HelloworldXamarin.Droid.Resource.Styleable.CoordinatorLayout_Layout_layout_anchor;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.CoordinatorLayout_Layout_layout_anchorGravity = global::HelloworldXamarin.Droid.Resource.Styleable.CoordinatorLayout_Layout_layout_anchorGravity;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.CoordinatorLayout_Layout_layout_behavior = global::HelloworldXamarin.Droid.Resource.Styleable.CoordinatorLayout_Layout_layout_behavior;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.CoordinatorLayout_Layout_layout_dodgeInsetEdges = global::HelloworldXamarin.Droid.Resource.Styleable.CoordinatorLayout_Layout_layout_dodgeInsetEdges;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.CoordinatorLayout_Layout_layout_insetEdge = global::HelloworldXamarin.Droid.Resource.Styleable.CoordinatorLayout_Layout_layout_insetEdge;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.CoordinatorLayout_Layout_layout_keyline = global::HelloworldXamarin.Droid.Resource.Styleable.CoordinatorLayout_Layout_layout_keyline;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.CoordinatorLayout_statusBarBackground = global::HelloworldXamarin.Droid.Resource.Styleable.CoordinatorLayout_statusBarBackground;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.DesignTheme = global::HelloworldXamarin.Droid.Resource.Styleable.DesignTheme;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.DesignTheme_bottomSheetDialogTheme = global::HelloworldXamarin.Droid.Resource.Styleable.DesignTheme_bottomSheetDialogTheme;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.DesignTheme_bottomSheetStyle = global::HelloworldXamarin.Droid.Resource.Styleable.DesignTheme_bottomSheetStyle;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.DrawerArrowToggle = global::HelloworldXamarin.Droid.Resource.Styleable.DrawerArrowToggle;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.DrawerArrowToggle_arrowHeadLength = global::HelloworldXamarin.Droid.Resource.Styleable.DrawerArrowToggle_arrowHeadLength;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.DrawerArrowToggle_arrowShaftLength = global::HelloworldXamarin.Droid.Resource.Styleable.DrawerArrowToggle_arrowShaftLength;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.DrawerArrowToggle_barLength = global::HelloworldXamarin.Droid.Resource.Styleable.DrawerArrowToggle_barLength;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.DrawerArrowToggle_color = global::HelloworldXamarin.Droid.Resource.Styleable.DrawerArrowToggle_color;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.DrawerArrowToggle_drawableSize = global::HelloworldXamarin.Droid.Resource.Styleable.DrawerArrowToggle_drawableSize;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.DrawerArrowToggle_gapBetweenBars = global::HelloworldXamarin.Droid.Resource.Styleable.DrawerArrowToggle_gapBetweenBars;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.DrawerArrowToggle_spinBars = global::HelloworldXamarin.Droid.Resource.Styleable.DrawerArrowToggle_spinBars;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.DrawerArrowToggle_thickness = global::HelloworldXamarin.Droid.Resource.Styleable.DrawerArrowToggle_thickness;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.FloatingActionButton = global::HelloworldXamarin.Droid.Resource.Styleable.FloatingActionButton;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.FloatingActionButton_backgroundTint = global::HelloworldXamarin.Droid.Resource.Styleable.FloatingActionButton_backgroundTint;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.FloatingActionButton_backgroundTintMode = global::HelloworldXamarin.Droid.Resource.Styleable.FloatingActionButton_backgroundTintMode;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.FloatingActionButton_Behavior_Layout = global::HelloworldXamarin.Droid.Resource.Styleable.FloatingActionButton_Behavior_Layout;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.FloatingActionButton_Behavior_Layout_behavior_autoHide = global::HelloworldXamarin.Droid.Resource.Styleable.FloatingActionButton_Behavior_Layout_behavior_autoHide;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.FloatingActionButton_borderWidth = global::HelloworldXamarin.Droid.Resource.Styleable.FloatingActionButton_borderWidth;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.FloatingActionButton_elevation = global::HelloworldXamarin.Droid.Resource.Styleable.FloatingActionButton_elevation;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.FloatingActionButton_fabCustomSize = global::HelloworldXamarin.Droid.Resource.Styleable.FloatingActionButton_fabCustomSize;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.FloatingActionButton_fabSize = global::HelloworldXamarin.Droid.Resource.Styleable.FloatingActionButton_fabSize;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.FloatingActionButton_hideMotionSpec = global::HelloworldXamarin.Droid.Resource.Styleable.FloatingActionButton_hideMotionSpec;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.FloatingActionButton_hoveredFocusedTranslationZ = global::HelloworldXamarin.Droid.Resource.Styleable.FloatingActionButton_hoveredFocusedTranslationZ;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.FloatingActionButton_maxImageSize = global::HelloworldXamarin.Droid.Resource.Styleable.FloatingActionButton_maxImageSize;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.FloatingActionButton_pressedTranslationZ = global::HelloworldXamarin.Droid.Resource.Styleable.FloatingActionButton_pressedTranslationZ;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.FloatingActionButton_rippleColor = global::HelloworldXamarin.Droid.Resource.Styleable.FloatingActionButton_rippleColor;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.FloatingActionButton_showMotionSpec = global::HelloworldXamarin.Droid.Resource.Styleable.FloatingActionButton_showMotionSpec;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.FloatingActionButton_useCompatPadding = global::HelloworldXamarin.Droid.Resource.Styleable.FloatingActionButton_useCompatPadding;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.FlowLayout = global::HelloworldXamarin.Droid.Resource.Styleable.FlowLayout;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.FlowLayout_itemSpacing = global::HelloworldXamarin.Droid.Resource.Styleable.FlowLayout_itemSpacing;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.FlowLayout_lineSpacing = global::HelloworldXamarin.Droid.Resource.Styleable.FlowLayout_lineSpacing;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.FontFamily = global::HelloworldXamarin.Droid.Resource.Styleable.FontFamily;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.FontFamilyFont = global::HelloworldXamarin.Droid.Resource.Styleable.FontFamilyFont;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.FontFamilyFont_android_font = global::HelloworldXamarin.Droid.Resource.Styleable.FontFamilyFont_android_font;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.FontFamilyFont_android_fontStyle = global::HelloworldXamarin.Droid.Resource.Styleable.FontFamilyFont_android_fontStyle;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.FontFamilyFont_android_fontVariationSettings = global::HelloworldXamarin.Droid.Resource.Styleable.FontFamilyFont_android_fontVariationSettings;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.FontFamilyFont_android_fontWeight = global::HelloworldXamarin.Droid.Resource.Styleable.FontFamilyFont_android_fontWeight;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.FontFamilyFont_android_ttcIndex = global::HelloworldXamarin.Droid.Resource.Styleable.FontFamilyFont_android_ttcIndex;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.FontFamilyFont_font = global::HelloworldXamarin.Droid.Resource.Styleable.FontFamilyFont_font;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.FontFamilyFont_fontStyle = global::HelloworldXamarin.Droid.Resource.Styleable.FontFamilyFont_fontStyle;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.FontFamilyFont_fontVariationSettings = global::HelloworldXamarin.Droid.Resource.Styleable.FontFamilyFont_fontVariationSettings;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.FontFamilyFont_fontWeight = global::HelloworldXamarin.Droid.Resource.Styleable.FontFamilyFont_fontWeight;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.FontFamilyFont_ttcIndex = global::HelloworldXamarin.Droid.Resource.Styleable.FontFamilyFont_ttcIndex;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.FontFamily_fontProviderAuthority = global::HelloworldXamarin.Droid.Resource.Styleable.FontFamily_fontProviderAuthority;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.FontFamily_fontProviderCerts = global::HelloworldXamarin.Droid.Resource.Styleable.FontFamily_fontProviderCerts;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.FontFamily_fontProviderFetchStrategy = global::HelloworldXamarin.Droid.Resource.Styleable.FontFamily_fontProviderFetchStrategy;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.FontFamily_fontProviderFetchTimeout = global::HelloworldXamarin.Droid.Resource.Styleable.FontFamily_fontProviderFetchTimeout;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.FontFamily_fontProviderPackage = global::HelloworldXamarin.Droid.Resource.Styleable.FontFamily_fontProviderPackage;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.FontFamily_fontProviderQuery = global::HelloworldXamarin.Droid.Resource.Styleable.FontFamily_fontProviderQuery;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.ForegroundLinearLayout = global::HelloworldXamarin.Droid.Resource.Styleable.ForegroundLinearLayout;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.ForegroundLinearLayout_android_foreground = global::HelloworldXamarin.Droid.Resource.Styleable.ForegroundLinearLayout_android_foreground;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.ForegroundLinearLayout_android_foregroundGravity = global::HelloworldXamarin.Droid.Resource.Styleable.ForegroundLinearLayout_android_foregroundGravity;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.ForegroundLinearLayout_foregroundInsidePadding = global::HelloworldXamarin.Droid.Resource.Styleable.ForegroundLinearLayout_foregroundInsidePadding;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.GradientColor = global::HelloworldXamarin.Droid.Resource.Styleable.GradientColor;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.GradientColorItem = global::HelloworldXamarin.Droid.Resource.Styleable.GradientColorItem;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.GradientColorItem_android_color = global::HelloworldXamarin.Droid.Resource.Styleable.GradientColorItem_android_color;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.GradientColorItem_android_offset = global::HelloworldXamarin.Droid.Resource.Styleable.GradientColorItem_android_offset;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.GradientColor_android_centerColor = global::HelloworldXamarin.Droid.Resource.Styleable.GradientColor_android_centerColor;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.GradientColor_android_centerX = global::HelloworldXamarin.Droid.Resource.Styleable.GradientColor_android_centerX;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.GradientColor_android_centerY = global::HelloworldXamarin.Droid.Resource.Styleable.GradientColor_android_centerY;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.GradientColor_android_endColor = global::HelloworldXamarin.Droid.Resource.Styleable.GradientColor_android_endColor;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.GradientColor_android_endX = global::HelloworldXamarin.Droid.Resource.Styleable.GradientColor_android_endX;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.GradientColor_android_endY = global::HelloworldXamarin.Droid.Resource.Styleable.GradientColor_android_endY;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.GradientColor_android_gradientRadius = global::HelloworldXamarin.Droid.Resource.Styleable.GradientColor_android_gradientRadius;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.GradientColor_android_startColor = global::HelloworldXamarin.Droid.Resource.Styleable.GradientColor_android_startColor;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.GradientColor_android_startX = global::HelloworldXamarin.Droid.Resource.Styleable.GradientColor_android_startX;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.GradientColor_android_startY = global::HelloworldXamarin.Droid.Resource.Styleable.GradientColor_android_startY;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.GradientColor_android_tileMode = global::HelloworldXamarin.Droid.Resource.Styleable.GradientColor_android_tileMode;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.GradientColor_android_type = global::HelloworldXamarin.Droid.Resource.Styleable.GradientColor_android_type;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.LinearLayoutCompat = global::HelloworldXamarin.Droid.Resource.Styleable.LinearLayoutCompat;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.LinearLayoutCompat_android_baselineAligned = global::HelloworldXamarin.Droid.Resource.Styleable.LinearLayoutCompat_android_baselineAligned;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.LinearLayoutCompat_android_baselineAlignedChildIndex = global::HelloworldXamarin.Droid.Resource.Styleable.LinearLayoutCompat_android_baselineAlignedChildIndex;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.LinearLayoutCompat_android_gravity = global::HelloworldXamarin.Droid.Resource.Styleable.LinearLayoutCompat_android_gravity;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.LinearLayoutCompat_android_orientation = global::HelloworldXamarin.Droid.Resource.Styleable.LinearLayoutCompat_android_orientation;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.LinearLayoutCompat_android_weightSum = global::HelloworldXamarin.Droid.Resource.Styleable.LinearLayoutCompat_android_weightSum;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.LinearLayoutCompat_divider = global::HelloworldXamarin.Droid.Resource.Styleable.LinearLayoutCompat_divider;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.LinearLayoutCompat_dividerPadding = global::HelloworldXamarin.Droid.Resource.Styleable.LinearLayoutCompat_dividerPadding;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.LinearLayoutCompat_Layout = global::HelloworldXamarin.Droid.Resource.Styleable.LinearLayoutCompat_Layout;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.LinearLayoutCompat_Layout_android_layout_gravity = global::HelloworldXamarin.Droid.Resource.Styleable.LinearLayoutCompat_Layout_android_layout_gravity;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.LinearLayoutCompat_Layout_android_layout_height = global::HelloworldXamarin.Droid.Resource.Styleable.LinearLayoutCompat_Layout_android_layout_height;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.LinearLayoutCompat_Layout_android_layout_weight = global::HelloworldXamarin.Droid.Resource.Styleable.LinearLayoutCompat_Layout_android_layout_weight;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.LinearLayoutCompat_Layout_android_layout_width = global::HelloworldXamarin.Droid.Resource.Styleable.LinearLayoutCompat_Layout_android_layout_width;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.LinearLayoutCompat_measureWithLargestChild = global::HelloworldXamarin.Droid.Resource.Styleable.LinearLayoutCompat_measureWithLargestChild;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.LinearLayoutCompat_showDividers = global::HelloworldXamarin.Droid.Resource.Styleable.LinearLayoutCompat_showDividers;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.ListPopupWindow = global::HelloworldXamarin.Droid.Resource.Styleable.ListPopupWindow;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.ListPopupWindow_android_dropDownHorizontalOffset = global::HelloworldXamarin.Droid.Resource.Styleable.ListPopupWindow_android_dropDownHorizontalOffset;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.ListPopupWindow_android_dropDownVerticalOffset = global::HelloworldXamarin.Droid.Resource.Styleable.ListPopupWindow_android_dropDownVerticalOffset;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.MaterialButton = global::HelloworldXamarin.Droid.Resource.Styleable.MaterialButton;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.MaterialButton_android_insetBottom = global::HelloworldXamarin.Droid.Resource.Styleable.MaterialButton_android_insetBottom;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.MaterialButton_android_insetLeft = global::HelloworldXamarin.Droid.Resource.Styleable.MaterialButton_android_insetLeft;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.MaterialButton_android_insetRight = global::HelloworldXamarin.Droid.Resource.Styleable.MaterialButton_android_insetRight;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.MaterialButton_android_insetTop = global::HelloworldXamarin.Droid.Resource.Styleable.MaterialButton_android_insetTop;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.MaterialButton_backgroundTint = global::HelloworldXamarin.Droid.Resource.Styleable.MaterialButton_backgroundTint;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.MaterialButton_backgroundTintMode = global::HelloworldXamarin.Droid.Resource.Styleable.MaterialButton_backgroundTintMode;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.MaterialButton_cornerRadius = global::HelloworldXamarin.Droid.Resource.Styleable.MaterialButton_cornerRadius;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.MaterialButton_icon = global::HelloworldXamarin.Droid.Resource.Styleable.MaterialButton_icon;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.MaterialButton_iconGravity = global::HelloworldXamarin.Droid.Resource.Styleable.MaterialButton_iconGravity;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.MaterialButton_iconPadding = global::HelloworldXamarin.Droid.Resource.Styleable.MaterialButton_iconPadding;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.MaterialButton_iconSize = global::HelloworldXamarin.Droid.Resource.Styleable.MaterialButton_iconSize;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.MaterialButton_iconTint = global::HelloworldXamarin.Droid.Resource.Styleable.MaterialButton_iconTint;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.MaterialButton_iconTintMode = global::HelloworldXamarin.Droid.Resource.Styleable.MaterialButton_iconTintMode;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.MaterialButton_rippleColor = global::HelloworldXamarin.Droid.Resource.Styleable.MaterialButton_rippleColor;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.MaterialButton_strokeColor = global::HelloworldXamarin.Droid.Resource.Styleable.MaterialButton_strokeColor;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.MaterialButton_strokeWidth = global::HelloworldXamarin.Droid.Resource.Styleable.MaterialButton_strokeWidth;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.MaterialCardView = global::HelloworldXamarin.Droid.Resource.Styleable.MaterialCardView;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.MaterialCardView_strokeColor = global::HelloworldXamarin.Droid.Resource.Styleable.MaterialCardView_strokeColor;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.MaterialCardView_strokeWidth = global::HelloworldXamarin.Droid.Resource.Styleable.MaterialCardView_strokeWidth;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.MaterialComponentsTheme = global::HelloworldXamarin.Droid.Resource.Styleable.MaterialComponentsTheme;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.MaterialComponentsTheme_bottomSheetDialogTheme = global::HelloworldXamarin.Droid.Resource.Styleable.MaterialComponentsTheme_bottomSheetDialogTheme;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.MaterialComponentsTheme_bottomSheetStyle = global::HelloworldXamarin.Droid.Resource.Styleable.MaterialComponentsTheme_bottomSheetStyle;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.MaterialComponentsTheme_chipGroupStyle = global::HelloworldXamarin.Droid.Resource.Styleable.MaterialComponentsTheme_chipGroupStyle;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.MaterialComponentsTheme_chipStandaloneStyle = global::HelloworldXamarin.Droid.Resource.Styleable.MaterialComponentsTheme_chipStandaloneStyle;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.MaterialComponentsTheme_chipStyle = global::HelloworldXamarin.Droid.Resource.Styleable.MaterialComponentsTheme_chipStyle;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.MaterialComponentsTheme_colorAccent = global::HelloworldXamarin.Droid.Resource.Styleable.MaterialComponentsTheme_colorAccent;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.MaterialComponentsTheme_colorBackgroundFloating = global::HelloworldXamarin.Droid.Resource.Styleable.MaterialComponentsTheme_colorBackgroundFloating;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.MaterialComponentsTheme_colorPrimary = global::HelloworldXamarin.Droid.Resource.Styleable.MaterialComponentsTheme_colorPrimary;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.MaterialComponentsTheme_colorPrimaryDark = global::HelloworldXamarin.Droid.Resource.Styleable.MaterialComponentsTheme_colorPrimaryDark;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.MaterialComponentsTheme_colorSecondary = global::HelloworldXamarin.Droid.Resource.Styleable.MaterialComponentsTheme_colorSecondary;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.MaterialComponentsTheme_editTextStyle = global::HelloworldXamarin.Droid.Resource.Styleable.MaterialComponentsTheme_editTextStyle;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.MaterialComponentsTheme_floatingActionButtonStyle = global::HelloworldXamarin.Droid.Resource.Styleable.MaterialComponentsTheme_floatingActionButtonStyle;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.MaterialComponentsTheme_materialButtonStyle = global::HelloworldXamarin.Droid.Resource.Styleable.MaterialComponentsTheme_materialButtonStyle;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.MaterialComponentsTheme_materialCardViewStyle = global::HelloworldXamarin.Droid.Resource.Styleable.MaterialComponentsTheme_materialCardViewStyle;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.MaterialComponentsTheme_navigationViewStyle = global::HelloworldXamarin.Droid.Resource.Styleable.MaterialComponentsTheme_navigationViewStyle;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.MaterialComponentsTheme_scrimBackground = global::HelloworldXamarin.Droid.Resource.Styleable.MaterialComponentsTheme_scrimBackground;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.MaterialComponentsTheme_snackbarButtonStyle = global::HelloworldXamarin.Droid.Resource.Styleable.MaterialComponentsTheme_snackbarButtonStyle;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.MaterialComponentsTheme_tabStyle = global::HelloworldXamarin.Droid.Resource.Styleable.MaterialComponentsTheme_tabStyle;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.MaterialComponentsTheme_textAppearanceBody1 = global::HelloworldXamarin.Droid.Resource.Styleable.MaterialComponentsTheme_textAppearanceBody1;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.MaterialComponentsTheme_textAppearanceBody2 = global::HelloworldXamarin.Droid.Resource.Styleable.MaterialComponentsTheme_textAppearanceBody2;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.MaterialComponentsTheme_textAppearanceButton = global::HelloworldXamarin.Droid.Resource.Styleable.MaterialComponentsTheme_textAppearanceButton;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.MaterialComponentsTheme_textAppearanceCaption = global::HelloworldXamarin.Droid.Resource.Styleable.MaterialComponentsTheme_textAppearanceCaption;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.MaterialComponentsTheme_textAppearanceHeadline1 = global::HelloworldXamarin.Droid.Resource.Styleable.MaterialComponentsTheme_textAppearanceHeadline1;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.MaterialComponentsTheme_textAppearanceHeadline2 = global::HelloworldXamarin.Droid.Resource.Styleable.MaterialComponentsTheme_textAppearanceHeadline2;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.MaterialComponentsTheme_textAppearanceHeadline3 = global::HelloworldXamarin.Droid.Resource.Styleable.MaterialComponentsTheme_textAppearanceHeadline3;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.MaterialComponentsTheme_textAppearanceHeadline4 = global::HelloworldXamarin.Droid.Resource.Styleable.MaterialComponentsTheme_textAppearanceHeadline4;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.MaterialComponentsTheme_textAppearanceHeadline5 = global::HelloworldXamarin.Droid.Resource.Styleable.MaterialComponentsTheme_textAppearanceHeadline5;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.MaterialComponentsTheme_textAppearanceHeadline6 = global::HelloworldXamarin.Droid.Resource.Styleable.MaterialComponentsTheme_textAppearanceHeadline6;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.MaterialComponentsTheme_textAppearanceOverline = global::HelloworldXamarin.Droid.Resource.Styleable.MaterialComponentsTheme_textAppearanceOverline;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.MaterialComponentsTheme_textAppearanceSubtitle1 = global::HelloworldXamarin.Droid.Resource.Styleable.MaterialComponentsTheme_textAppearanceSubtitle1;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.MaterialComponentsTheme_textAppearanceSubtitle2 = global::HelloworldXamarin.Droid.Resource.Styleable.MaterialComponentsTheme_textAppearanceSubtitle2;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.MaterialComponentsTheme_textInputStyle = global::HelloworldXamarin.Droid.Resource.Styleable.MaterialComponentsTheme_textInputStyle;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.MenuGroup = global::HelloworldXamarin.Droid.Resource.Styleable.MenuGroup;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.MenuGroup_android_checkableBehavior = global::HelloworldXamarin.Droid.Resource.Styleable.MenuGroup_android_checkableBehavior;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.MenuGroup_android_enabled = global::HelloworldXamarin.Droid.Resource.Styleable.MenuGroup_android_enabled;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.MenuGroup_android_id = global::HelloworldXamarin.Droid.Resource.Styleable.MenuGroup_android_id;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.MenuGroup_android_menuCategory = global::HelloworldXamarin.Droid.Resource.Styleable.MenuGroup_android_menuCategory;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.MenuGroup_android_orderInCategory = global::HelloworldXamarin.Droid.Resource.Styleable.MenuGroup_android_orderInCategory;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.MenuGroup_android_visible = global::HelloworldXamarin.Droid.Resource.Styleable.MenuGroup_android_visible;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.MenuItem = global::HelloworldXamarin.Droid.Resource.Styleable.MenuItem;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.MenuItem_actionLayout = global::HelloworldXamarin.Droid.Resource.Styleable.MenuItem_actionLayout;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.MenuItem_actionProviderClass = global::HelloworldXamarin.Droid.Resource.Styleable.MenuItem_actionProviderClass;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.MenuItem_actionViewClass = global::HelloworldXamarin.Droid.Resource.Styleable.MenuItem_actionViewClass;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.MenuItem_alphabeticModifiers = global::HelloworldXamarin.Droid.Resource.Styleable.MenuItem_alphabeticModifiers;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.MenuItem_android_alphabeticShortcut = global::HelloworldXamarin.Droid.Resource.Styleable.MenuItem_android_alphabeticShortcut;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.MenuItem_android_checkable = global::HelloworldXamarin.Droid.Resource.Styleable.MenuItem_android_checkable;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.MenuItem_android_checked = global::HelloworldXamarin.Droid.Resource.Styleable.MenuItem_android_checked;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.MenuItem_android_enabled = global::HelloworldXamarin.Droid.Resource.Styleable.MenuItem_android_enabled;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.MenuItem_android_icon = global::HelloworldXamarin.Droid.Resource.Styleable.MenuItem_android_icon;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.MenuItem_android_id = global::HelloworldXamarin.Droid.Resource.Styleable.MenuItem_android_id;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.MenuItem_android_menuCategory = global::HelloworldXamarin.Droid.Resource.Styleable.MenuItem_android_menuCategory;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.MenuItem_android_numericShortcut = global::HelloworldXamarin.Droid.Resource.Styleable.MenuItem_android_numericShortcut;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.MenuItem_android_onClick = global::HelloworldXamarin.Droid.Resource.Styleable.MenuItem_android_onClick;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.MenuItem_android_orderInCategory = global::HelloworldXamarin.Droid.Resource.Styleable.MenuItem_android_orderInCategory;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.MenuItem_android_title = global::HelloworldXamarin.Droid.Resource.Styleable.MenuItem_android_title;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.MenuItem_android_titleCondensed = global::HelloworldXamarin.Droid.Resource.Styleable.MenuItem_android_titleCondensed;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.MenuItem_android_visible = global::HelloworldXamarin.Droid.Resource.Styleable.MenuItem_android_visible;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.MenuItem_contentDescription = global::HelloworldXamarin.Droid.Resource.Styleable.MenuItem_contentDescription;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.MenuItem_iconTint = global::HelloworldXamarin.Droid.Resource.Styleable.MenuItem_iconTint;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.MenuItem_iconTintMode = global::HelloworldXamarin.Droid.Resource.Styleable.MenuItem_iconTintMode;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.MenuItem_numericModifiers = global::HelloworldXamarin.Droid.Resource.Styleable.MenuItem_numericModifiers;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.MenuItem_showAsAction = global::HelloworldXamarin.Droid.Resource.Styleable.MenuItem_showAsAction;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.MenuItem_tooltipText = global::HelloworldXamarin.Droid.Resource.Styleable.MenuItem_tooltipText;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.MenuView = global::HelloworldXamarin.Droid.Resource.Styleable.MenuView;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.MenuView_android_headerBackground = global::HelloworldXamarin.Droid.Resource.Styleable.MenuView_android_headerBackground;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.MenuView_android_horizontalDivider = global::HelloworldXamarin.Droid.Resource.Styleable.MenuView_android_horizontalDivider;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.MenuView_android_itemBackground = global::HelloworldXamarin.Droid.Resource.Styleable.MenuView_android_itemBackground;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.MenuView_android_itemIconDisabledAlpha = global::HelloworldXamarin.Droid.Resource.Styleable.MenuView_android_itemIconDisabledAlpha;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.MenuView_android_itemTextAppearance = global::HelloworldXamarin.Droid.Resource.Styleable.MenuView_android_itemTextAppearance;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.MenuView_android_verticalDivider = global::HelloworldXamarin.Droid.Resource.Styleable.MenuView_android_verticalDivider;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.MenuView_android_windowAnimationStyle = global::HelloworldXamarin.Droid.Resource.Styleable.MenuView_android_windowAnimationStyle;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.MenuView_preserveIconSpacing = global::HelloworldXamarin.Droid.Resource.Styleable.MenuView_preserveIconSpacing;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.MenuView_subMenuArrow = global::HelloworldXamarin.Droid.Resource.Styleable.MenuView_subMenuArrow;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.NavigationView = global::HelloworldXamarin.Droid.Resource.Styleable.NavigationView;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.NavigationView_android_background = global::HelloworldXamarin.Droid.Resource.Styleable.NavigationView_android_background;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.NavigationView_android_fitsSystemWindows = global::HelloworldXamarin.Droid.Resource.Styleable.NavigationView_android_fitsSystemWindows;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.NavigationView_android_maxWidth = global::HelloworldXamarin.Droid.Resource.Styleable.NavigationView_android_maxWidth;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.NavigationView_elevation = global::HelloworldXamarin.Droid.Resource.Styleable.NavigationView_elevation;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.NavigationView_headerLayout = global::HelloworldXamarin.Droid.Resource.Styleable.NavigationView_headerLayout;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.NavigationView_itemBackground = global::HelloworldXamarin.Droid.Resource.Styleable.NavigationView_itemBackground;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.NavigationView_itemHorizontalPadding = global::HelloworldXamarin.Droid.Resource.Styleable.NavigationView_itemHorizontalPadding;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.NavigationView_itemIconPadding = global::HelloworldXamarin.Droid.Resource.Styleable.NavigationView_itemIconPadding;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.NavigationView_itemIconTint = global::HelloworldXamarin.Droid.Resource.Styleable.NavigationView_itemIconTint;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.NavigationView_itemTextAppearance = global::HelloworldXamarin.Droid.Resource.Styleable.NavigationView_itemTextAppearance;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.NavigationView_itemTextColor = global::HelloworldXamarin.Droid.Resource.Styleable.NavigationView_itemTextColor;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.NavigationView_menu = global::HelloworldXamarin.Droid.Resource.Styleable.NavigationView_menu;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.PopupWindow = global::HelloworldXamarin.Droid.Resource.Styleable.PopupWindow;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.PopupWindowBackgroundState = global::HelloworldXamarin.Droid.Resource.Styleable.PopupWindowBackgroundState;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.PopupWindowBackgroundState_state_above_anchor = global::HelloworldXamarin.Droid.Resource.Styleable.PopupWindowBackgroundState_state_above_anchor;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.PopupWindow_android_popupAnimationStyle = global::HelloworldXamarin.Droid.Resource.Styleable.PopupWindow_android_popupAnimationStyle;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.PopupWindow_android_popupBackground = global::HelloworldXamarin.Droid.Resource.Styleable.PopupWindow_android_popupBackground;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.PopupWindow_overlapAnchor = global::HelloworldXamarin.Droid.Resource.Styleable.PopupWindow_overlapAnchor;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.RecycleListView = global::HelloworldXamarin.Droid.Resource.Styleable.RecycleListView;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.RecycleListView_paddingBottomNoButtons = global::HelloworldXamarin.Droid.Resource.Styleable.RecycleListView_paddingBottomNoButtons;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.RecycleListView_paddingTopNoTitle = global::HelloworldXamarin.Droid.Resource.Styleable.RecycleListView_paddingTopNoTitle;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.RecyclerView = global::HelloworldXamarin.Droid.Resource.Styleable.RecyclerView;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.RecyclerView_android_descendantFocusability = global::HelloworldXamarin.Droid.Resource.Styleable.RecyclerView_android_descendantFocusability;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.RecyclerView_android_orientation = global::HelloworldXamarin.Droid.Resource.Styleable.RecyclerView_android_orientation;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.RecyclerView_fastScrollEnabled = global::HelloworldXamarin.Droid.Resource.Styleable.RecyclerView_fastScrollEnabled;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.RecyclerView_fastScrollHorizontalThumbDrawable = global::HelloworldXamarin.Droid.Resource.Styleable.RecyclerView_fastScrollHorizontalThumbDrawable;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.RecyclerView_fastScrollHorizontalTrackDrawable = global::HelloworldXamarin.Droid.Resource.Styleable.RecyclerView_fastScrollHorizontalTrackDrawable;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.RecyclerView_fastScrollVerticalThumbDrawable = global::HelloworldXamarin.Droid.Resource.Styleable.RecyclerView_fastScrollVerticalThumbDrawable;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.RecyclerView_fastScrollVerticalTrackDrawable = global::HelloworldXamarin.Droid.Resource.Styleable.RecyclerView_fastScrollVerticalTrackDrawable;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.RecyclerView_layoutManager = global::HelloworldXamarin.Droid.Resource.Styleable.RecyclerView_layoutManager;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.RecyclerView_reverseLayout = global::HelloworldXamarin.Droid.Resource.Styleable.RecyclerView_reverseLayout;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.RecyclerView_spanCount = global::HelloworldXamarin.Droid.Resource.Styleable.RecyclerView_spanCount;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.RecyclerView_stackFromEnd = global::HelloworldXamarin.Droid.Resource.Styleable.RecyclerView_stackFromEnd;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.ScrimInsetsFrameLayout = global::HelloworldXamarin.Droid.Resource.Styleable.ScrimInsetsFrameLayout;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.ScrimInsetsFrameLayout_insetForeground = global::HelloworldXamarin.Droid.Resource.Styleable.ScrimInsetsFrameLayout_insetForeground;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.ScrollingViewBehavior_Layout = global::HelloworldXamarin.Droid.Resource.Styleable.ScrollingViewBehavior_Layout;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.ScrollingViewBehavior_Layout_behavior_overlapTop = global::HelloworldXamarin.Droid.Resource.Styleable.ScrollingViewBehavior_Layout_behavior_overlapTop;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.SearchView = global::HelloworldXamarin.Droid.Resource.Styleable.SearchView;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.SearchView_android_focusable = global::HelloworldXamarin.Droid.Resource.Styleable.SearchView_android_focusable;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.SearchView_android_imeOptions = global::HelloworldXamarin.Droid.Resource.Styleable.SearchView_android_imeOptions;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.SearchView_android_inputType = global::HelloworldXamarin.Droid.Resource.Styleable.SearchView_android_inputType;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.SearchView_android_maxWidth = global::HelloworldXamarin.Droid.Resource.Styleable.SearchView_android_maxWidth;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.SearchView_closeIcon = global::HelloworldXamarin.Droid.Resource.Styleable.SearchView_closeIcon;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.SearchView_commitIcon = global::HelloworldXamarin.Droid.Resource.Styleable.SearchView_commitIcon;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.SearchView_defaultQueryHint = global::HelloworldXamarin.Droid.Resource.Styleable.SearchView_defaultQueryHint;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.SearchView_goIcon = global::HelloworldXamarin.Droid.Resource.Styleable.SearchView_goIcon;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.SearchView_iconifiedByDefault = global::HelloworldXamarin.Droid.Resource.Styleable.SearchView_iconifiedByDefault;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.SearchView_layout = global::HelloworldXamarin.Droid.Resource.Styleable.SearchView_layout;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.SearchView_queryBackground = global::HelloworldXamarin.Droid.Resource.Styleable.SearchView_queryBackground;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.SearchView_queryHint = global::HelloworldXamarin.Droid.Resource.Styleable.SearchView_queryHint;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.SearchView_searchHintIcon = global::HelloworldXamarin.Droid.Resource.Styleable.SearchView_searchHintIcon;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.SearchView_searchIcon = global::HelloworldXamarin.Droid.Resource.Styleable.SearchView_searchIcon;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.SearchView_submitBackground = global::HelloworldXamarin.Droid.Resource.Styleable.SearchView_submitBackground;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.SearchView_suggestionRowLayout = global::HelloworldXamarin.Droid.Resource.Styleable.SearchView_suggestionRowLayout;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.SearchView_voiceIcon = global::HelloworldXamarin.Droid.Resource.Styleable.SearchView_voiceIcon;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.Snackbar = global::HelloworldXamarin.Droid.Resource.Styleable.Snackbar;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.SnackbarLayout = global::HelloworldXamarin.Droid.Resource.Styleable.SnackbarLayout;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.SnackbarLayout_android_maxWidth = global::HelloworldXamarin.Droid.Resource.Styleable.SnackbarLayout_android_maxWidth;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.SnackbarLayout_elevation = global::HelloworldXamarin.Droid.Resource.Styleable.SnackbarLayout_elevation;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.SnackbarLayout_maxActionInlineWidth = global::HelloworldXamarin.Droid.Resource.Styleable.SnackbarLayout_maxActionInlineWidth;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.Snackbar_snackbarButtonStyle = global::HelloworldXamarin.Droid.Resource.Styleable.Snackbar_snackbarButtonStyle;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.Snackbar_snackbarStyle = global::HelloworldXamarin.Droid.Resource.Styleable.Snackbar_snackbarStyle;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.Spinner = global::HelloworldXamarin.Droid.Resource.Styleable.Spinner;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.Spinner_android_dropDownWidth = global::HelloworldXamarin.Droid.Resource.Styleable.Spinner_android_dropDownWidth;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.Spinner_android_entries = global::HelloworldXamarin.Droid.Resource.Styleable.Spinner_android_entries;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.Spinner_android_popupBackground = global::HelloworldXamarin.Droid.Resource.Styleable.Spinner_android_popupBackground;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.Spinner_android_prompt = global::HelloworldXamarin.Droid.Resource.Styleable.Spinner_android_prompt;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.Spinner_popupTheme = global::HelloworldXamarin.Droid.Resource.Styleable.Spinner_popupTheme;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.StateListDrawable = global::HelloworldXamarin.Droid.Resource.Styleable.StateListDrawable;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.StateListDrawableItem = global::HelloworldXamarin.Droid.Resource.Styleable.StateListDrawableItem;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.StateListDrawableItem_android_drawable = global::HelloworldXamarin.Droid.Resource.Styleable.StateListDrawableItem_android_drawable;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.StateListDrawable_android_constantSize = global::HelloworldXamarin.Droid.Resource.Styleable.StateListDrawable_android_constantSize;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.StateListDrawable_android_dither = global::HelloworldXamarin.Droid.Resource.Styleable.StateListDrawable_android_dither;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.StateListDrawable_android_enterFadeDuration = global::HelloworldXamarin.Droid.Resource.Styleable.StateListDrawable_android_enterFadeDuration;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.StateListDrawable_android_exitFadeDuration = global::HelloworldXamarin.Droid.Resource.Styleable.StateListDrawable_android_exitFadeDuration;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.StateListDrawable_android_variablePadding = global::HelloworldXamarin.Droid.Resource.Styleable.StateListDrawable_android_variablePadding;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.StateListDrawable_android_visible = global::HelloworldXamarin.Droid.Resource.Styleable.StateListDrawable_android_visible;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.SwitchCompat = global::HelloworldXamarin.Droid.Resource.Styleable.SwitchCompat;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.SwitchCompat_android_textOff = global::HelloworldXamarin.Droid.Resource.Styleable.SwitchCompat_android_textOff;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.SwitchCompat_android_textOn = global::HelloworldXamarin.Droid.Resource.Styleable.SwitchCompat_android_textOn;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.SwitchCompat_android_thumb = global::HelloworldXamarin.Droid.Resource.Styleable.SwitchCompat_android_thumb;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.SwitchCompat_showText = global::HelloworldXamarin.Droid.Resource.Styleable.SwitchCompat_showText;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.SwitchCompat_splitTrack = global::HelloworldXamarin.Droid.Resource.Styleable.SwitchCompat_splitTrack;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.SwitchCompat_switchMinWidth = global::HelloworldXamarin.Droid.Resource.Styleable.SwitchCompat_switchMinWidth;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.SwitchCompat_switchPadding = global::HelloworldXamarin.Droid.Resource.Styleable.SwitchCompat_switchPadding;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.SwitchCompat_switchTextAppearance = global::HelloworldXamarin.Droid.Resource.Styleable.SwitchCompat_switchTextAppearance;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.SwitchCompat_thumbTextPadding = global::HelloworldXamarin.Droid.Resource.Styleable.SwitchCompat_thumbTextPadding;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.SwitchCompat_thumbTint = global::HelloworldXamarin.Droid.Resource.Styleable.SwitchCompat_thumbTint;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.SwitchCompat_thumbTintMode = global::HelloworldXamarin.Droid.Resource.Styleable.SwitchCompat_thumbTintMode;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.SwitchCompat_track = global::HelloworldXamarin.Droid.Resource.Styleable.SwitchCompat_track;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.SwitchCompat_trackTint = global::HelloworldXamarin.Droid.Resource.Styleable.SwitchCompat_trackTint;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.SwitchCompat_trackTintMode = global::HelloworldXamarin.Droid.Resource.Styleable.SwitchCompat_trackTintMode;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.TabItem = global::HelloworldXamarin.Droid.Resource.Styleable.TabItem;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.TabItem_android_icon = global::HelloworldXamarin.Droid.Resource.Styleable.TabItem_android_icon;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.TabItem_android_layout = global::HelloworldXamarin.Droid.Resource.Styleable.TabItem_android_layout;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.TabItem_android_text = global::HelloworldXamarin.Droid.Resource.Styleable.TabItem_android_text;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.TabLayout = global::HelloworldXamarin.Droid.Resource.Styleable.TabLayout;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.TabLayout_tabBackground = global::HelloworldXamarin.Droid.Resource.Styleable.TabLayout_tabBackground;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.TabLayout_tabContentStart = global::HelloworldXamarin.Droid.Resource.Styleable.TabLayout_tabContentStart;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.TabLayout_tabGravity = global::HelloworldXamarin.Droid.Resource.Styleable.TabLayout_tabGravity;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.TabLayout_tabIconTint = global::HelloworldXamarin.Droid.Resource.Styleable.TabLayout_tabIconTint;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.TabLayout_tabIconTintMode = global::HelloworldXamarin.Droid.Resource.Styleable.TabLayout_tabIconTintMode;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.TabLayout_tabIndicator = global::HelloworldXamarin.Droid.Resource.Styleable.TabLayout_tabIndicator;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.TabLayout_tabIndicatorAnimationDuration = global::HelloworldXamarin.Droid.Resource.Styleable.TabLayout_tabIndicatorAnimationDuration;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.TabLayout_tabIndicatorColor = global::HelloworldXamarin.Droid.Resource.Styleable.TabLayout_tabIndicatorColor;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.TabLayout_tabIndicatorFullWidth = global::HelloworldXamarin.Droid.Resource.Styleable.TabLayout_tabIndicatorFullWidth;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.TabLayout_tabIndicatorGravity = global::HelloworldXamarin.Droid.Resource.Styleable.TabLayout_tabIndicatorGravity;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.TabLayout_tabIndicatorHeight = global::HelloworldXamarin.Droid.Resource.Styleable.TabLayout_tabIndicatorHeight;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.TabLayout_tabInlineLabel = global::HelloworldXamarin.Droid.Resource.Styleable.TabLayout_tabInlineLabel;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.TabLayout_tabMaxWidth = global::HelloworldXamarin.Droid.Resource.Styleable.TabLayout_tabMaxWidth;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.TabLayout_tabMinWidth = global::HelloworldXamarin.Droid.Resource.Styleable.TabLayout_tabMinWidth;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.TabLayout_tabMode = global::HelloworldXamarin.Droid.Resource.Styleable.TabLayout_tabMode;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.TabLayout_tabPadding = global::HelloworldXamarin.Droid.Resource.Styleable.TabLayout_tabPadding;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.TabLayout_tabPaddingBottom = global::HelloworldXamarin.Droid.Resource.Styleable.TabLayout_tabPaddingBottom;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.TabLayout_tabPaddingEnd = global::HelloworldXamarin.Droid.Resource.Styleable.TabLayout_tabPaddingEnd;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.TabLayout_tabPaddingStart = global::HelloworldXamarin.Droid.Resource.Styleable.TabLayout_tabPaddingStart;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.TabLayout_tabPaddingTop = global::HelloworldXamarin.Droid.Resource.Styleable.TabLayout_tabPaddingTop;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.TabLayout_tabRippleColor = global::HelloworldXamarin.Droid.Resource.Styleable.TabLayout_tabRippleColor;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.TabLayout_tabSelectedTextColor = global::HelloworldXamarin.Droid.Resource.Styleable.TabLayout_tabSelectedTextColor;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.TabLayout_tabTextAppearance = global::HelloworldXamarin.Droid.Resource.Styleable.TabLayout_tabTextAppearance;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.TabLayout_tabTextColor = global::HelloworldXamarin.Droid.Resource.Styleable.TabLayout_tabTextColor;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.TabLayout_tabUnboundedRipple = global::HelloworldXamarin.Droid.Resource.Styleable.TabLayout_tabUnboundedRipple;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.TextAppearance = global::HelloworldXamarin.Droid.Resource.Styleable.TextAppearance;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.TextAppearance_android_fontFamily = global::HelloworldXamarin.Droid.Resource.Styleable.TextAppearance_android_fontFamily;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.TextAppearance_android_shadowColor = global::HelloworldXamarin.Droid.Resource.Styleable.TextAppearance_android_shadowColor;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.TextAppearance_android_shadowDx = global::HelloworldXamarin.Droid.Resource.Styleable.TextAppearance_android_shadowDx;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.TextAppearance_android_shadowDy = global::HelloworldXamarin.Droid.Resource.Styleable.TextAppearance_android_shadowDy;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.TextAppearance_android_shadowRadius = global::HelloworldXamarin.Droid.Resource.Styleable.TextAppearance_android_shadowRadius;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.TextAppearance_android_textColor = global::HelloworldXamarin.Droid.Resource.Styleable.TextAppearance_android_textColor;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.TextAppearance_android_textColorHint = global::HelloworldXamarin.Droid.Resource.Styleable.TextAppearance_android_textColorHint;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.TextAppearance_android_textColorLink = global::HelloworldXamarin.Droid.Resource.Styleable.TextAppearance_android_textColorLink;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.TextAppearance_android_textSize = global::HelloworldXamarin.Droid.Resource.Styleable.TextAppearance_android_textSize;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.TextAppearance_android_textStyle = global::HelloworldXamarin.Droid.Resource.Styleable.TextAppearance_android_textStyle;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.TextAppearance_android_typeface = global::HelloworldXamarin.Droid.Resource.Styleable.TextAppearance_android_typeface;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.TextAppearance_fontFamily = global::HelloworldXamarin.Droid.Resource.Styleable.TextAppearance_fontFamily;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.TextAppearance_textAllCaps = global::HelloworldXamarin.Droid.Resource.Styleable.TextAppearance_textAllCaps;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.TextInputLayout = global::HelloworldXamarin.Droid.Resource.Styleable.TextInputLayout;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.TextInputLayout_android_hint = global::HelloworldXamarin.Droid.Resource.Styleable.TextInputLayout_android_hint;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.TextInputLayout_android_textColorHint = global::HelloworldXamarin.Droid.Resource.Styleable.TextInputLayout_android_textColorHint;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.TextInputLayout_boxBackgroundColor = global::HelloworldXamarin.Droid.Resource.Styleable.TextInputLayout_boxBackgroundColor;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.TextInputLayout_boxBackgroundMode = global::HelloworldXamarin.Droid.Resource.Styleable.TextInputLayout_boxBackgroundMode;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.TextInputLayout_boxCollapsedPaddingTop = global::HelloworldXamarin.Droid.Resource.Styleable.TextInputLayout_boxCollapsedPaddingTop;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.TextInputLayout_boxCornerRadiusBottomEnd = global::HelloworldXamarin.Droid.Resource.Styleable.TextInputLayout_boxCornerRadiusBottomEnd;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.TextInputLayout_boxCornerRadiusBottomStart = global::HelloworldXamarin.Droid.Resource.Styleable.TextInputLayout_boxCornerRadiusBottomStart;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.TextInputLayout_boxCornerRadiusTopEnd = global::HelloworldXamarin.Droid.Resource.Styleable.TextInputLayout_boxCornerRadiusTopEnd;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.TextInputLayout_boxCornerRadiusTopStart = global::HelloworldXamarin.Droid.Resource.Styleable.TextInputLayout_boxCornerRadiusTopStart;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.TextInputLayout_boxStrokeColor = global::HelloworldXamarin.Droid.Resource.Styleable.TextInputLayout_boxStrokeColor;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.TextInputLayout_boxStrokeWidth = global::HelloworldXamarin.Droid.Resource.Styleable.TextInputLayout_boxStrokeWidth;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.TextInputLayout_counterEnabled = global::HelloworldXamarin.Droid.Resource.Styleable.TextInputLayout_counterEnabled;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.TextInputLayout_counterMaxLength = global::HelloworldXamarin.Droid.Resource.Styleable.TextInputLayout_counterMaxLength;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.TextInputLayout_counterOverflowTextAppearance = global::HelloworldXamarin.Droid.Resource.Styleable.TextInputLayout_counterOverflowTextAppearance;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.TextInputLayout_counterTextAppearance = global::HelloworldXamarin.Droid.Resource.Styleable.TextInputLayout_counterTextAppearance;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.TextInputLayout_errorEnabled = global::HelloworldXamarin.Droid.Resource.Styleable.TextInputLayout_errorEnabled;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.TextInputLayout_errorTextAppearance = global::HelloworldXamarin.Droid.Resource.Styleable.TextInputLayout_errorTextAppearance;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.TextInputLayout_helperText = global::HelloworldXamarin.Droid.Resource.Styleable.TextInputLayout_helperText;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.TextInputLayout_helperTextEnabled = global::HelloworldXamarin.Droid.Resource.Styleable.TextInputLayout_helperTextEnabled;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.TextInputLayout_helperTextTextAppearance = global::HelloworldXamarin.Droid.Resource.Styleable.TextInputLayout_helperTextTextAppearance;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.TextInputLayout_hintAnimationEnabled = global::HelloworldXamarin.Droid.Resource.Styleable.TextInputLayout_hintAnimationEnabled;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.TextInputLayout_hintEnabled = global::HelloworldXamarin.Droid.Resource.Styleable.TextInputLayout_hintEnabled;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.TextInputLayout_hintTextAppearance = global::HelloworldXamarin.Droid.Resource.Styleable.TextInputLayout_hintTextAppearance;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.TextInputLayout_passwordToggleContentDescription = global::HelloworldXamarin.Droid.Resource.Styleable.TextInputLayout_passwordToggleContentDescription;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.TextInputLayout_passwordToggleDrawable = global::HelloworldXamarin.Droid.Resource.Styleable.TextInputLayout_passwordToggleDrawable;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.TextInputLayout_passwordToggleEnabled = global::HelloworldXamarin.Droid.Resource.Styleable.TextInputLayout_passwordToggleEnabled;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.TextInputLayout_passwordToggleTint = global::HelloworldXamarin.Droid.Resource.Styleable.TextInputLayout_passwordToggleTint;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.TextInputLayout_passwordToggleTintMode = global::HelloworldXamarin.Droid.Resource.Styleable.TextInputLayout_passwordToggleTintMode;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.ThemeEnforcement = global::HelloworldXamarin.Droid.Resource.Styleable.ThemeEnforcement;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.ThemeEnforcement_android_textAppearance = global::HelloworldXamarin.Droid.Resource.Styleable.ThemeEnforcement_android_textAppearance;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.ThemeEnforcement_enforceMaterialTheme = global::HelloworldXamarin.Droid.Resource.Styleable.ThemeEnforcement_enforceMaterialTheme;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.ThemeEnforcement_enforceTextAppearance = global::HelloworldXamarin.Droid.Resource.Styleable.ThemeEnforcement_enforceTextAppearance;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.Toolbar = global::HelloworldXamarin.Droid.Resource.Styleable.Toolbar;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.Toolbar_android_gravity = global::HelloworldXamarin.Droid.Resource.Styleable.Toolbar_android_gravity;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.Toolbar_android_minHeight = global::HelloworldXamarin.Droid.Resource.Styleable.Toolbar_android_minHeight;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.Toolbar_buttonGravity = global::HelloworldXamarin.Droid.Resource.Styleable.Toolbar_buttonGravity;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.Toolbar_collapseContentDescription = global::HelloworldXamarin.Droid.Resource.Styleable.Toolbar_collapseContentDescription;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.Toolbar_collapseIcon = global::HelloworldXamarin.Droid.Resource.Styleable.Toolbar_collapseIcon;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.Toolbar_contentInsetEnd = global::HelloworldXamarin.Droid.Resource.Styleable.Toolbar_contentInsetEnd;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.Toolbar_contentInsetEndWithActions = global::HelloworldXamarin.Droid.Resource.Styleable.Toolbar_contentInsetEndWithActions;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.Toolbar_contentInsetLeft = global::HelloworldXamarin.Droid.Resource.Styleable.Toolbar_contentInsetLeft;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.Toolbar_contentInsetRight = global::HelloworldXamarin.Droid.Resource.Styleable.Toolbar_contentInsetRight;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.Toolbar_contentInsetStart = global::HelloworldXamarin.Droid.Resource.Styleable.Toolbar_contentInsetStart;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.Toolbar_contentInsetStartWithNavigation = global::HelloworldXamarin.Droid.Resource.Styleable.Toolbar_contentInsetStartWithNavigation;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.Toolbar_logo = global::HelloworldXamarin.Droid.Resource.Styleable.Toolbar_logo;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.Toolbar_logoDescription = global::HelloworldXamarin.Droid.Resource.Styleable.Toolbar_logoDescription;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.Toolbar_maxButtonHeight = global::HelloworldXamarin.Droid.Resource.Styleable.Toolbar_maxButtonHeight;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.Toolbar_navigationContentDescription = global::HelloworldXamarin.Droid.Resource.Styleable.Toolbar_navigationContentDescription;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.Toolbar_navigationIcon = global::HelloworldXamarin.Droid.Resource.Styleable.Toolbar_navigationIcon;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.Toolbar_popupTheme = global::HelloworldXamarin.Droid.Resource.Styleable.Toolbar_popupTheme;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.Toolbar_subtitle = global::HelloworldXamarin.Droid.Resource.Styleable.Toolbar_subtitle;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.Toolbar_subtitleTextAppearance = global::HelloworldXamarin.Droid.Resource.Styleable.Toolbar_subtitleTextAppearance;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.Toolbar_subtitleTextColor = global::HelloworldXamarin.Droid.Resource.Styleable.Toolbar_subtitleTextColor;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.Toolbar_title = global::HelloworldXamarin.Droid.Resource.Styleable.Toolbar_title;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.Toolbar_titleMargin = global::HelloworldXamarin.Droid.Resource.Styleable.Toolbar_titleMargin;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.Toolbar_titleMarginBottom = global::HelloworldXamarin.Droid.Resource.Styleable.Toolbar_titleMarginBottom;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.Toolbar_titleMarginEnd = global::HelloworldXamarin.Droid.Resource.Styleable.Toolbar_titleMarginEnd;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.Toolbar_titleMargins = global::HelloworldXamarin.Droid.Resource.Styleable.Toolbar_titleMargins;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.Toolbar_titleMarginStart = global::HelloworldXamarin.Droid.Resource.Styleable.Toolbar_titleMarginStart;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.Toolbar_titleMarginTop = global::HelloworldXamarin.Droid.Resource.Styleable.Toolbar_titleMarginTop;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.Toolbar_titleTextAppearance = global::HelloworldXamarin.Droid.Resource.Styleable.Toolbar_titleTextAppearance;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.Toolbar_titleTextColor = global::HelloworldXamarin.Droid.Resource.Styleable.Toolbar_titleTextColor;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.View = global::HelloworldXamarin.Droid.Resource.Styleable.View;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.ViewBackgroundHelper = global::HelloworldXamarin.Droid.Resource.Styleable.ViewBackgroundHelper;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.ViewBackgroundHelper_android_background = global::HelloworldXamarin.Droid.Resource.Styleable.ViewBackgroundHelper_android_background;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.ViewBackgroundHelper_backgroundTint = global::HelloworldXamarin.Droid.Resource.Styleable.ViewBackgroundHelper_backgroundTint;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.ViewBackgroundHelper_backgroundTintMode = global::HelloworldXamarin.Droid.Resource.Styleable.ViewBackgroundHelper_backgroundTintMode;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.ViewStubCompat = global::HelloworldXamarin.Droid.Resource.Styleable.ViewStubCompat;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.ViewStubCompat_android_id = global::HelloworldXamarin.Droid.Resource.Styleable.ViewStubCompat_android_id;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.ViewStubCompat_android_inflatedId = global::HelloworldXamarin.Droid.Resource.Styleable.ViewStubCompat_android_inflatedId;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.ViewStubCompat_android_layout = global::HelloworldXamarin.Droid.Resource.Styleable.ViewStubCompat_android_layout;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.View_android_focusable = global::HelloworldXamarin.Droid.Resource.Styleable.View_android_focusable;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.View_android_theme = global::HelloworldXamarin.Droid.Resource.Styleable.View_android_theme;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.View_paddingEnd = global::HelloworldXamarin.Droid.Resource.Styleable.View_paddingEnd;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.View_paddingStart = global::HelloworldXamarin.Droid.Resource.Styleable.View_paddingStart;
+ global::Xamarin.Forms.Platform.Android.Resource.Styleable.View_theme = global::HelloworldXamarin.Droid.Resource.Styleable.View_theme;
+ global::Xamarin.Forms.Platform.Resource.Animation.abc_fade_in = global::HelloworldXamarin.Droid.Resource.Animation.abc_fade_in;
+ global::Xamarin.Forms.Platform.Resource.Animation.abc_fade_out = global::HelloworldXamarin.Droid.Resource.Animation.abc_fade_out;
+ global::Xamarin.Forms.Platform.Resource.Animation.abc_grow_fade_in_from_bottom = global::HelloworldXamarin.Droid.Resource.Animation.abc_grow_fade_in_from_bottom;
+ global::Xamarin.Forms.Platform.Resource.Animation.abc_popup_enter = global::HelloworldXamarin.Droid.Resource.Animation.abc_popup_enter;
+ global::Xamarin.Forms.Platform.Resource.Animation.abc_popup_exit = global::HelloworldXamarin.Droid.Resource.Animation.abc_popup_exit;
+ global::Xamarin.Forms.Platform.Resource.Animation.abc_shrink_fade_out_from_bottom = global::HelloworldXamarin.Droid.Resource.Animation.abc_shrink_fade_out_from_bottom;
+ global::Xamarin.Forms.Platform.Resource.Animation.abc_slide_in_bottom = global::HelloworldXamarin.Droid.Resource.Animation.abc_slide_in_bottom;
+ global::Xamarin.Forms.Platform.Resource.Animation.abc_slide_in_top = global::HelloworldXamarin.Droid.Resource.Animation.abc_slide_in_top;
+ global::Xamarin.Forms.Platform.Resource.Animation.abc_slide_out_bottom = global::HelloworldXamarin.Droid.Resource.Animation.abc_slide_out_bottom;
+ global::Xamarin.Forms.Platform.Resource.Animation.abc_slide_out_top = global::HelloworldXamarin.Droid.Resource.Animation.abc_slide_out_top;
+ global::Xamarin.Forms.Platform.Resource.Animation.abc_tooltip_enter = global::HelloworldXamarin.Droid.Resource.Animation.abc_tooltip_enter;
+ global::Xamarin.Forms.Platform.Resource.Animation.abc_tooltip_exit = global::HelloworldXamarin.Droid.Resource.Animation.abc_tooltip_exit;
+ global::Xamarin.Forms.Platform.Resource.Animation.design_bottom_sheet_slide_in = global::HelloworldXamarin.Droid.Resource.Animation.design_bottom_sheet_slide_in;
+ global::Xamarin.Forms.Platform.Resource.Animation.design_bottom_sheet_slide_out = global::HelloworldXamarin.Droid.Resource.Animation.design_bottom_sheet_slide_out;
+ global::Xamarin.Forms.Platform.Resource.Animation.design_snackbar_in = global::HelloworldXamarin.Droid.Resource.Animation.design_snackbar_in;
+ global::Xamarin.Forms.Platform.Resource.Animation.design_snackbar_out = global::HelloworldXamarin.Droid.Resource.Animation.design_snackbar_out;
+ global::Xamarin.Forms.Platform.Resource.Animation.EnterFromLeft = global::HelloworldXamarin.Droid.Resource.Animation.EnterFromLeft;
+ global::Xamarin.Forms.Platform.Resource.Animation.EnterFromRight = global::HelloworldXamarin.Droid.Resource.Animation.EnterFromRight;
+ global::Xamarin.Forms.Platform.Resource.Animation.ExitToLeft = global::HelloworldXamarin.Droid.Resource.Animation.ExitToLeft;
+ global::Xamarin.Forms.Platform.Resource.Animation.ExitToRight = global::HelloworldXamarin.Droid.Resource.Animation.ExitToRight;
+ global::Xamarin.Forms.Platform.Resource.Animator.design_appbar_state_list_animator = global::HelloworldXamarin.Droid.Resource.Animator.design_appbar_state_list_animator;
+ global::Xamarin.Forms.Platform.Resource.Animator.design_fab_hide_motion_spec = global::HelloworldXamarin.Droid.Resource.Animator.design_fab_hide_motion_spec;
+ global::Xamarin.Forms.Platform.Resource.Animator.design_fab_show_motion_spec = global::HelloworldXamarin.Droid.Resource.Animator.design_fab_show_motion_spec;
+ global::Xamarin.Forms.Platform.Resource.Animator.mtrl_btn_state_list_anim = global::HelloworldXamarin.Droid.Resource.Animator.mtrl_btn_state_list_anim;
+ global::Xamarin.Forms.Platform.Resource.Animator.mtrl_btn_unelevated_state_list_anim = global::HelloworldXamarin.Droid.Resource.Animator.mtrl_btn_unelevated_state_list_anim;
+ global::Xamarin.Forms.Platform.Resource.Animator.mtrl_chip_state_list_anim = global::HelloworldXamarin.Droid.Resource.Animator.mtrl_chip_state_list_anim;
+ global::Xamarin.Forms.Platform.Resource.Animator.mtrl_fab_hide_motion_spec = global::HelloworldXamarin.Droid.Resource.Animator.mtrl_fab_hide_motion_spec;
+ global::Xamarin.Forms.Platform.Resource.Animator.mtrl_fab_show_motion_spec = global::HelloworldXamarin.Droid.Resource.Animator.mtrl_fab_show_motion_spec;
+ global::Xamarin.Forms.Platform.Resource.Animator.mtrl_fab_transformation_sheet_collapse_spec = global::HelloworldXamarin.Droid.Resource.Animator.mtrl_fab_transformation_sheet_collapse_spec;
+ global::Xamarin.Forms.Platform.Resource.Animator.mtrl_fab_transformation_sheet_expand_spec = global::HelloworldXamarin.Droid.Resource.Animator.mtrl_fab_transformation_sheet_expand_spec;
+ global::Xamarin.Forms.Platform.Resource.Attribute.actionBarDivider = global::HelloworldXamarin.Droid.Resource.Attribute.actionBarDivider;
+ global::Xamarin.Forms.Platform.Resource.Attribute.actionBarItemBackground = global::HelloworldXamarin.Droid.Resource.Attribute.actionBarItemBackground;
+ global::Xamarin.Forms.Platform.Resource.Attribute.actionBarPopupTheme = global::HelloworldXamarin.Droid.Resource.Attribute.actionBarPopupTheme;
+ global::Xamarin.Forms.Platform.Resource.Attribute.actionBarSize = global::HelloworldXamarin.Droid.Resource.Attribute.actionBarSize;
+ global::Xamarin.Forms.Platform.Resource.Attribute.actionBarSplitStyle = global::HelloworldXamarin.Droid.Resource.Attribute.actionBarSplitStyle;
+ global::Xamarin.Forms.Platform.Resource.Attribute.actionBarStyle = global::HelloworldXamarin.Droid.Resource.Attribute.actionBarStyle;
+ global::Xamarin.Forms.Platform.Resource.Attribute.actionBarTabBarStyle = global::HelloworldXamarin.Droid.Resource.Attribute.actionBarTabBarStyle;
+ global::Xamarin.Forms.Platform.Resource.Attribute.actionBarTabStyle = global::HelloworldXamarin.Droid.Resource.Attribute.actionBarTabStyle;
+ global::Xamarin.Forms.Platform.Resource.Attribute.actionBarTabTextStyle = global::HelloworldXamarin.Droid.Resource.Attribute.actionBarTabTextStyle;
+ global::Xamarin.Forms.Platform.Resource.Attribute.actionBarTheme = global::HelloworldXamarin.Droid.Resource.Attribute.actionBarTheme;
+ global::Xamarin.Forms.Platform.Resource.Attribute.actionBarWidgetTheme = global::HelloworldXamarin.Droid.Resource.Attribute.actionBarWidgetTheme;
+ global::Xamarin.Forms.Platform.Resource.Attribute.actionButtonStyle = global::HelloworldXamarin.Droid.Resource.Attribute.actionButtonStyle;
+ global::Xamarin.Forms.Platform.Resource.Attribute.actionDropDownStyle = global::HelloworldXamarin.Droid.Resource.Attribute.actionDropDownStyle;
+ global::Xamarin.Forms.Platform.Resource.Attribute.actionLayout = global::HelloworldXamarin.Droid.Resource.Attribute.actionLayout;
+ global::Xamarin.Forms.Platform.Resource.Attribute.actionMenuTextAppearance = global::HelloworldXamarin.Droid.Resource.Attribute.actionMenuTextAppearance;
+ global::Xamarin.Forms.Platform.Resource.Attribute.actionMenuTextColor = global::HelloworldXamarin.Droid.Resource.Attribute.actionMenuTextColor;
+ global::Xamarin.Forms.Platform.Resource.Attribute.actionModeBackground = global::HelloworldXamarin.Droid.Resource.Attribute.actionModeBackground;
+ global::Xamarin.Forms.Platform.Resource.Attribute.actionModeCloseButtonStyle = global::HelloworldXamarin.Droid.Resource.Attribute.actionModeCloseButtonStyle;
+ global::Xamarin.Forms.Platform.Resource.Attribute.actionModeCloseDrawable = global::HelloworldXamarin.Droid.Resource.Attribute.actionModeCloseDrawable;
+ global::Xamarin.Forms.Platform.Resource.Attribute.actionModeCopyDrawable = global::HelloworldXamarin.Droid.Resource.Attribute.actionModeCopyDrawable;
+ global::Xamarin.Forms.Platform.Resource.Attribute.actionModeCutDrawable = global::HelloworldXamarin.Droid.Resource.Attribute.actionModeCutDrawable;
+ global::Xamarin.Forms.Platform.Resource.Attribute.actionModeFindDrawable = global::HelloworldXamarin.Droid.Resource.Attribute.actionModeFindDrawable;
+ global::Xamarin.Forms.Platform.Resource.Attribute.actionModePasteDrawable = global::HelloworldXamarin.Droid.Resource.Attribute.actionModePasteDrawable;
+ global::Xamarin.Forms.Platform.Resource.Attribute.actionModePopupWindowStyle = global::HelloworldXamarin.Droid.Resource.Attribute.actionModePopupWindowStyle;
+ global::Xamarin.Forms.Platform.Resource.Attribute.actionModeSelectAllDrawable = global::HelloworldXamarin.Droid.Resource.Attribute.actionModeSelectAllDrawable;
+ global::Xamarin.Forms.Platform.Resource.Attribute.actionModeShareDrawable = global::HelloworldXamarin.Droid.Resource.Attribute.actionModeShareDrawable;
+ global::Xamarin.Forms.Platform.Resource.Attribute.actionModeSplitBackground = global::HelloworldXamarin.Droid.Resource.Attribute.actionModeSplitBackground;
+ global::Xamarin.Forms.Platform.Resource.Attribute.actionModeStyle = global::HelloworldXamarin.Droid.Resource.Attribute.actionModeStyle;
+ global::Xamarin.Forms.Platform.Resource.Attribute.actionModeWebSearchDrawable = global::HelloworldXamarin.Droid.Resource.Attribute.actionModeWebSearchDrawable;
+ global::Xamarin.Forms.Platform.Resource.Attribute.actionOverflowButtonStyle = global::HelloworldXamarin.Droid.Resource.Attribute.actionOverflowButtonStyle;
+ global::Xamarin.Forms.Platform.Resource.Attribute.actionOverflowMenuStyle = global::HelloworldXamarin.Droid.Resource.Attribute.actionOverflowMenuStyle;
+ global::Xamarin.Forms.Platform.Resource.Attribute.actionProviderClass = global::HelloworldXamarin.Droid.Resource.Attribute.actionProviderClass;
+ global::Xamarin.Forms.Platform.Resource.Attribute.actionViewClass = global::HelloworldXamarin.Droid.Resource.Attribute.actionViewClass;
+ global::Xamarin.Forms.Platform.Resource.Attribute.activityChooserViewStyle = global::HelloworldXamarin.Droid.Resource.Attribute.activityChooserViewStyle;
+ global::Xamarin.Forms.Platform.Resource.Attribute.alertDialogButtonGroupStyle = global::HelloworldXamarin.Droid.Resource.Attribute.alertDialogButtonGroupStyle;
+ global::Xamarin.Forms.Platform.Resource.Attribute.alertDialogCenterButtons = global::HelloworldXamarin.Droid.Resource.Attribute.alertDialogCenterButtons;
+ global::Xamarin.Forms.Platform.Resource.Attribute.alertDialogStyle = global::HelloworldXamarin.Droid.Resource.Attribute.alertDialogStyle;
+ global::Xamarin.Forms.Platform.Resource.Attribute.alertDialogTheme = global::HelloworldXamarin.Droid.Resource.Attribute.alertDialogTheme;
+ global::Xamarin.Forms.Platform.Resource.Attribute.allowStacking = global::HelloworldXamarin.Droid.Resource.Attribute.allowStacking;
+ global::Xamarin.Forms.Platform.Resource.Attribute.alpha = global::HelloworldXamarin.Droid.Resource.Attribute.alpha;
+ global::Xamarin.Forms.Platform.Resource.Attribute.alphabeticModifiers = global::HelloworldXamarin.Droid.Resource.Attribute.alphabeticModifiers;
+ global::Xamarin.Forms.Platform.Resource.Attribute.arrowHeadLength = global::HelloworldXamarin.Droid.Resource.Attribute.arrowHeadLength;
+ global::Xamarin.Forms.Platform.Resource.Attribute.arrowShaftLength = global::HelloworldXamarin.Droid.Resource.Attribute.arrowShaftLength;
+ global::Xamarin.Forms.Platform.Resource.Attribute.autoCompleteTextViewStyle = global::HelloworldXamarin.Droid.Resource.Attribute.autoCompleteTextViewStyle;
+ global::Xamarin.Forms.Platform.Resource.Attribute.autoSizeMaxTextSize = global::HelloworldXamarin.Droid.Resource.Attribute.autoSizeMaxTextSize;
+ global::Xamarin.Forms.Platform.Resource.Attribute.autoSizeMinTextSize = global::HelloworldXamarin.Droid.Resource.Attribute.autoSizeMinTextSize;
+ global::Xamarin.Forms.Platform.Resource.Attribute.autoSizePresetSizes = global::HelloworldXamarin.Droid.Resource.Attribute.autoSizePresetSizes;
+ global::Xamarin.Forms.Platform.Resource.Attribute.autoSizeStepGranularity = global::HelloworldXamarin.Droid.Resource.Attribute.autoSizeStepGranularity;
+ global::Xamarin.Forms.Platform.Resource.Attribute.autoSizeTextType = global::HelloworldXamarin.Droid.Resource.Attribute.autoSizeTextType;
+ global::Xamarin.Forms.Platform.Resource.Attribute.background = global::HelloworldXamarin.Droid.Resource.Attribute.background;
+ global::Xamarin.Forms.Platform.Resource.Attribute.backgroundSplit = global::HelloworldXamarin.Droid.Resource.Attribute.backgroundSplit;
+ global::Xamarin.Forms.Platform.Resource.Attribute.backgroundStacked = global::HelloworldXamarin.Droid.Resource.Attribute.backgroundStacked;
+ global::Xamarin.Forms.Platform.Resource.Attribute.backgroundTint = global::HelloworldXamarin.Droid.Resource.Attribute.backgroundTint;
+ global::Xamarin.Forms.Platform.Resource.Attribute.backgroundTintMode = global::HelloworldXamarin.Droid.Resource.Attribute.backgroundTintMode;
+ global::Xamarin.Forms.Platform.Resource.Attribute.barLength = global::HelloworldXamarin.Droid.Resource.Attribute.barLength;
+ global::Xamarin.Forms.Platform.Resource.Attribute.behavior_autoHide = global::HelloworldXamarin.Droid.Resource.Attribute.behavior_autoHide;
+ global::Xamarin.Forms.Platform.Resource.Attribute.behavior_fitToContents = global::HelloworldXamarin.Droid.Resource.Attribute.behavior_fitToContents;
+ global::Xamarin.Forms.Platform.Resource.Attribute.behavior_hideable = global::HelloworldXamarin.Droid.Resource.Attribute.behavior_hideable;
+ global::Xamarin.Forms.Platform.Resource.Attribute.behavior_overlapTop = global::HelloworldXamarin.Droid.Resource.Attribute.behavior_overlapTop;
+ global::Xamarin.Forms.Platform.Resource.Attribute.behavior_peekHeight = global::HelloworldXamarin.Droid.Resource.Attribute.behavior_peekHeight;
+ global::Xamarin.Forms.Platform.Resource.Attribute.behavior_skipCollapsed = global::HelloworldXamarin.Droid.Resource.Attribute.behavior_skipCollapsed;
+ global::Xamarin.Forms.Platform.Resource.Attribute.borderlessButtonStyle = global::HelloworldXamarin.Droid.Resource.Attribute.borderlessButtonStyle;
+ global::Xamarin.Forms.Platform.Resource.Attribute.borderWidth = global::HelloworldXamarin.Droid.Resource.Attribute.borderWidth;
+ global::Xamarin.Forms.Platform.Resource.Attribute.bottomAppBarStyle = global::HelloworldXamarin.Droid.Resource.Attribute.bottomAppBarStyle;
+ global::Xamarin.Forms.Platform.Resource.Attribute.bottomNavigationStyle = global::HelloworldXamarin.Droid.Resource.Attribute.bottomNavigationStyle;
+ global::Xamarin.Forms.Platform.Resource.Attribute.bottomSheetDialogTheme = global::HelloworldXamarin.Droid.Resource.Attribute.bottomSheetDialogTheme;
+ global::Xamarin.Forms.Platform.Resource.Attribute.bottomSheetStyle = global::HelloworldXamarin.Droid.Resource.Attribute.bottomSheetStyle;
+ global::Xamarin.Forms.Platform.Resource.Attribute.boxBackgroundColor = global::HelloworldXamarin.Droid.Resource.Attribute.boxBackgroundColor;
+ global::Xamarin.Forms.Platform.Resource.Attribute.boxBackgroundMode = global::HelloworldXamarin.Droid.Resource.Attribute.boxBackgroundMode;
+ global::Xamarin.Forms.Platform.Resource.Attribute.boxCollapsedPaddingTop = global::HelloworldXamarin.Droid.Resource.Attribute.boxCollapsedPaddingTop;
+ global::Xamarin.Forms.Platform.Resource.Attribute.boxCornerRadiusBottomEnd = global::HelloworldXamarin.Droid.Resource.Attribute.boxCornerRadiusBottomEnd;
+ global::Xamarin.Forms.Platform.Resource.Attribute.boxCornerRadiusBottomStart = global::HelloworldXamarin.Droid.Resource.Attribute.boxCornerRadiusBottomStart;
+ global::Xamarin.Forms.Platform.Resource.Attribute.boxCornerRadiusTopEnd = global::HelloworldXamarin.Droid.Resource.Attribute.boxCornerRadiusTopEnd;
+ global::Xamarin.Forms.Platform.Resource.Attribute.boxCornerRadiusTopStart = global::HelloworldXamarin.Droid.Resource.Attribute.boxCornerRadiusTopStart;
+ global::Xamarin.Forms.Platform.Resource.Attribute.boxStrokeColor = global::HelloworldXamarin.Droid.Resource.Attribute.boxStrokeColor;
+ global::Xamarin.Forms.Platform.Resource.Attribute.boxStrokeWidth = global::HelloworldXamarin.Droid.Resource.Attribute.boxStrokeWidth;
+ global::Xamarin.Forms.Platform.Resource.Attribute.buttonBarButtonStyle = global::HelloworldXamarin.Droid.Resource.Attribute.buttonBarButtonStyle;
+ global::Xamarin.Forms.Platform.Resource.Attribute.buttonBarNegativeButtonStyle = global::HelloworldXamarin.Droid.Resource.Attribute.buttonBarNegativeButtonStyle;
+ global::Xamarin.Forms.Platform.Resource.Attribute.buttonBarNeutralButtonStyle = global::HelloworldXamarin.Droid.Resource.Attribute.buttonBarNeutralButtonStyle;
+ global::Xamarin.Forms.Platform.Resource.Attribute.buttonBarPositiveButtonStyle = global::HelloworldXamarin.Droid.Resource.Attribute.buttonBarPositiveButtonStyle;
+ global::Xamarin.Forms.Platform.Resource.Attribute.buttonBarStyle = global::HelloworldXamarin.Droid.Resource.Attribute.buttonBarStyle;
+ global::Xamarin.Forms.Platform.Resource.Attribute.buttonGravity = global::HelloworldXamarin.Droid.Resource.Attribute.buttonGravity;
+ global::Xamarin.Forms.Platform.Resource.Attribute.buttonIconDimen = global::HelloworldXamarin.Droid.Resource.Attribute.buttonIconDimen;
+ global::Xamarin.Forms.Platform.Resource.Attribute.buttonPanelSideLayout = global::HelloworldXamarin.Droid.Resource.Attribute.buttonPanelSideLayout;
+ global::Xamarin.Forms.Platform.Resource.Attribute.buttonStyle = global::HelloworldXamarin.Droid.Resource.Attribute.buttonStyle;
+ global::Xamarin.Forms.Platform.Resource.Attribute.buttonStyleSmall = global::HelloworldXamarin.Droid.Resource.Attribute.buttonStyleSmall;
+ global::Xamarin.Forms.Platform.Resource.Attribute.buttonTint = global::HelloworldXamarin.Droid.Resource.Attribute.buttonTint;
+ global::Xamarin.Forms.Platform.Resource.Attribute.buttonTintMode = global::HelloworldXamarin.Droid.Resource.Attribute.buttonTintMode;
+ global::Xamarin.Forms.Platform.Resource.Attribute.cardBackgroundColor = global::HelloworldXamarin.Droid.Resource.Attribute.cardBackgroundColor;
+ global::Xamarin.Forms.Platform.Resource.Attribute.cardCornerRadius = global::HelloworldXamarin.Droid.Resource.Attribute.cardCornerRadius;
+ global::Xamarin.Forms.Platform.Resource.Attribute.cardElevation = global::HelloworldXamarin.Droid.Resource.Attribute.cardElevation;
+ global::Xamarin.Forms.Platform.Resource.Attribute.cardMaxElevation = global::HelloworldXamarin.Droid.Resource.Attribute.cardMaxElevation;
+ global::Xamarin.Forms.Platform.Resource.Attribute.cardPreventCornerOverlap = global::HelloworldXamarin.Droid.Resource.Attribute.cardPreventCornerOverlap;
+ global::Xamarin.Forms.Platform.Resource.Attribute.cardUseCompatPadding = global::HelloworldXamarin.Droid.Resource.Attribute.cardUseCompatPadding;
+ global::Xamarin.Forms.Platform.Resource.Attribute.cardViewStyle = global::HelloworldXamarin.Droid.Resource.Attribute.cardViewStyle;
+ global::Xamarin.Forms.Platform.Resource.Attribute.checkboxStyle = global::HelloworldXamarin.Droid.Resource.Attribute.checkboxStyle;
+ global::Xamarin.Forms.Platform.Resource.Attribute.checkedChip = global::HelloworldXamarin.Droid.Resource.Attribute.checkedChip;
+ global::Xamarin.Forms.Platform.Resource.Attribute.checkedIcon = global::HelloworldXamarin.Droid.Resource.Attribute.checkedIcon;
+ global::Xamarin.Forms.Platform.Resource.Attribute.checkedIconEnabled = global::HelloworldXamarin.Droid.Resource.Attribute.checkedIconEnabled;
+ global::Xamarin.Forms.Platform.Resource.Attribute.checkedIconVisible = global::HelloworldXamarin.Droid.Resource.Attribute.checkedIconVisible;
+ global::Xamarin.Forms.Platform.Resource.Attribute.checkedTextViewStyle = global::HelloworldXamarin.Droid.Resource.Attribute.checkedTextViewStyle;
+ global::Xamarin.Forms.Platform.Resource.Attribute.chipBackgroundColor = global::HelloworldXamarin.Droid.Resource.Attribute.chipBackgroundColor;
+ global::Xamarin.Forms.Platform.Resource.Attribute.chipCornerRadius = global::HelloworldXamarin.Droid.Resource.Attribute.chipCornerRadius;
+ global::Xamarin.Forms.Platform.Resource.Attribute.chipEndPadding = global::HelloworldXamarin.Droid.Resource.Attribute.chipEndPadding;
+ global::Xamarin.Forms.Platform.Resource.Attribute.chipGroupStyle = global::HelloworldXamarin.Droid.Resource.Attribute.chipGroupStyle;
+ global::Xamarin.Forms.Platform.Resource.Attribute.chipIcon = global::HelloworldXamarin.Droid.Resource.Attribute.chipIcon;
+ global::Xamarin.Forms.Platform.Resource.Attribute.chipIconEnabled = global::HelloworldXamarin.Droid.Resource.Attribute.chipIconEnabled;
+ global::Xamarin.Forms.Platform.Resource.Attribute.chipIconSize = global::HelloworldXamarin.Droid.Resource.Attribute.chipIconSize;
+ global::Xamarin.Forms.Platform.Resource.Attribute.chipIconTint = global::HelloworldXamarin.Droid.Resource.Attribute.chipIconTint;
+ global::Xamarin.Forms.Platform.Resource.Attribute.chipIconVisible = global::HelloworldXamarin.Droid.Resource.Attribute.chipIconVisible;
+ global::Xamarin.Forms.Platform.Resource.Attribute.chipMinHeight = global::HelloworldXamarin.Droid.Resource.Attribute.chipMinHeight;
+ global::Xamarin.Forms.Platform.Resource.Attribute.chipSpacing = global::HelloworldXamarin.Droid.Resource.Attribute.chipSpacing;
+ global::Xamarin.Forms.Platform.Resource.Attribute.chipSpacingHorizontal = global::HelloworldXamarin.Droid.Resource.Attribute.chipSpacingHorizontal;
+ global::Xamarin.Forms.Platform.Resource.Attribute.chipSpacingVertical = global::HelloworldXamarin.Droid.Resource.Attribute.chipSpacingVertical;
+ global::Xamarin.Forms.Platform.Resource.Attribute.chipStandaloneStyle = global::HelloworldXamarin.Droid.Resource.Attribute.chipStandaloneStyle;
+ global::Xamarin.Forms.Platform.Resource.Attribute.chipStartPadding = global::HelloworldXamarin.Droid.Resource.Attribute.chipStartPadding;
+ global::Xamarin.Forms.Platform.Resource.Attribute.chipStrokeColor = global::HelloworldXamarin.Droid.Resource.Attribute.chipStrokeColor;
+ global::Xamarin.Forms.Platform.Resource.Attribute.chipStrokeWidth = global::HelloworldXamarin.Droid.Resource.Attribute.chipStrokeWidth;
+ global::Xamarin.Forms.Platform.Resource.Attribute.chipStyle = global::HelloworldXamarin.Droid.Resource.Attribute.chipStyle;
+ global::Xamarin.Forms.Platform.Resource.Attribute.closeIcon = global::HelloworldXamarin.Droid.Resource.Attribute.closeIcon;
+ global::Xamarin.Forms.Platform.Resource.Attribute.closeIconEnabled = global::HelloworldXamarin.Droid.Resource.Attribute.closeIconEnabled;
+ global::Xamarin.Forms.Platform.Resource.Attribute.closeIconEndPadding = global::HelloworldXamarin.Droid.Resource.Attribute.closeIconEndPadding;
+ global::Xamarin.Forms.Platform.Resource.Attribute.closeIconSize = global::HelloworldXamarin.Droid.Resource.Attribute.closeIconSize;
+ global::Xamarin.Forms.Platform.Resource.Attribute.closeIconStartPadding = global::HelloworldXamarin.Droid.Resource.Attribute.closeIconStartPadding;
+ global::Xamarin.Forms.Platform.Resource.Attribute.closeIconTint = global::HelloworldXamarin.Droid.Resource.Attribute.closeIconTint;
+ global::Xamarin.Forms.Platform.Resource.Attribute.closeIconVisible = global::HelloworldXamarin.Droid.Resource.Attribute.closeIconVisible;
+ global::Xamarin.Forms.Platform.Resource.Attribute.closeItemLayout = global::HelloworldXamarin.Droid.Resource.Attribute.closeItemLayout;
+ global::Xamarin.Forms.Platform.Resource.Attribute.collapseContentDescription = global::HelloworldXamarin.Droid.Resource.Attribute.collapseContentDescription;
+ global::Xamarin.Forms.Platform.Resource.Attribute.collapsedTitleGravity = global::HelloworldXamarin.Droid.Resource.Attribute.collapsedTitleGravity;
+ global::Xamarin.Forms.Platform.Resource.Attribute.collapsedTitleTextAppearance = global::HelloworldXamarin.Droid.Resource.Attribute.collapsedTitleTextAppearance;
+ global::Xamarin.Forms.Platform.Resource.Attribute.collapseIcon = global::HelloworldXamarin.Droid.Resource.Attribute.collapseIcon;
+ global::Xamarin.Forms.Platform.Resource.Attribute.color = global::HelloworldXamarin.Droid.Resource.Attribute.color;
+ global::Xamarin.Forms.Platform.Resource.Attribute.colorAccent = global::HelloworldXamarin.Droid.Resource.Attribute.colorAccent;
+ global::Xamarin.Forms.Platform.Resource.Attribute.colorBackgroundFloating = global::HelloworldXamarin.Droid.Resource.Attribute.colorBackgroundFloating;
+ global::Xamarin.Forms.Platform.Resource.Attribute.colorButtonNormal = global::HelloworldXamarin.Droid.Resource.Attribute.colorButtonNormal;
+ global::Xamarin.Forms.Platform.Resource.Attribute.colorControlActivated = global::HelloworldXamarin.Droid.Resource.Attribute.colorControlActivated;
+ global::Xamarin.Forms.Platform.Resource.Attribute.colorControlHighlight = global::HelloworldXamarin.Droid.Resource.Attribute.colorControlHighlight;
+ global::Xamarin.Forms.Platform.Resource.Attribute.colorControlNormal = global::HelloworldXamarin.Droid.Resource.Attribute.colorControlNormal;
+ global::Xamarin.Forms.Platform.Resource.Attribute.colorError = global::HelloworldXamarin.Droid.Resource.Attribute.colorError;
+ global::Xamarin.Forms.Platform.Resource.Attribute.colorPrimary = global::HelloworldXamarin.Droid.Resource.Attribute.colorPrimary;
+ global::Xamarin.Forms.Platform.Resource.Attribute.colorPrimaryDark = global::HelloworldXamarin.Droid.Resource.Attribute.colorPrimaryDark;
+ global::Xamarin.Forms.Platform.Resource.Attribute.colorSecondary = global::HelloworldXamarin.Droid.Resource.Attribute.colorSecondary;
+ global::Xamarin.Forms.Platform.Resource.Attribute.colorSwitchThumbNormal = global::HelloworldXamarin.Droid.Resource.Attribute.colorSwitchThumbNormal;
+ global::Xamarin.Forms.Platform.Resource.Attribute.commitIcon = global::HelloworldXamarin.Droid.Resource.Attribute.commitIcon;
+ global::Xamarin.Forms.Platform.Resource.Attribute.contentDescription = global::HelloworldXamarin.Droid.Resource.Attribute.contentDescription;
+ global::Xamarin.Forms.Platform.Resource.Attribute.contentInsetEnd = global::HelloworldXamarin.Droid.Resource.Attribute.contentInsetEnd;
+ global::Xamarin.Forms.Platform.Resource.Attribute.contentInsetEndWithActions = global::HelloworldXamarin.Droid.Resource.Attribute.contentInsetEndWithActions;
+ global::Xamarin.Forms.Platform.Resource.Attribute.contentInsetLeft = global::HelloworldXamarin.Droid.Resource.Attribute.contentInsetLeft;
+ global::Xamarin.Forms.Platform.Resource.Attribute.contentInsetRight = global::HelloworldXamarin.Droid.Resource.Attribute.contentInsetRight;
+ global::Xamarin.Forms.Platform.Resource.Attribute.contentInsetStart = global::HelloworldXamarin.Droid.Resource.Attribute.contentInsetStart;
+ global::Xamarin.Forms.Platform.Resource.Attribute.contentInsetStartWithNavigation = global::HelloworldXamarin.Droid.Resource.Attribute.contentInsetStartWithNavigation;
+ global::Xamarin.Forms.Platform.Resource.Attribute.contentPadding = global::HelloworldXamarin.Droid.Resource.Attribute.contentPadding;
+ global::Xamarin.Forms.Platform.Resource.Attribute.contentPaddingBottom = global::HelloworldXamarin.Droid.Resource.Attribute.contentPaddingBottom;
+ global::Xamarin.Forms.Platform.Resource.Attribute.contentPaddingLeft = global::HelloworldXamarin.Droid.Resource.Attribute.contentPaddingLeft;
+ global::Xamarin.Forms.Platform.Resource.Attribute.contentPaddingRight = global::HelloworldXamarin.Droid.Resource.Attribute.contentPaddingRight;
+ global::Xamarin.Forms.Platform.Resource.Attribute.contentPaddingTop = global::HelloworldXamarin.Droid.Resource.Attribute.contentPaddingTop;
+ global::Xamarin.Forms.Platform.Resource.Attribute.contentScrim = global::HelloworldXamarin.Droid.Resource.Attribute.contentScrim;
+ global::Xamarin.Forms.Platform.Resource.Attribute.controlBackground = global::HelloworldXamarin.Droid.Resource.Attribute.controlBackground;
+ global::Xamarin.Forms.Platform.Resource.Attribute.coordinatorLayoutStyle = global::HelloworldXamarin.Droid.Resource.Attribute.coordinatorLayoutStyle;
+ global::Xamarin.Forms.Platform.Resource.Attribute.cornerRadius = global::HelloworldXamarin.Droid.Resource.Attribute.cornerRadius;
+ global::Xamarin.Forms.Platform.Resource.Attribute.counterEnabled = global::HelloworldXamarin.Droid.Resource.Attribute.counterEnabled;
+ global::Xamarin.Forms.Platform.Resource.Attribute.counterMaxLength = global::HelloworldXamarin.Droid.Resource.Attribute.counterMaxLength;
+ global::Xamarin.Forms.Platform.Resource.Attribute.counterOverflowTextAppearance = global::HelloworldXamarin.Droid.Resource.Attribute.counterOverflowTextAppearance;
+ global::Xamarin.Forms.Platform.Resource.Attribute.counterTextAppearance = global::HelloworldXamarin.Droid.Resource.Attribute.counterTextAppearance;
+ global::Xamarin.Forms.Platform.Resource.Attribute.customNavigationLayout = global::HelloworldXamarin.Droid.Resource.Attribute.customNavigationLayout;
+ global::Xamarin.Forms.Platform.Resource.Attribute.defaultQueryHint = global::HelloworldXamarin.Droid.Resource.Attribute.defaultQueryHint;
+ global::Xamarin.Forms.Platform.Resource.Attribute.dialogCornerRadius = global::HelloworldXamarin.Droid.Resource.Attribute.dialogCornerRadius;
+ global::Xamarin.Forms.Platform.Resource.Attribute.dialogPreferredPadding = global::HelloworldXamarin.Droid.Resource.Attribute.dialogPreferredPadding;
+ global::Xamarin.Forms.Platform.Resource.Attribute.dialogTheme = global::HelloworldXamarin.Droid.Resource.Attribute.dialogTheme;
+ global::Xamarin.Forms.Platform.Resource.Attribute.displayOptions = global::HelloworldXamarin.Droid.Resource.Attribute.displayOptions;
+ global::Xamarin.Forms.Platform.Resource.Attribute.divider = global::HelloworldXamarin.Droid.Resource.Attribute.divider;
+ global::Xamarin.Forms.Platform.Resource.Attribute.dividerHorizontal = global::HelloworldXamarin.Droid.Resource.Attribute.dividerHorizontal;
+ global::Xamarin.Forms.Platform.Resource.Attribute.dividerPadding = global::HelloworldXamarin.Droid.Resource.Attribute.dividerPadding;
+ global::Xamarin.Forms.Platform.Resource.Attribute.dividerVertical = global::HelloworldXamarin.Droid.Resource.Attribute.dividerVertical;
+ global::Xamarin.Forms.Platform.Resource.Attribute.drawableSize = global::HelloworldXamarin.Droid.Resource.Attribute.drawableSize;
+ global::Xamarin.Forms.Platform.Resource.Attribute.drawerArrowStyle = global::HelloworldXamarin.Droid.Resource.Attribute.drawerArrowStyle;
+ global::Xamarin.Forms.Platform.Resource.Attribute.dropdownListPreferredItemHeight = global::HelloworldXamarin.Droid.Resource.Attribute.dropdownListPreferredItemHeight;
+ global::Xamarin.Forms.Platform.Resource.Attribute.dropDownListViewStyle = global::HelloworldXamarin.Droid.Resource.Attribute.dropDownListViewStyle;
+ global::Xamarin.Forms.Platform.Resource.Attribute.editTextBackground = global::HelloworldXamarin.Droid.Resource.Attribute.editTextBackground;
+ global::Xamarin.Forms.Platform.Resource.Attribute.editTextColor = global::HelloworldXamarin.Droid.Resource.Attribute.editTextColor;
+ global::Xamarin.Forms.Platform.Resource.Attribute.editTextStyle = global::HelloworldXamarin.Droid.Resource.Attribute.editTextStyle;
+ global::Xamarin.Forms.Platform.Resource.Attribute.elevation = global::HelloworldXamarin.Droid.Resource.Attribute.elevation;
+ global::Xamarin.Forms.Platform.Resource.Attribute.enforceMaterialTheme = global::HelloworldXamarin.Droid.Resource.Attribute.enforceMaterialTheme;
+ global::Xamarin.Forms.Platform.Resource.Attribute.enforceTextAppearance = global::HelloworldXamarin.Droid.Resource.Attribute.enforceTextAppearance;
+ global::Xamarin.Forms.Platform.Resource.Attribute.errorEnabled = global::HelloworldXamarin.Droid.Resource.Attribute.errorEnabled;
+ global::Xamarin.Forms.Platform.Resource.Attribute.errorTextAppearance = global::HelloworldXamarin.Droid.Resource.Attribute.errorTextAppearance;
+ global::Xamarin.Forms.Platform.Resource.Attribute.expandActivityOverflowButtonDrawable = global::HelloworldXamarin.Droid.Resource.Attribute.expandActivityOverflowButtonDrawable;
+ global::Xamarin.Forms.Platform.Resource.Attribute.expanded = global::HelloworldXamarin.Droid.Resource.Attribute.expanded;
+ global::Xamarin.Forms.Platform.Resource.Attribute.expandedTitleGravity = global::HelloworldXamarin.Droid.Resource.Attribute.expandedTitleGravity;
+ global::Xamarin.Forms.Platform.Resource.Attribute.expandedTitleMargin = global::HelloworldXamarin.Droid.Resource.Attribute.expandedTitleMargin;
+ global::Xamarin.Forms.Platform.Resource.Attribute.expandedTitleMarginBottom = global::HelloworldXamarin.Droid.Resource.Attribute.expandedTitleMarginBottom;
+ global::Xamarin.Forms.Platform.Resource.Attribute.expandedTitleMarginEnd = global::HelloworldXamarin.Droid.Resource.Attribute.expandedTitleMarginEnd;
+ global::Xamarin.Forms.Platform.Resource.Attribute.expandedTitleMarginStart = global::HelloworldXamarin.Droid.Resource.Attribute.expandedTitleMarginStart;
+ global::Xamarin.Forms.Platform.Resource.Attribute.expandedTitleMarginTop = global::HelloworldXamarin.Droid.Resource.Attribute.expandedTitleMarginTop;
+ global::Xamarin.Forms.Platform.Resource.Attribute.expandedTitleTextAppearance = global::HelloworldXamarin.Droid.Resource.Attribute.expandedTitleTextAppearance;
+ global::Xamarin.Forms.Platform.Resource.Attribute.fabAlignmentMode = global::HelloworldXamarin.Droid.Resource.Attribute.fabAlignmentMode;
+ global::Xamarin.Forms.Platform.Resource.Attribute.fabCradleMargin = global::HelloworldXamarin.Droid.Resource.Attribute.fabCradleMargin;
+ global::Xamarin.Forms.Platform.Resource.Attribute.fabCradleRoundedCornerRadius = global::HelloworldXamarin.Droid.Resource.Attribute.fabCradleRoundedCornerRadius;
+ global::Xamarin.Forms.Platform.Resource.Attribute.fabCradleVerticalOffset = global::HelloworldXamarin.Droid.Resource.Attribute.fabCradleVerticalOffset;
+ global::Xamarin.Forms.Platform.Resource.Attribute.fabCustomSize = global::HelloworldXamarin.Droid.Resource.Attribute.fabCustomSize;
+ global::Xamarin.Forms.Platform.Resource.Attribute.fabSize = global::HelloworldXamarin.Droid.Resource.Attribute.fabSize;
+ global::Xamarin.Forms.Platform.Resource.Attribute.fastScrollEnabled = global::HelloworldXamarin.Droid.Resource.Attribute.fastScrollEnabled;
+ global::Xamarin.Forms.Platform.Resource.Attribute.fastScrollHorizontalThumbDrawable = global::HelloworldXamarin.Droid.Resource.Attribute.fastScrollHorizontalThumbDrawable;
+ global::Xamarin.Forms.Platform.Resource.Attribute.fastScrollHorizontalTrackDrawable = global::HelloworldXamarin.Droid.Resource.Attribute.fastScrollHorizontalTrackDrawable;
+ global::Xamarin.Forms.Platform.Resource.Attribute.fastScrollVerticalThumbDrawable = global::HelloworldXamarin.Droid.Resource.Attribute.fastScrollVerticalThumbDrawable;
+ global::Xamarin.Forms.Platform.Resource.Attribute.fastScrollVerticalTrackDrawable = global::HelloworldXamarin.Droid.Resource.Attribute.fastScrollVerticalTrackDrawable;
+ global::Xamarin.Forms.Platform.Resource.Attribute.firstBaselineToTopHeight = global::HelloworldXamarin.Droid.Resource.Attribute.firstBaselineToTopHeight;
+ global::Xamarin.Forms.Platform.Resource.Attribute.floatingActionButtonStyle = global::HelloworldXamarin.Droid.Resource.Attribute.floatingActionButtonStyle;
+ global::Xamarin.Forms.Platform.Resource.Attribute.font = global::HelloworldXamarin.Droid.Resource.Attribute.font;
+ global::Xamarin.Forms.Platform.Resource.Attribute.fontFamily = global::HelloworldXamarin.Droid.Resource.Attribute.fontFamily;
+ global::Xamarin.Forms.Platform.Resource.Attribute.fontProviderAuthority = global::HelloworldXamarin.Droid.Resource.Attribute.fontProviderAuthority;
+ global::Xamarin.Forms.Platform.Resource.Attribute.fontProviderCerts = global::HelloworldXamarin.Droid.Resource.Attribute.fontProviderCerts;
+ global::Xamarin.Forms.Platform.Resource.Attribute.fontProviderFetchStrategy = global::HelloworldXamarin.Droid.Resource.Attribute.fontProviderFetchStrategy;
+ global::Xamarin.Forms.Platform.Resource.Attribute.fontProviderFetchTimeout = global::HelloworldXamarin.Droid.Resource.Attribute.fontProviderFetchTimeout;
+ global::Xamarin.Forms.Platform.Resource.Attribute.fontProviderPackage = global::HelloworldXamarin.Droid.Resource.Attribute.fontProviderPackage;
+ global::Xamarin.Forms.Platform.Resource.Attribute.fontProviderQuery = global::HelloworldXamarin.Droid.Resource.Attribute.fontProviderQuery;
+ global::Xamarin.Forms.Platform.Resource.Attribute.fontStyle = global::HelloworldXamarin.Droid.Resource.Attribute.fontStyle;
+ global::Xamarin.Forms.Platform.Resource.Attribute.fontVariationSettings = global::HelloworldXamarin.Droid.Resource.Attribute.fontVariationSettings;
+ global::Xamarin.Forms.Platform.Resource.Attribute.fontWeight = global::HelloworldXamarin.Droid.Resource.Attribute.fontWeight;
+ global::Xamarin.Forms.Platform.Resource.Attribute.foregroundInsidePadding = global::HelloworldXamarin.Droid.Resource.Attribute.foregroundInsidePadding;
+ global::Xamarin.Forms.Platform.Resource.Attribute.gapBetweenBars = global::HelloworldXamarin.Droid.Resource.Attribute.gapBetweenBars;
+ global::Xamarin.Forms.Platform.Resource.Attribute.goIcon = global::HelloworldXamarin.Droid.Resource.Attribute.goIcon;
+ global::Xamarin.Forms.Platform.Resource.Attribute.headerLayout = global::HelloworldXamarin.Droid.Resource.Attribute.headerLayout;
+ global::Xamarin.Forms.Platform.Resource.Attribute.height = global::HelloworldXamarin.Droid.Resource.Attribute.height;
+ global::Xamarin.Forms.Platform.Resource.Attribute.helperText = global::HelloworldXamarin.Droid.Resource.Attribute.helperText;
+ global::Xamarin.Forms.Platform.Resource.Attribute.helperTextEnabled = global::HelloworldXamarin.Droid.Resource.Attribute.helperTextEnabled;
+ global::Xamarin.Forms.Platform.Resource.Attribute.helperTextTextAppearance = global::HelloworldXamarin.Droid.Resource.Attribute.helperTextTextAppearance;
+ global::Xamarin.Forms.Platform.Resource.Attribute.hideMotionSpec = global::HelloworldXamarin.Droid.Resource.Attribute.hideMotionSpec;
+ global::Xamarin.Forms.Platform.Resource.Attribute.hideOnContentScroll = global::HelloworldXamarin.Droid.Resource.Attribute.hideOnContentScroll;
+ global::Xamarin.Forms.Platform.Resource.Attribute.hideOnScroll = global::HelloworldXamarin.Droid.Resource.Attribute.hideOnScroll;
+ global::Xamarin.Forms.Platform.Resource.Attribute.hintAnimationEnabled = global::HelloworldXamarin.Droid.Resource.Attribute.hintAnimationEnabled;
+ global::Xamarin.Forms.Platform.Resource.Attribute.hintEnabled = global::HelloworldXamarin.Droid.Resource.Attribute.hintEnabled;
+ global::Xamarin.Forms.Platform.Resource.Attribute.hintTextAppearance = global::HelloworldXamarin.Droid.Resource.Attribute.hintTextAppearance;
+ global::Xamarin.Forms.Platform.Resource.Attribute.homeAsUpIndicator = global::HelloworldXamarin.Droid.Resource.Attribute.homeAsUpIndicator;
+ global::Xamarin.Forms.Platform.Resource.Attribute.homeLayout = global::HelloworldXamarin.Droid.Resource.Attribute.homeLayout;
+ global::Xamarin.Forms.Platform.Resource.Attribute.hoveredFocusedTranslationZ = global::HelloworldXamarin.Droid.Resource.Attribute.hoveredFocusedTranslationZ;
+ global::Xamarin.Forms.Platform.Resource.Attribute.icon = global::HelloworldXamarin.Droid.Resource.Attribute.icon;
+ global::Xamarin.Forms.Platform.Resource.Attribute.iconEndPadding = global::HelloworldXamarin.Droid.Resource.Attribute.iconEndPadding;
+ global::Xamarin.Forms.Platform.Resource.Attribute.iconGravity = global::HelloworldXamarin.Droid.Resource.Attribute.iconGravity;
+ global::Xamarin.Forms.Platform.Resource.Attribute.iconifiedByDefault = global::HelloworldXamarin.Droid.Resource.Attribute.iconifiedByDefault;
+ global::Xamarin.Forms.Platform.Resource.Attribute.iconPadding = global::HelloworldXamarin.Droid.Resource.Attribute.iconPadding;
+ global::Xamarin.Forms.Platform.Resource.Attribute.iconSize = global::HelloworldXamarin.Droid.Resource.Attribute.iconSize;
+ global::Xamarin.Forms.Platform.Resource.Attribute.iconStartPadding = global::HelloworldXamarin.Droid.Resource.Attribute.iconStartPadding;
+ global::Xamarin.Forms.Platform.Resource.Attribute.iconTint = global::HelloworldXamarin.Droid.Resource.Attribute.iconTint;
+ global::Xamarin.Forms.Platform.Resource.Attribute.iconTintMode = global::HelloworldXamarin.Droid.Resource.Attribute.iconTintMode;
+ global::Xamarin.Forms.Platform.Resource.Attribute.imageButtonStyle = global::HelloworldXamarin.Droid.Resource.Attribute.imageButtonStyle;
+ global::Xamarin.Forms.Platform.Resource.Attribute.indeterminateProgressStyle = global::HelloworldXamarin.Droid.Resource.Attribute.indeterminateProgressStyle;
+ global::Xamarin.Forms.Platform.Resource.Attribute.initialActivityCount = global::HelloworldXamarin.Droid.Resource.Attribute.initialActivityCount;
+ global::Xamarin.Forms.Platform.Resource.Attribute.insetForeground = global::HelloworldXamarin.Droid.Resource.Attribute.insetForeground;
+ global::Xamarin.Forms.Platform.Resource.Attribute.isLightTheme = global::HelloworldXamarin.Droid.Resource.Attribute.isLightTheme;
+ global::Xamarin.Forms.Platform.Resource.Attribute.itemBackground = global::HelloworldXamarin.Droid.Resource.Attribute.itemBackground;
+ global::Xamarin.Forms.Platform.Resource.Attribute.itemHorizontalPadding = global::HelloworldXamarin.Droid.Resource.Attribute.itemHorizontalPadding;
+ global::Xamarin.Forms.Platform.Resource.Attribute.itemHorizontalTranslationEnabled = global::HelloworldXamarin.Droid.Resource.Attribute.itemHorizontalTranslationEnabled;
+ global::Xamarin.Forms.Platform.Resource.Attribute.itemIconPadding = global::HelloworldXamarin.Droid.Resource.Attribute.itemIconPadding;
+ global::Xamarin.Forms.Platform.Resource.Attribute.itemIconSize = global::HelloworldXamarin.Droid.Resource.Attribute.itemIconSize;
+ global::Xamarin.Forms.Platform.Resource.Attribute.itemIconTint = global::HelloworldXamarin.Droid.Resource.Attribute.itemIconTint;
+ global::Xamarin.Forms.Platform.Resource.Attribute.itemPadding = global::HelloworldXamarin.Droid.Resource.Attribute.itemPadding;
+ global::Xamarin.Forms.Platform.Resource.Attribute.itemSpacing = global::HelloworldXamarin.Droid.Resource.Attribute.itemSpacing;
+ global::Xamarin.Forms.Platform.Resource.Attribute.itemTextAppearance = global::HelloworldXamarin.Droid.Resource.Attribute.itemTextAppearance;
+ global::Xamarin.Forms.Platform.Resource.Attribute.itemTextAppearanceActive = global::HelloworldXamarin.Droid.Resource.Attribute.itemTextAppearanceActive;
+ global::Xamarin.Forms.Platform.Resource.Attribute.itemTextAppearanceInactive = global::HelloworldXamarin.Droid.Resource.Attribute.itemTextAppearanceInactive;
+ global::Xamarin.Forms.Platform.Resource.Attribute.itemTextColor = global::HelloworldXamarin.Droid.Resource.Attribute.itemTextColor;
+ global::Xamarin.Forms.Platform.Resource.Attribute.keylines = global::HelloworldXamarin.Droid.Resource.Attribute.keylines;
+ global::Xamarin.Forms.Platform.Resource.Attribute.labelVisibilityMode = global::HelloworldXamarin.Droid.Resource.Attribute.labelVisibilityMode;
+ global::Xamarin.Forms.Platform.Resource.Attribute.lastBaselineToBottomHeight = global::HelloworldXamarin.Droid.Resource.Attribute.lastBaselineToBottomHeight;
+ global::Xamarin.Forms.Platform.Resource.Attribute.layout = global::HelloworldXamarin.Droid.Resource.Attribute.layout;
+ global::Xamarin.Forms.Platform.Resource.Attribute.layoutManager = global::HelloworldXamarin.Droid.Resource.Attribute.layoutManager;
+ global::Xamarin.Forms.Platform.Resource.Attribute.layout_anchor = global::HelloworldXamarin.Droid.Resource.Attribute.layout_anchor;
+ global::Xamarin.Forms.Platform.Resource.Attribute.layout_anchorGravity = global::HelloworldXamarin.Droid.Resource.Attribute.layout_anchorGravity;
+ global::Xamarin.Forms.Platform.Resource.Attribute.layout_behavior = global::HelloworldXamarin.Droid.Resource.Attribute.layout_behavior;
+ global::Xamarin.Forms.Platform.Resource.Attribute.layout_collapseMode = global::HelloworldXamarin.Droid.Resource.Attribute.layout_collapseMode;
+ global::Xamarin.Forms.Platform.Resource.Attribute.layout_collapseParallaxMultiplier = global::HelloworldXamarin.Droid.Resource.Attribute.layout_collapseParallaxMultiplier;
+ global::Xamarin.Forms.Platform.Resource.Attribute.layout_dodgeInsetEdges = global::HelloworldXamarin.Droid.Resource.Attribute.layout_dodgeInsetEdges;
+ global::Xamarin.Forms.Platform.Resource.Attribute.layout_insetEdge = global::HelloworldXamarin.Droid.Resource.Attribute.layout_insetEdge;
+ global::Xamarin.Forms.Platform.Resource.Attribute.layout_keyline = global::HelloworldXamarin.Droid.Resource.Attribute.layout_keyline;
+ global::Xamarin.Forms.Platform.Resource.Attribute.layout_scrollFlags = global::HelloworldXamarin.Droid.Resource.Attribute.layout_scrollFlags;
+ global::Xamarin.Forms.Platform.Resource.Attribute.layout_scrollInterpolator = global::HelloworldXamarin.Droid.Resource.Attribute.layout_scrollInterpolator;
+ global::Xamarin.Forms.Platform.Resource.Attribute.liftOnScroll = global::HelloworldXamarin.Droid.Resource.Attribute.liftOnScroll;
+ global::Xamarin.Forms.Platform.Resource.Attribute.lineHeight = global::HelloworldXamarin.Droid.Resource.Attribute.lineHeight;
+ global::Xamarin.Forms.Platform.Resource.Attribute.lineSpacing = global::HelloworldXamarin.Droid.Resource.Attribute.lineSpacing;
+ global::Xamarin.Forms.Platform.Resource.Attribute.listChoiceBackgroundIndicator = global::HelloworldXamarin.Droid.Resource.Attribute.listChoiceBackgroundIndicator;
+ global::Xamarin.Forms.Platform.Resource.Attribute.listDividerAlertDialog = global::HelloworldXamarin.Droid.Resource.Attribute.listDividerAlertDialog;
+ global::Xamarin.Forms.Platform.Resource.Attribute.listItemLayout = global::HelloworldXamarin.Droid.Resource.Attribute.listItemLayout;
+ global::Xamarin.Forms.Platform.Resource.Attribute.listLayout = global::HelloworldXamarin.Droid.Resource.Attribute.listLayout;
+ global::Xamarin.Forms.Platform.Resource.Attribute.listMenuViewStyle = global::HelloworldXamarin.Droid.Resource.Attribute.listMenuViewStyle;
+ global::Xamarin.Forms.Platform.Resource.Attribute.listPopupWindowStyle = global::HelloworldXamarin.Droid.Resource.Attribute.listPopupWindowStyle;
+ global::Xamarin.Forms.Platform.Resource.Attribute.listPreferredItemHeight = global::HelloworldXamarin.Droid.Resource.Attribute.listPreferredItemHeight;
+ global::Xamarin.Forms.Platform.Resource.Attribute.listPreferredItemHeightLarge = global::HelloworldXamarin.Droid.Resource.Attribute.listPreferredItemHeightLarge;
+ global::Xamarin.Forms.Platform.Resource.Attribute.listPreferredItemHeightSmall = global::HelloworldXamarin.Droid.Resource.Attribute.listPreferredItemHeightSmall;
+ global::Xamarin.Forms.Platform.Resource.Attribute.listPreferredItemPaddingLeft = global::HelloworldXamarin.Droid.Resource.Attribute.listPreferredItemPaddingLeft;
+ global::Xamarin.Forms.Platform.Resource.Attribute.listPreferredItemPaddingRight = global::HelloworldXamarin.Droid.Resource.Attribute.listPreferredItemPaddingRight;
+ global::Xamarin.Forms.Platform.Resource.Attribute.logo = global::HelloworldXamarin.Droid.Resource.Attribute.logo;
+ global::Xamarin.Forms.Platform.Resource.Attribute.logoDescription = global::HelloworldXamarin.Droid.Resource.Attribute.logoDescription;
+ global::Xamarin.Forms.Platform.Resource.Attribute.materialButtonStyle = global::HelloworldXamarin.Droid.Resource.Attribute.materialButtonStyle;
+ global::Xamarin.Forms.Platform.Resource.Attribute.materialCardViewStyle = global::HelloworldXamarin.Droid.Resource.Attribute.materialCardViewStyle;
+ global::Xamarin.Forms.Platform.Resource.Attribute.maxActionInlineWidth = global::HelloworldXamarin.Droid.Resource.Attribute.maxActionInlineWidth;
+ global::Xamarin.Forms.Platform.Resource.Attribute.maxButtonHeight = global::HelloworldXamarin.Droid.Resource.Attribute.maxButtonHeight;
+ global::Xamarin.Forms.Platform.Resource.Attribute.maxImageSize = global::HelloworldXamarin.Droid.Resource.Attribute.maxImageSize;
+ global::Xamarin.Forms.Platform.Resource.Attribute.measureWithLargestChild = global::HelloworldXamarin.Droid.Resource.Attribute.measureWithLargestChild;
+ global::Xamarin.Forms.Platform.Resource.Attribute.menu = global::HelloworldXamarin.Droid.Resource.Attribute.menu;
+ global::Xamarin.Forms.Platform.Resource.Attribute.multiChoiceItemLayout = global::HelloworldXamarin.Droid.Resource.Attribute.multiChoiceItemLayout;
+ global::Xamarin.Forms.Platform.Resource.Attribute.navigationContentDescription = global::HelloworldXamarin.Droid.Resource.Attribute.navigationContentDescription;
+ global::Xamarin.Forms.Platform.Resource.Attribute.navigationIcon = global::HelloworldXamarin.Droid.Resource.Attribute.navigationIcon;
+ global::Xamarin.Forms.Platform.Resource.Attribute.navigationMode = global::HelloworldXamarin.Droid.Resource.Attribute.navigationMode;
+ global::Xamarin.Forms.Platform.Resource.Attribute.navigationViewStyle = global::HelloworldXamarin.Droid.Resource.Attribute.navigationViewStyle;
+ global::Xamarin.Forms.Platform.Resource.Attribute.numericModifiers = global::HelloworldXamarin.Droid.Resource.Attribute.numericModifiers;
+ global::Xamarin.Forms.Platform.Resource.Attribute.overlapAnchor = global::HelloworldXamarin.Droid.Resource.Attribute.overlapAnchor;
+ global::Xamarin.Forms.Platform.Resource.Attribute.paddingBottomNoButtons = global::HelloworldXamarin.Droid.Resource.Attribute.paddingBottomNoButtons;
+ global::Xamarin.Forms.Platform.Resource.Attribute.paddingEnd = global::HelloworldXamarin.Droid.Resource.Attribute.paddingEnd;
+ global::Xamarin.Forms.Platform.Resource.Attribute.paddingStart = global::HelloworldXamarin.Droid.Resource.Attribute.paddingStart;
+ global::Xamarin.Forms.Platform.Resource.Attribute.paddingTopNoTitle = global::HelloworldXamarin.Droid.Resource.Attribute.paddingTopNoTitle;
+ global::Xamarin.Forms.Platform.Resource.Attribute.panelBackground = global::HelloworldXamarin.Droid.Resource.Attribute.panelBackground;
+ global::Xamarin.Forms.Platform.Resource.Attribute.panelMenuListTheme = global::HelloworldXamarin.Droid.Resource.Attribute.panelMenuListTheme;
+ global::Xamarin.Forms.Platform.Resource.Attribute.panelMenuListWidth = global::HelloworldXamarin.Droid.Resource.Attribute.panelMenuListWidth;
+ global::Xamarin.Forms.Platform.Resource.Attribute.passwordToggleContentDescription = global::HelloworldXamarin.Droid.Resource.Attribute.passwordToggleContentDescription;
+ global::Xamarin.Forms.Platform.Resource.Attribute.passwordToggleDrawable = global::HelloworldXamarin.Droid.Resource.Attribute.passwordToggleDrawable;
+ global::Xamarin.Forms.Platform.Resource.Attribute.passwordToggleEnabled = global::HelloworldXamarin.Droid.Resource.Attribute.passwordToggleEnabled;
+ global::Xamarin.Forms.Platform.Resource.Attribute.passwordToggleTint = global::HelloworldXamarin.Droid.Resource.Attribute.passwordToggleTint;
+ global::Xamarin.Forms.Platform.Resource.Attribute.passwordToggleTintMode = global::HelloworldXamarin.Droid.Resource.Attribute.passwordToggleTintMode;
+ global::Xamarin.Forms.Platform.Resource.Attribute.popupMenuStyle = global::HelloworldXamarin.Droid.Resource.Attribute.popupMenuStyle;
+ global::Xamarin.Forms.Platform.Resource.Attribute.popupTheme = global::HelloworldXamarin.Droid.Resource.Attribute.popupTheme;
+ global::Xamarin.Forms.Platform.Resource.Attribute.popupWindowStyle = global::HelloworldXamarin.Droid.Resource.Attribute.popupWindowStyle;
+ global::Xamarin.Forms.Platform.Resource.Attribute.preserveIconSpacing = global::HelloworldXamarin.Droid.Resource.Attribute.preserveIconSpacing;
+ global::Xamarin.Forms.Platform.Resource.Attribute.pressedTranslationZ = global::HelloworldXamarin.Droid.Resource.Attribute.pressedTranslationZ;
+ global::Xamarin.Forms.Platform.Resource.Attribute.progressBarPadding = global::HelloworldXamarin.Droid.Resource.Attribute.progressBarPadding;
+ global::Xamarin.Forms.Platform.Resource.Attribute.progressBarStyle = global::HelloworldXamarin.Droid.Resource.Attribute.progressBarStyle;
+ global::Xamarin.Forms.Platform.Resource.Attribute.queryBackground = global::HelloworldXamarin.Droid.Resource.Attribute.queryBackground;
+ global::Xamarin.Forms.Platform.Resource.Attribute.queryHint = global::HelloworldXamarin.Droid.Resource.Attribute.queryHint;
+ global::Xamarin.Forms.Platform.Resource.Attribute.radioButtonStyle = global::HelloworldXamarin.Droid.Resource.Attribute.radioButtonStyle;
+ global::Xamarin.Forms.Platform.Resource.Attribute.ratingBarStyle = global::HelloworldXamarin.Droid.Resource.Attribute.ratingBarStyle;
+ global::Xamarin.Forms.Platform.Resource.Attribute.ratingBarStyleIndicator = global::HelloworldXamarin.Droid.Resource.Attribute.ratingBarStyleIndicator;
+ global::Xamarin.Forms.Platform.Resource.Attribute.ratingBarStyleSmall = global::HelloworldXamarin.Droid.Resource.Attribute.ratingBarStyleSmall;
+ global::Xamarin.Forms.Platform.Resource.Attribute.reverseLayout = global::HelloworldXamarin.Droid.Resource.Attribute.reverseLayout;
+ global::Xamarin.Forms.Platform.Resource.Attribute.rippleColor = global::HelloworldXamarin.Droid.Resource.Attribute.rippleColor;
+ global::Xamarin.Forms.Platform.Resource.Attribute.scrimAnimationDuration = global::HelloworldXamarin.Droid.Resource.Attribute.scrimAnimationDuration;
+ global::Xamarin.Forms.Platform.Resource.Attribute.scrimBackground = global::HelloworldXamarin.Droid.Resource.Attribute.scrimBackground;
+ global::Xamarin.Forms.Platform.Resource.Attribute.scrimVisibleHeightTrigger = global::HelloworldXamarin.Droid.Resource.Attribute.scrimVisibleHeightTrigger;
+ global::Xamarin.Forms.Platform.Resource.Attribute.searchHintIcon = global::HelloworldXamarin.Droid.Resource.Attribute.searchHintIcon;
+ global::Xamarin.Forms.Platform.Resource.Attribute.searchIcon = global::HelloworldXamarin.Droid.Resource.Attribute.searchIcon;
+ global::Xamarin.Forms.Platform.Resource.Attribute.searchViewStyle = global::HelloworldXamarin.Droid.Resource.Attribute.searchViewStyle;
+ global::Xamarin.Forms.Platform.Resource.Attribute.seekBarStyle = global::HelloworldXamarin.Droid.Resource.Attribute.seekBarStyle;
+ global::Xamarin.Forms.Platform.Resource.Attribute.selectableItemBackground = global::HelloworldXamarin.Droid.Resource.Attribute.selectableItemBackground;
+ global::Xamarin.Forms.Platform.Resource.Attribute.selectableItemBackgroundBorderless = global::HelloworldXamarin.Droid.Resource.Attribute.selectableItemBackgroundBorderless;
+ global::Xamarin.Forms.Platform.Resource.Attribute.showAsAction = global::HelloworldXamarin.Droid.Resource.Attribute.showAsAction;
+ global::Xamarin.Forms.Platform.Resource.Attribute.showDividers = global::HelloworldXamarin.Droid.Resource.Attribute.showDividers;
+ global::Xamarin.Forms.Platform.Resource.Attribute.showMotionSpec = global::HelloworldXamarin.Droid.Resource.Attribute.showMotionSpec;
+ global::Xamarin.Forms.Platform.Resource.Attribute.showText = global::HelloworldXamarin.Droid.Resource.Attribute.showText;
+ global::Xamarin.Forms.Platform.Resource.Attribute.showTitle = global::HelloworldXamarin.Droid.Resource.Attribute.showTitle;
+ global::Xamarin.Forms.Platform.Resource.Attribute.singleChoiceItemLayout = global::HelloworldXamarin.Droid.Resource.Attribute.singleChoiceItemLayout;
+ global::Xamarin.Forms.Platform.Resource.Attribute.singleLine = global::HelloworldXamarin.Droid.Resource.Attribute.singleLine;
+ global::Xamarin.Forms.Platform.Resource.Attribute.singleSelection = global::HelloworldXamarin.Droid.Resource.Attribute.singleSelection;
+ global::Xamarin.Forms.Platform.Resource.Attribute.snackbarButtonStyle = global::HelloworldXamarin.Droid.Resource.Attribute.snackbarButtonStyle;
+ global::Xamarin.Forms.Platform.Resource.Attribute.snackbarStyle = global::HelloworldXamarin.Droid.Resource.Attribute.snackbarStyle;
+ global::Xamarin.Forms.Platform.Resource.Attribute.spanCount = global::HelloworldXamarin.Droid.Resource.Attribute.spanCount;
+ global::Xamarin.Forms.Platform.Resource.Attribute.spinBars = global::HelloworldXamarin.Droid.Resource.Attribute.spinBars;
+ global::Xamarin.Forms.Platform.Resource.Attribute.spinnerDropDownItemStyle = global::HelloworldXamarin.Droid.Resource.Attribute.spinnerDropDownItemStyle;
+ global::Xamarin.Forms.Platform.Resource.Attribute.spinnerStyle = global::HelloworldXamarin.Droid.Resource.Attribute.spinnerStyle;
+ global::Xamarin.Forms.Platform.Resource.Attribute.splitTrack = global::HelloworldXamarin.Droid.Resource.Attribute.splitTrack;
+ global::Xamarin.Forms.Platform.Resource.Attribute.srcCompat = global::HelloworldXamarin.Droid.Resource.Attribute.srcCompat;
+ global::Xamarin.Forms.Platform.Resource.Attribute.stackFromEnd = global::HelloworldXamarin.Droid.Resource.Attribute.stackFromEnd;
+ global::Xamarin.Forms.Platform.Resource.Attribute.state_above_anchor = global::HelloworldXamarin.Droid.Resource.Attribute.state_above_anchor;
+ global::Xamarin.Forms.Platform.Resource.Attribute.state_collapsed = global::HelloworldXamarin.Droid.Resource.Attribute.state_collapsed;
+ global::Xamarin.Forms.Platform.Resource.Attribute.state_collapsible = global::HelloworldXamarin.Droid.Resource.Attribute.state_collapsible;
+ global::Xamarin.Forms.Platform.Resource.Attribute.state_liftable = global::HelloworldXamarin.Droid.Resource.Attribute.state_liftable;
+ global::Xamarin.Forms.Platform.Resource.Attribute.state_lifted = global::HelloworldXamarin.Droid.Resource.Attribute.state_lifted;
+ global::Xamarin.Forms.Platform.Resource.Attribute.statusBarBackground = global::HelloworldXamarin.Droid.Resource.Attribute.statusBarBackground;
+ global::Xamarin.Forms.Platform.Resource.Attribute.statusBarScrim = global::HelloworldXamarin.Droid.Resource.Attribute.statusBarScrim;
+ global::Xamarin.Forms.Platform.Resource.Attribute.strokeColor = global::HelloworldXamarin.Droid.Resource.Attribute.strokeColor;
+ global::Xamarin.Forms.Platform.Resource.Attribute.strokeWidth = global::HelloworldXamarin.Droid.Resource.Attribute.strokeWidth;
+ global::Xamarin.Forms.Platform.Resource.Attribute.subMenuArrow = global::HelloworldXamarin.Droid.Resource.Attribute.subMenuArrow;
+ global::Xamarin.Forms.Platform.Resource.Attribute.submitBackground = global::HelloworldXamarin.Droid.Resource.Attribute.submitBackground;
+ global::Xamarin.Forms.Platform.Resource.Attribute.subtitle = global::HelloworldXamarin.Droid.Resource.Attribute.subtitle;
+ global::Xamarin.Forms.Platform.Resource.Attribute.subtitleTextAppearance = global::HelloworldXamarin.Droid.Resource.Attribute.subtitleTextAppearance;
+ global::Xamarin.Forms.Platform.Resource.Attribute.subtitleTextColor = global::HelloworldXamarin.Droid.Resource.Attribute.subtitleTextColor;
+ global::Xamarin.Forms.Platform.Resource.Attribute.subtitleTextStyle = global::HelloworldXamarin.Droid.Resource.Attribute.subtitleTextStyle;
+ global::Xamarin.Forms.Platform.Resource.Attribute.suggestionRowLayout = global::HelloworldXamarin.Droid.Resource.Attribute.suggestionRowLayout;
+ global::Xamarin.Forms.Platform.Resource.Attribute.switchMinWidth = global::HelloworldXamarin.Droid.Resource.Attribute.switchMinWidth;
+ global::Xamarin.Forms.Platform.Resource.Attribute.switchPadding = global::HelloworldXamarin.Droid.Resource.Attribute.switchPadding;
+ global::Xamarin.Forms.Platform.Resource.Attribute.switchStyle = global::HelloworldXamarin.Droid.Resource.Attribute.switchStyle;
+ global::Xamarin.Forms.Platform.Resource.Attribute.switchTextAppearance = global::HelloworldXamarin.Droid.Resource.Attribute.switchTextAppearance;
+ global::Xamarin.Forms.Platform.Resource.Attribute.tabBackground = global::HelloworldXamarin.Droid.Resource.Attribute.tabBackground;
+ global::Xamarin.Forms.Platform.Resource.Attribute.tabContentStart = global::HelloworldXamarin.Droid.Resource.Attribute.tabContentStart;
+ global::Xamarin.Forms.Platform.Resource.Attribute.tabGravity = global::HelloworldXamarin.Droid.Resource.Attribute.tabGravity;
+ global::Xamarin.Forms.Platform.Resource.Attribute.tabIconTint = global::HelloworldXamarin.Droid.Resource.Attribute.tabIconTint;
+ global::Xamarin.Forms.Platform.Resource.Attribute.tabIconTintMode = global::HelloworldXamarin.Droid.Resource.Attribute.tabIconTintMode;
+ global::Xamarin.Forms.Platform.Resource.Attribute.tabIndicator = global::HelloworldXamarin.Droid.Resource.Attribute.tabIndicator;
+ global::Xamarin.Forms.Platform.Resource.Attribute.tabIndicatorAnimationDuration = global::HelloworldXamarin.Droid.Resource.Attribute.tabIndicatorAnimationDuration;
+ global::Xamarin.Forms.Platform.Resource.Attribute.tabIndicatorColor = global::HelloworldXamarin.Droid.Resource.Attribute.tabIndicatorColor;
+ global::Xamarin.Forms.Platform.Resource.Attribute.tabIndicatorFullWidth = global::HelloworldXamarin.Droid.Resource.Attribute.tabIndicatorFullWidth;
+ global::Xamarin.Forms.Platform.Resource.Attribute.tabIndicatorGravity = global::HelloworldXamarin.Droid.Resource.Attribute.tabIndicatorGravity;
+ global::Xamarin.Forms.Platform.Resource.Attribute.tabIndicatorHeight = global::HelloworldXamarin.Droid.Resource.Attribute.tabIndicatorHeight;
+ global::Xamarin.Forms.Platform.Resource.Attribute.tabInlineLabel = global::HelloworldXamarin.Droid.Resource.Attribute.tabInlineLabel;
+ global::Xamarin.Forms.Platform.Resource.Attribute.tabMaxWidth = global::HelloworldXamarin.Droid.Resource.Attribute.tabMaxWidth;
+ global::Xamarin.Forms.Platform.Resource.Attribute.tabMinWidth = global::HelloworldXamarin.Droid.Resource.Attribute.tabMinWidth;
+ global::Xamarin.Forms.Platform.Resource.Attribute.tabMode = global::HelloworldXamarin.Droid.Resource.Attribute.tabMode;
+ global::Xamarin.Forms.Platform.Resource.Attribute.tabPadding = global::HelloworldXamarin.Droid.Resource.Attribute.tabPadding;
+ global::Xamarin.Forms.Platform.Resource.Attribute.tabPaddingBottom = global::HelloworldXamarin.Droid.Resource.Attribute.tabPaddingBottom;
+ global::Xamarin.Forms.Platform.Resource.Attribute.tabPaddingEnd = global::HelloworldXamarin.Droid.Resource.Attribute.tabPaddingEnd;
+ global::Xamarin.Forms.Platform.Resource.Attribute.tabPaddingStart = global::HelloworldXamarin.Droid.Resource.Attribute.tabPaddingStart;
+ global::Xamarin.Forms.Platform.Resource.Attribute.tabPaddingTop = global::HelloworldXamarin.Droid.Resource.Attribute.tabPaddingTop;
+ global::Xamarin.Forms.Platform.Resource.Attribute.tabRippleColor = global::HelloworldXamarin.Droid.Resource.Attribute.tabRippleColor;
+ global::Xamarin.Forms.Platform.Resource.Attribute.tabSelectedTextColor = global::HelloworldXamarin.Droid.Resource.Attribute.tabSelectedTextColor;
+ global::Xamarin.Forms.Platform.Resource.Attribute.tabStyle = global::HelloworldXamarin.Droid.Resource.Attribute.tabStyle;
+ global::Xamarin.Forms.Platform.Resource.Attribute.tabTextAppearance = global::HelloworldXamarin.Droid.Resource.Attribute.tabTextAppearance;
+ global::Xamarin.Forms.Platform.Resource.Attribute.tabTextColor = global::HelloworldXamarin.Droid.Resource.Attribute.tabTextColor;
+ global::Xamarin.Forms.Platform.Resource.Attribute.tabUnboundedRipple = global::HelloworldXamarin.Droid.Resource.Attribute.tabUnboundedRipple;
+ global::Xamarin.Forms.Platform.Resource.Attribute.textAllCaps = global::HelloworldXamarin.Droid.Resource.Attribute.textAllCaps;
+ global::Xamarin.Forms.Platform.Resource.Attribute.textAppearanceBody1 = global::HelloworldXamarin.Droid.Resource.Attribute.textAppearanceBody1;
+ global::Xamarin.Forms.Platform.Resource.Attribute.textAppearanceBody2 = global::HelloworldXamarin.Droid.Resource.Attribute.textAppearanceBody2;
+ global::Xamarin.Forms.Platform.Resource.Attribute.textAppearanceButton = global::HelloworldXamarin.Droid.Resource.Attribute.textAppearanceButton;
+ global::Xamarin.Forms.Platform.Resource.Attribute.textAppearanceCaption = global::HelloworldXamarin.Droid.Resource.Attribute.textAppearanceCaption;
+ global::Xamarin.Forms.Platform.Resource.Attribute.textAppearanceHeadline1 = global::HelloworldXamarin.Droid.Resource.Attribute.textAppearanceHeadline1;
+ global::Xamarin.Forms.Platform.Resource.Attribute.textAppearanceHeadline2 = global::HelloworldXamarin.Droid.Resource.Attribute.textAppearanceHeadline2;
+ global::Xamarin.Forms.Platform.Resource.Attribute.textAppearanceHeadline3 = global::HelloworldXamarin.Droid.Resource.Attribute.textAppearanceHeadline3;
+ global::Xamarin.Forms.Platform.Resource.Attribute.textAppearanceHeadline4 = global::HelloworldXamarin.Droid.Resource.Attribute.textAppearanceHeadline4;
+ global::Xamarin.Forms.Platform.Resource.Attribute.textAppearanceHeadline5 = global::HelloworldXamarin.Droid.Resource.Attribute.textAppearanceHeadline5;
+ global::Xamarin.Forms.Platform.Resource.Attribute.textAppearanceHeadline6 = global::HelloworldXamarin.Droid.Resource.Attribute.textAppearanceHeadline6;
+ global::Xamarin.Forms.Platform.Resource.Attribute.textAppearanceLargePopupMenu = global::HelloworldXamarin.Droid.Resource.Attribute.textAppearanceLargePopupMenu;
+ global::Xamarin.Forms.Platform.Resource.Attribute.textAppearanceListItem = global::HelloworldXamarin.Droid.Resource.Attribute.textAppearanceListItem;
+ global::Xamarin.Forms.Platform.Resource.Attribute.textAppearanceListItemSecondary = global::HelloworldXamarin.Droid.Resource.Attribute.textAppearanceListItemSecondary;
+ global::Xamarin.Forms.Platform.Resource.Attribute.textAppearanceListItemSmall = global::HelloworldXamarin.Droid.Resource.Attribute.textAppearanceListItemSmall;
+ global::Xamarin.Forms.Platform.Resource.Attribute.textAppearanceOverline = global::HelloworldXamarin.Droid.Resource.Attribute.textAppearanceOverline;
+ global::Xamarin.Forms.Platform.Resource.Attribute.textAppearancePopupMenuHeader = global::HelloworldXamarin.Droid.Resource.Attribute.textAppearancePopupMenuHeader;
+ global::Xamarin.Forms.Platform.Resource.Attribute.textAppearanceSearchResultSubtitle = global::HelloworldXamarin.Droid.Resource.Attribute.textAppearanceSearchResultSubtitle;
+ global::Xamarin.Forms.Platform.Resource.Attribute.textAppearanceSearchResultTitle = global::HelloworldXamarin.Droid.Resource.Attribute.textAppearanceSearchResultTitle;
+ global::Xamarin.Forms.Platform.Resource.Attribute.textAppearanceSmallPopupMenu = global::HelloworldXamarin.Droid.Resource.Attribute.textAppearanceSmallPopupMenu;
+ global::Xamarin.Forms.Platform.Resource.Attribute.textAppearanceSubtitle1 = global::HelloworldXamarin.Droid.Resource.Attribute.textAppearanceSubtitle1;
+ global::Xamarin.Forms.Platform.Resource.Attribute.textAppearanceSubtitle2 = global::HelloworldXamarin.Droid.Resource.Attribute.textAppearanceSubtitle2;
+ global::Xamarin.Forms.Platform.Resource.Attribute.textColorAlertDialogListItem = global::HelloworldXamarin.Droid.Resource.Attribute.textColorAlertDialogListItem;
+ global::Xamarin.Forms.Platform.Resource.Attribute.textColorSearchUrl = global::HelloworldXamarin.Droid.Resource.Attribute.textColorSearchUrl;
+ global::Xamarin.Forms.Platform.Resource.Attribute.textEndPadding = global::HelloworldXamarin.Droid.Resource.Attribute.textEndPadding;
+ global::Xamarin.Forms.Platform.Resource.Attribute.textInputStyle = global::HelloworldXamarin.Droid.Resource.Attribute.textInputStyle;
+ global::Xamarin.Forms.Platform.Resource.Attribute.textStartPadding = global::HelloworldXamarin.Droid.Resource.Attribute.textStartPadding;
+ global::Xamarin.Forms.Platform.Resource.Attribute.theme = global::HelloworldXamarin.Droid.Resource.Attribute.theme;
+ global::Xamarin.Forms.Platform.Resource.Attribute.thickness = global::HelloworldXamarin.Droid.Resource.Attribute.thickness;
+ global::Xamarin.Forms.Platform.Resource.Attribute.thumbTextPadding = global::HelloworldXamarin.Droid.Resource.Attribute.thumbTextPadding;
+ global::Xamarin.Forms.Platform.Resource.Attribute.thumbTint = global::HelloworldXamarin.Droid.Resource.Attribute.thumbTint;
+ global::Xamarin.Forms.Platform.Resource.Attribute.thumbTintMode = global::HelloworldXamarin.Droid.Resource.Attribute.thumbTintMode;
+ global::Xamarin.Forms.Platform.Resource.Attribute.tickMark = global::HelloworldXamarin.Droid.Resource.Attribute.tickMark;
+ global::Xamarin.Forms.Platform.Resource.Attribute.tickMarkTint = global::HelloworldXamarin.Droid.Resource.Attribute.tickMarkTint;
+ global::Xamarin.Forms.Platform.Resource.Attribute.tickMarkTintMode = global::HelloworldXamarin.Droid.Resource.Attribute.tickMarkTintMode;
+ global::Xamarin.Forms.Platform.Resource.Attribute.tint = global::HelloworldXamarin.Droid.Resource.Attribute.tint;
+ global::Xamarin.Forms.Platform.Resource.Attribute.tintMode = global::HelloworldXamarin.Droid.Resource.Attribute.tintMode;
+ global::Xamarin.Forms.Platform.Resource.Attribute.title = global::HelloworldXamarin.Droid.Resource.Attribute.title;
+ global::Xamarin.Forms.Platform.Resource.Attribute.titleEnabled = global::HelloworldXamarin.Droid.Resource.Attribute.titleEnabled;
+ global::Xamarin.Forms.Platform.Resource.Attribute.titleMargin = global::HelloworldXamarin.Droid.Resource.Attribute.titleMargin;
+ global::Xamarin.Forms.Platform.Resource.Attribute.titleMarginBottom = global::HelloworldXamarin.Droid.Resource.Attribute.titleMarginBottom;
+ global::Xamarin.Forms.Platform.Resource.Attribute.titleMarginEnd = global::HelloworldXamarin.Droid.Resource.Attribute.titleMarginEnd;
+ global::Xamarin.Forms.Platform.Resource.Attribute.titleMargins = global::HelloworldXamarin.Droid.Resource.Attribute.titleMargins;
+ global::Xamarin.Forms.Platform.Resource.Attribute.titleMarginStart = global::HelloworldXamarin.Droid.Resource.Attribute.titleMarginStart;
+ global::Xamarin.Forms.Platform.Resource.Attribute.titleMarginTop = global::HelloworldXamarin.Droid.Resource.Attribute.titleMarginTop;
+ global::Xamarin.Forms.Platform.Resource.Attribute.titleTextAppearance = global::HelloworldXamarin.Droid.Resource.Attribute.titleTextAppearance;
+ global::Xamarin.Forms.Platform.Resource.Attribute.titleTextColor = global::HelloworldXamarin.Droid.Resource.Attribute.titleTextColor;
+ global::Xamarin.Forms.Platform.Resource.Attribute.titleTextStyle = global::HelloworldXamarin.Droid.Resource.Attribute.titleTextStyle;
+ global::Xamarin.Forms.Platform.Resource.Attribute.toolbarId = global::HelloworldXamarin.Droid.Resource.Attribute.toolbarId;
+ global::Xamarin.Forms.Platform.Resource.Attribute.toolbarNavigationButtonStyle = global::HelloworldXamarin.Droid.Resource.Attribute.toolbarNavigationButtonStyle;
+ global::Xamarin.Forms.Platform.Resource.Attribute.toolbarStyle = global::HelloworldXamarin.Droid.Resource.Attribute.toolbarStyle;
+ global::Xamarin.Forms.Platform.Resource.Attribute.tooltipForegroundColor = global::HelloworldXamarin.Droid.Resource.Attribute.tooltipForegroundColor;
+ global::Xamarin.Forms.Platform.Resource.Attribute.tooltipFrameBackground = global::HelloworldXamarin.Droid.Resource.Attribute.tooltipFrameBackground;
+ global::Xamarin.Forms.Platform.Resource.Attribute.tooltipText = global::HelloworldXamarin.Droid.Resource.Attribute.tooltipText;
+ global::Xamarin.Forms.Platform.Resource.Attribute.track = global::HelloworldXamarin.Droid.Resource.Attribute.track;
+ global::Xamarin.Forms.Platform.Resource.Attribute.trackTint = global::HelloworldXamarin.Droid.Resource.Attribute.trackTint;
+ global::Xamarin.Forms.Platform.Resource.Attribute.trackTintMode = global::HelloworldXamarin.Droid.Resource.Attribute.trackTintMode;
+ global::Xamarin.Forms.Platform.Resource.Attribute.ttcIndex = global::HelloworldXamarin.Droid.Resource.Attribute.ttcIndex;
+ global::Xamarin.Forms.Platform.Resource.Attribute.useCompatPadding = global::HelloworldXamarin.Droid.Resource.Attribute.useCompatPadding;
+ global::Xamarin.Forms.Platform.Resource.Attribute.viewInflaterClass = global::HelloworldXamarin.Droid.Resource.Attribute.viewInflaterClass;
+ global::Xamarin.Forms.Platform.Resource.Attribute.voiceIcon = global::HelloworldXamarin.Droid.Resource.Attribute.voiceIcon;
+ global::Xamarin.Forms.Platform.Resource.Attribute.windowActionBar = global::HelloworldXamarin.Droid.Resource.Attribute.windowActionBar;
+ global::Xamarin.Forms.Platform.Resource.Attribute.windowActionBarOverlay = global::HelloworldXamarin.Droid.Resource.Attribute.windowActionBarOverlay;
+ global::Xamarin.Forms.Platform.Resource.Attribute.windowActionModeOverlay = global::HelloworldXamarin.Droid.Resource.Attribute.windowActionModeOverlay;
+ global::Xamarin.Forms.Platform.Resource.Attribute.windowFixedHeightMajor = global::HelloworldXamarin.Droid.Resource.Attribute.windowFixedHeightMajor;
+ global::Xamarin.Forms.Platform.Resource.Attribute.windowFixedHeightMinor = global::HelloworldXamarin.Droid.Resource.Attribute.windowFixedHeightMinor;
+ global::Xamarin.Forms.Platform.Resource.Attribute.windowFixedWidthMajor = global::HelloworldXamarin.Droid.Resource.Attribute.windowFixedWidthMajor;
+ global::Xamarin.Forms.Platform.Resource.Attribute.windowFixedWidthMinor = global::HelloworldXamarin.Droid.Resource.Attribute.windowFixedWidthMinor;
+ global::Xamarin.Forms.Platform.Resource.Attribute.windowMinWidthMajor = global::HelloworldXamarin.Droid.Resource.Attribute.windowMinWidthMajor;
+ global::Xamarin.Forms.Platform.Resource.Attribute.windowMinWidthMinor = global::HelloworldXamarin.Droid.Resource.Attribute.windowMinWidthMinor;
+ global::Xamarin.Forms.Platform.Resource.Attribute.windowNoTitle = global::HelloworldXamarin.Droid.Resource.Attribute.windowNoTitle;
+ global::Xamarin.Forms.Platform.Resource.Boolean.abc_action_bar_embed_tabs = global::HelloworldXamarin.Droid.Resource.Boolean.abc_action_bar_embed_tabs;
+ global::Xamarin.Forms.Platform.Resource.Boolean.abc_allow_stacked_button_bar = global::HelloworldXamarin.Droid.Resource.Boolean.abc_allow_stacked_button_bar;
+ global::Xamarin.Forms.Platform.Resource.Boolean.abc_config_actionMenuItemAllCaps = global::HelloworldXamarin.Droid.Resource.Boolean.abc_config_actionMenuItemAllCaps;
+ global::Xamarin.Forms.Platform.Resource.Boolean.mtrl_btn_textappearance_all_caps = global::HelloworldXamarin.Droid.Resource.Boolean.mtrl_btn_textappearance_all_caps;
+ global::Xamarin.Forms.Platform.Resource.Color.abc_background_cache_hint_selector_material_dark = global::HelloworldXamarin.Droid.Resource.Color.abc_background_cache_hint_selector_material_dark;
+ global::Xamarin.Forms.Platform.Resource.Color.abc_background_cache_hint_selector_material_light = global::HelloworldXamarin.Droid.Resource.Color.abc_background_cache_hint_selector_material_light;
+ global::Xamarin.Forms.Platform.Resource.Color.abc_btn_colored_borderless_text_material = global::HelloworldXamarin.Droid.Resource.Color.abc_btn_colored_borderless_text_material;
+ global::Xamarin.Forms.Platform.Resource.Color.abc_btn_colored_text_material = global::HelloworldXamarin.Droid.Resource.Color.abc_btn_colored_text_material;
+ global::Xamarin.Forms.Platform.Resource.Color.abc_color_highlight_material = global::HelloworldXamarin.Droid.Resource.Color.abc_color_highlight_material;
+ global::Xamarin.Forms.Platform.Resource.Color.abc_hint_foreground_material_dark = global::HelloworldXamarin.Droid.Resource.Color.abc_hint_foreground_material_dark;
+ global::Xamarin.Forms.Platform.Resource.Color.abc_hint_foreground_material_light = global::HelloworldXamarin.Droid.Resource.Color.abc_hint_foreground_material_light;
+ global::Xamarin.Forms.Platform.Resource.Color.abc_input_method_navigation_guard = global::HelloworldXamarin.Droid.Resource.Color.abc_input_method_navigation_guard;
+ global::Xamarin.Forms.Platform.Resource.Color.abc_primary_text_disable_only_material_dark = global::HelloworldXamarin.Droid.Resource.Color.abc_primary_text_disable_only_material_dark;
+ global::Xamarin.Forms.Platform.Resource.Color.abc_primary_text_disable_only_material_light = global::HelloworldXamarin.Droid.Resource.Color.abc_primary_text_disable_only_material_light;
+ global::Xamarin.Forms.Platform.Resource.Color.abc_primary_text_material_dark = global::HelloworldXamarin.Droid.Resource.Color.abc_primary_text_material_dark;
+ global::Xamarin.Forms.Platform.Resource.Color.abc_primary_text_material_light = global::HelloworldXamarin.Droid.Resource.Color.abc_primary_text_material_light;
+ global::Xamarin.Forms.Platform.Resource.Color.abc_search_url_text = global::HelloworldXamarin.Droid.Resource.Color.abc_search_url_text;
+ global::Xamarin.Forms.Platform.Resource.Color.abc_search_url_text_normal = global::HelloworldXamarin.Droid.Resource.Color.abc_search_url_text_normal;
+ global::Xamarin.Forms.Platform.Resource.Color.abc_search_url_text_pressed = global::HelloworldXamarin.Droid.Resource.Color.abc_search_url_text_pressed;
+ global::Xamarin.Forms.Platform.Resource.Color.abc_search_url_text_selected = global::HelloworldXamarin.Droid.Resource.Color.abc_search_url_text_selected;
+ global::Xamarin.Forms.Platform.Resource.Color.abc_secondary_text_material_dark = global::HelloworldXamarin.Droid.Resource.Color.abc_secondary_text_material_dark;
+ global::Xamarin.Forms.Platform.Resource.Color.abc_secondary_text_material_light = global::HelloworldXamarin.Droid.Resource.Color.abc_secondary_text_material_light;
+ global::Xamarin.Forms.Platform.Resource.Color.abc_tint_btn_checkable = global::HelloworldXamarin.Droid.Resource.Color.abc_tint_btn_checkable;
+ global::Xamarin.Forms.Platform.Resource.Color.abc_tint_default = global::HelloworldXamarin.Droid.Resource.Color.abc_tint_default;
+ global::Xamarin.Forms.Platform.Resource.Color.abc_tint_edittext = global::HelloworldXamarin.Droid.Resource.Color.abc_tint_edittext;
+ global::Xamarin.Forms.Platform.Resource.Color.abc_tint_seek_thumb = global::HelloworldXamarin.Droid.Resource.Color.abc_tint_seek_thumb;
+ global::Xamarin.Forms.Platform.Resource.Color.abc_tint_spinner = global::HelloworldXamarin.Droid.Resource.Color.abc_tint_spinner;
+ global::Xamarin.Forms.Platform.Resource.Color.abc_tint_switch_track = global::HelloworldXamarin.Droid.Resource.Color.abc_tint_switch_track;
+ global::Xamarin.Forms.Platform.Resource.Color.accent_material_dark = global::HelloworldXamarin.Droid.Resource.Color.accent_material_dark;
+ global::Xamarin.Forms.Platform.Resource.Color.accent_material_light = global::HelloworldXamarin.Droid.Resource.Color.accent_material_light;
+ global::Xamarin.Forms.Platform.Resource.Color.background_floating_material_dark = global::HelloworldXamarin.Droid.Resource.Color.background_floating_material_dark;
+ global::Xamarin.Forms.Platform.Resource.Color.background_floating_material_light = global::HelloworldXamarin.Droid.Resource.Color.background_floating_material_light;
+ global::Xamarin.Forms.Platform.Resource.Color.background_material_dark = global::HelloworldXamarin.Droid.Resource.Color.background_material_dark;
+ global::Xamarin.Forms.Platform.Resource.Color.background_material_light = global::HelloworldXamarin.Droid.Resource.Color.background_material_light;
+ global::Xamarin.Forms.Platform.Resource.Color.bright_foreground_disabled_material_dark = global::HelloworldXamarin.Droid.Resource.Color.bright_foreground_disabled_material_dark;
+ global::Xamarin.Forms.Platform.Resource.Color.bright_foreground_disabled_material_light = global::HelloworldXamarin.Droid.Resource.Color.bright_foreground_disabled_material_light;
+ global::Xamarin.Forms.Platform.Resource.Color.bright_foreground_inverse_material_dark = global::HelloworldXamarin.Droid.Resource.Color.bright_foreground_inverse_material_dark;
+ global::Xamarin.Forms.Platform.Resource.Color.bright_foreground_inverse_material_light = global::HelloworldXamarin.Droid.Resource.Color.bright_foreground_inverse_material_light;
+ global::Xamarin.Forms.Platform.Resource.Color.bright_foreground_material_dark = global::HelloworldXamarin.Droid.Resource.Color.bright_foreground_material_dark;
+ global::Xamarin.Forms.Platform.Resource.Color.bright_foreground_material_light = global::HelloworldXamarin.Droid.Resource.Color.bright_foreground_material_light;
+ global::Xamarin.Forms.Platform.Resource.Color.button_material_dark = global::HelloworldXamarin.Droid.Resource.Color.button_material_dark;
+ global::Xamarin.Forms.Platform.Resource.Color.button_material_light = global::HelloworldXamarin.Droid.Resource.Color.button_material_light;
+ global::Xamarin.Forms.Platform.Resource.Color.cardview_dark_background = global::HelloworldXamarin.Droid.Resource.Color.cardview_dark_background;
+ global::Xamarin.Forms.Platform.Resource.Color.cardview_light_background = global::HelloworldXamarin.Droid.Resource.Color.cardview_light_background;
+ global::Xamarin.Forms.Platform.Resource.Color.cardview_shadow_end_color = global::HelloworldXamarin.Droid.Resource.Color.cardview_shadow_end_color;
+ global::Xamarin.Forms.Platform.Resource.Color.cardview_shadow_start_color = global::HelloworldXamarin.Droid.Resource.Color.cardview_shadow_start_color;
+ global::Xamarin.Forms.Platform.Resource.Color.design_bottom_navigation_shadow_color = global::HelloworldXamarin.Droid.Resource.Color.design_bottom_navigation_shadow_color;
+ global::Xamarin.Forms.Platform.Resource.Color.design_default_color_primary = global::HelloworldXamarin.Droid.Resource.Color.design_default_color_primary;
+ global::Xamarin.Forms.Platform.Resource.Color.design_default_color_primary_dark = global::HelloworldXamarin.Droid.Resource.Color.design_default_color_primary_dark;
+ global::Xamarin.Forms.Platform.Resource.Color.design_error = global::HelloworldXamarin.Droid.Resource.Color.design_error;
+ global::Xamarin.Forms.Platform.Resource.Color.design_fab_shadow_end_color = global::HelloworldXamarin.Droid.Resource.Color.design_fab_shadow_end_color;
+ global::Xamarin.Forms.Platform.Resource.Color.design_fab_shadow_mid_color = global::HelloworldXamarin.Droid.Resource.Color.design_fab_shadow_mid_color;
+ global::Xamarin.Forms.Platform.Resource.Color.design_fab_shadow_start_color = global::HelloworldXamarin.Droid.Resource.Color.design_fab_shadow_start_color;
+ global::Xamarin.Forms.Platform.Resource.Color.design_fab_stroke_end_inner_color = global::HelloworldXamarin.Droid.Resource.Color.design_fab_stroke_end_inner_color;
+ global::Xamarin.Forms.Platform.Resource.Color.design_fab_stroke_end_outer_color = global::HelloworldXamarin.Droid.Resource.Color.design_fab_stroke_end_outer_color;
+ global::Xamarin.Forms.Platform.Resource.Color.design_fab_stroke_top_inner_color = global::HelloworldXamarin.Droid.Resource.Color.design_fab_stroke_top_inner_color;
+ global::Xamarin.Forms.Platform.Resource.Color.design_fab_stroke_top_outer_color = global::HelloworldXamarin.Droid.Resource.Color.design_fab_stroke_top_outer_color;
+ global::Xamarin.Forms.Platform.Resource.Color.design_snackbar_background_color = global::HelloworldXamarin.Droid.Resource.Color.design_snackbar_background_color;
+ global::Xamarin.Forms.Platform.Resource.Color.design_tint_password_toggle = global::HelloworldXamarin.Droid.Resource.Color.design_tint_password_toggle;
+ global::Xamarin.Forms.Platform.Resource.Color.dim_foreground_disabled_material_dark = global::HelloworldXamarin.Droid.Resource.Color.dim_foreground_disabled_material_dark;
+ global::Xamarin.Forms.Platform.Resource.Color.dim_foreground_disabled_material_light = global::HelloworldXamarin.Droid.Resource.Color.dim_foreground_disabled_material_light;
+ global::Xamarin.Forms.Platform.Resource.Color.dim_foreground_material_dark = global::HelloworldXamarin.Droid.Resource.Color.dim_foreground_material_dark;
+ global::Xamarin.Forms.Platform.Resource.Color.dim_foreground_material_light = global::HelloworldXamarin.Droid.Resource.Color.dim_foreground_material_light;
+ global::Xamarin.Forms.Platform.Resource.Color.error_color_material_dark = global::HelloworldXamarin.Droid.Resource.Color.error_color_material_dark;
+ global::Xamarin.Forms.Platform.Resource.Color.error_color_material_light = global::HelloworldXamarin.Droid.Resource.Color.error_color_material_light;
+ global::Xamarin.Forms.Platform.Resource.Color.foreground_material_dark = global::HelloworldXamarin.Droid.Resource.Color.foreground_material_dark;
+ global::Xamarin.Forms.Platform.Resource.Color.foreground_material_light = global::HelloworldXamarin.Droid.Resource.Color.foreground_material_light;
+ global::Xamarin.Forms.Platform.Resource.Color.highlighted_text_material_dark = global::HelloworldXamarin.Droid.Resource.Color.highlighted_text_material_dark;
+ global::Xamarin.Forms.Platform.Resource.Color.highlighted_text_material_light = global::HelloworldXamarin.Droid.Resource.Color.highlighted_text_material_light;
+ global::Xamarin.Forms.Platform.Resource.Color.material_blue_grey_800 = global::HelloworldXamarin.Droid.Resource.Color.material_blue_grey_800;
+ global::Xamarin.Forms.Platform.Resource.Color.material_blue_grey_900 = global::HelloworldXamarin.Droid.Resource.Color.material_blue_grey_900;
+ global::Xamarin.Forms.Platform.Resource.Color.material_blue_grey_950 = global::HelloworldXamarin.Droid.Resource.Color.material_blue_grey_950;
+ global::Xamarin.Forms.Platform.Resource.Color.material_deep_teal_200 = global::HelloworldXamarin.Droid.Resource.Color.material_deep_teal_200;
+ global::Xamarin.Forms.Platform.Resource.Color.material_deep_teal_500 = global::HelloworldXamarin.Droid.Resource.Color.material_deep_teal_500;
+ global::Xamarin.Forms.Platform.Resource.Color.material_grey_100 = global::HelloworldXamarin.Droid.Resource.Color.material_grey_100;
+ global::Xamarin.Forms.Platform.Resource.Color.material_grey_300 = global::HelloworldXamarin.Droid.Resource.Color.material_grey_300;
+ global::Xamarin.Forms.Platform.Resource.Color.material_grey_50 = global::HelloworldXamarin.Droid.Resource.Color.material_grey_50;
+ global::Xamarin.Forms.Platform.Resource.Color.material_grey_600 = global::HelloworldXamarin.Droid.Resource.Color.material_grey_600;
+ global::Xamarin.Forms.Platform.Resource.Color.material_grey_800 = global::HelloworldXamarin.Droid.Resource.Color.material_grey_800;
+ global::Xamarin.Forms.Platform.Resource.Color.material_grey_850 = global::HelloworldXamarin.Droid.Resource.Color.material_grey_850;
+ global::Xamarin.Forms.Platform.Resource.Color.material_grey_900 = global::HelloworldXamarin.Droid.Resource.Color.material_grey_900;
+ global::Xamarin.Forms.Platform.Resource.Color.mtrl_bottom_nav_colored_item_tint = global::HelloworldXamarin.Droid.Resource.Color.mtrl_bottom_nav_colored_item_tint;
+ global::Xamarin.Forms.Platform.Resource.Color.mtrl_bottom_nav_item_tint = global::HelloworldXamarin.Droid.Resource.Color.mtrl_bottom_nav_item_tint;
+ global::Xamarin.Forms.Platform.Resource.Color.mtrl_btn_bg_color_disabled = global::HelloworldXamarin.Droid.Resource.Color.mtrl_btn_bg_color_disabled;
+ global::Xamarin.Forms.Platform.Resource.Color.mtrl_btn_bg_color_selector = global::HelloworldXamarin.Droid.Resource.Color.mtrl_btn_bg_color_selector;
+ global::Xamarin.Forms.Platform.Resource.Color.mtrl_btn_ripple_color = global::HelloworldXamarin.Droid.Resource.Color.mtrl_btn_ripple_color;
+ global::Xamarin.Forms.Platform.Resource.Color.mtrl_btn_stroke_color_selector = global::HelloworldXamarin.Droid.Resource.Color.mtrl_btn_stroke_color_selector;
+ global::Xamarin.Forms.Platform.Resource.Color.mtrl_btn_text_btn_ripple_color = global::HelloworldXamarin.Droid.Resource.Color.mtrl_btn_text_btn_ripple_color;
+ global::Xamarin.Forms.Platform.Resource.Color.mtrl_btn_text_color_disabled = global::HelloworldXamarin.Droid.Resource.Color.mtrl_btn_text_color_disabled;
+ global::Xamarin.Forms.Platform.Resource.Color.mtrl_btn_text_color_selector = global::HelloworldXamarin.Droid.Resource.Color.mtrl_btn_text_color_selector;
+ global::Xamarin.Forms.Platform.Resource.Color.mtrl_btn_transparent_bg_color = global::HelloworldXamarin.Droid.Resource.Color.mtrl_btn_transparent_bg_color;
+ global::Xamarin.Forms.Platform.Resource.Color.mtrl_chip_background_color = global::HelloworldXamarin.Droid.Resource.Color.mtrl_chip_background_color;
+ global::Xamarin.Forms.Platform.Resource.Color.mtrl_chip_close_icon_tint = global::HelloworldXamarin.Droid.Resource.Color.mtrl_chip_close_icon_tint;
+ global::Xamarin.Forms.Platform.Resource.Color.mtrl_chip_ripple_color = global::HelloworldXamarin.Droid.Resource.Color.mtrl_chip_ripple_color;
+ global::Xamarin.Forms.Platform.Resource.Color.mtrl_chip_text_color = global::HelloworldXamarin.Droid.Resource.Color.mtrl_chip_text_color;
+ global::Xamarin.Forms.Platform.Resource.Color.mtrl_fab_ripple_color = global::HelloworldXamarin.Droid.Resource.Color.mtrl_fab_ripple_color;
+ global::Xamarin.Forms.Platform.Resource.Color.mtrl_scrim_color = global::HelloworldXamarin.Droid.Resource.Color.mtrl_scrim_color;
+ global::Xamarin.Forms.Platform.Resource.Color.mtrl_tabs_colored_ripple_color = global::HelloworldXamarin.Droid.Resource.Color.mtrl_tabs_colored_ripple_color;
+ global::Xamarin.Forms.Platform.Resource.Color.mtrl_tabs_icon_color_selector = global::HelloworldXamarin.Droid.Resource.Color.mtrl_tabs_icon_color_selector;
+ global::Xamarin.Forms.Platform.Resource.Color.mtrl_tabs_icon_color_selector_colored = global::HelloworldXamarin.Droid.Resource.Color.mtrl_tabs_icon_color_selector_colored;
+ global::Xamarin.Forms.Platform.Resource.Color.mtrl_tabs_legacy_text_color_selector = global::HelloworldXamarin.Droid.Resource.Color.mtrl_tabs_legacy_text_color_selector;
+ global::Xamarin.Forms.Platform.Resource.Color.mtrl_tabs_ripple_color = global::HelloworldXamarin.Droid.Resource.Color.mtrl_tabs_ripple_color;
+ global::Xamarin.Forms.Platform.Resource.Color.mtrl_textinput_default_box_stroke_color = global::HelloworldXamarin.Droid.Resource.Color.mtrl_textinput_default_box_stroke_color;
+ global::Xamarin.Forms.Platform.Resource.Color.mtrl_textinput_disabled_color = global::HelloworldXamarin.Droid.Resource.Color.mtrl_textinput_disabled_color;
+ global::Xamarin.Forms.Platform.Resource.Color.mtrl_textinput_filled_box_default_background_color = global::HelloworldXamarin.Droid.Resource.Color.mtrl_textinput_filled_box_default_background_color;
+ global::Xamarin.Forms.Platform.Resource.Color.mtrl_textinput_hovered_box_stroke_color = global::HelloworldXamarin.Droid.Resource.Color.mtrl_textinput_hovered_box_stroke_color;
+ global::Xamarin.Forms.Platform.Resource.Color.mtrl_text_btn_text_color_selector = global::HelloworldXamarin.Droid.Resource.Color.mtrl_text_btn_text_color_selector;
+ global::Xamarin.Forms.Platform.Resource.Color.notification_action_color_filter = global::HelloworldXamarin.Droid.Resource.Color.notification_action_color_filter;
+ global::Xamarin.Forms.Platform.Resource.Color.notification_icon_bg_color = global::HelloworldXamarin.Droid.Resource.Color.notification_icon_bg_color;
+ global::Xamarin.Forms.Platform.Resource.Color.notification_material_background_media_default_color = global::HelloworldXamarin.Droid.Resource.Color.notification_material_background_media_default_color;
+ global::Xamarin.Forms.Platform.Resource.Color.primary_dark_material_dark = global::HelloworldXamarin.Droid.Resource.Color.primary_dark_material_dark;
+ global::Xamarin.Forms.Platform.Resource.Color.primary_dark_material_light = global::HelloworldXamarin.Droid.Resource.Color.primary_dark_material_light;
+ global::Xamarin.Forms.Platform.Resource.Color.primary_material_dark = global::HelloworldXamarin.Droid.Resource.Color.primary_material_dark;
+ global::Xamarin.Forms.Platform.Resource.Color.primary_material_light = global::HelloworldXamarin.Droid.Resource.Color.primary_material_light;
+ global::Xamarin.Forms.Platform.Resource.Color.primary_text_default_material_dark = global::HelloworldXamarin.Droid.Resource.Color.primary_text_default_material_dark;
+ global::Xamarin.Forms.Platform.Resource.Color.primary_text_default_material_light = global::HelloworldXamarin.Droid.Resource.Color.primary_text_default_material_light;
+ global::Xamarin.Forms.Platform.Resource.Color.primary_text_disabled_material_dark = global::HelloworldXamarin.Droid.Resource.Color.primary_text_disabled_material_dark;
+ global::Xamarin.Forms.Platform.Resource.Color.primary_text_disabled_material_light = global::HelloworldXamarin.Droid.Resource.Color.primary_text_disabled_material_light;
+ global::Xamarin.Forms.Platform.Resource.Color.ripple_material_dark = global::HelloworldXamarin.Droid.Resource.Color.ripple_material_dark;
+ global::Xamarin.Forms.Platform.Resource.Color.ripple_material_light = global::HelloworldXamarin.Droid.Resource.Color.ripple_material_light;
+ global::Xamarin.Forms.Platform.Resource.Color.secondary_text_default_material_dark = global::HelloworldXamarin.Droid.Resource.Color.secondary_text_default_material_dark;
+ global::Xamarin.Forms.Platform.Resource.Color.secondary_text_default_material_light = global::HelloworldXamarin.Droid.Resource.Color.secondary_text_default_material_light;
+ global::Xamarin.Forms.Platform.Resource.Color.secondary_text_disabled_material_dark = global::HelloworldXamarin.Droid.Resource.Color.secondary_text_disabled_material_dark;
+ global::Xamarin.Forms.Platform.Resource.Color.secondary_text_disabled_material_light = global::HelloworldXamarin.Droid.Resource.Color.secondary_text_disabled_material_light;
+ global::Xamarin.Forms.Platform.Resource.Color.switch_thumb_disabled_material_dark = global::HelloworldXamarin.Droid.Resource.Color.switch_thumb_disabled_material_dark;
+ global::Xamarin.Forms.Platform.Resource.Color.switch_thumb_disabled_material_light = global::HelloworldXamarin.Droid.Resource.Color.switch_thumb_disabled_material_light;
+ global::Xamarin.Forms.Platform.Resource.Color.switch_thumb_material_dark = global::HelloworldXamarin.Droid.Resource.Color.switch_thumb_material_dark;
+ global::Xamarin.Forms.Platform.Resource.Color.switch_thumb_material_light = global::HelloworldXamarin.Droid.Resource.Color.switch_thumb_material_light;
+ global::Xamarin.Forms.Platform.Resource.Color.switch_thumb_normal_material_dark = global::HelloworldXamarin.Droid.Resource.Color.switch_thumb_normal_material_dark;
+ global::Xamarin.Forms.Platform.Resource.Color.switch_thumb_normal_material_light = global::HelloworldXamarin.Droid.Resource.Color.switch_thumb_normal_material_light;
+ global::Xamarin.Forms.Platform.Resource.Color.tooltip_background_dark = global::HelloworldXamarin.Droid.Resource.Color.tooltip_background_dark;
+ global::Xamarin.Forms.Platform.Resource.Color.tooltip_background_light = global::HelloworldXamarin.Droid.Resource.Color.tooltip_background_light;
+ global::Xamarin.Forms.Platform.Resource.Dimension.abc_action_bar_content_inset_material = global::HelloworldXamarin.Droid.Resource.Dimension.abc_action_bar_content_inset_material;
+ global::Xamarin.Forms.Platform.Resource.Dimension.abc_action_bar_content_inset_with_nav = global::HelloworldXamarin.Droid.Resource.Dimension.abc_action_bar_content_inset_with_nav;
+ global::Xamarin.Forms.Platform.Resource.Dimension.abc_action_bar_default_height_material = global::HelloworldXamarin.Droid.Resource.Dimension.abc_action_bar_default_height_material;
+ global::Xamarin.Forms.Platform.Resource.Dimension.abc_action_bar_default_padding_end_material = global::HelloworldXamarin.Droid.Resource.Dimension.abc_action_bar_default_padding_end_material;
+ global::Xamarin.Forms.Platform.Resource.Dimension.abc_action_bar_default_padding_start_material = global::HelloworldXamarin.Droid.Resource.Dimension.abc_action_bar_default_padding_start_material;
+ global::Xamarin.Forms.Platform.Resource.Dimension.abc_action_bar_elevation_material = global::HelloworldXamarin.Droid.Resource.Dimension.abc_action_bar_elevation_material;
+ global::Xamarin.Forms.Platform.Resource.Dimension.abc_action_bar_icon_vertical_padding_material = global::HelloworldXamarin.Droid.Resource.Dimension.abc_action_bar_icon_vertical_padding_material;
+ global::Xamarin.Forms.Platform.Resource.Dimension.abc_action_bar_overflow_padding_end_material = global::HelloworldXamarin.Droid.Resource.Dimension.abc_action_bar_overflow_padding_end_material;
+ global::Xamarin.Forms.Platform.Resource.Dimension.abc_action_bar_overflow_padding_start_material = global::HelloworldXamarin.Droid.Resource.Dimension.abc_action_bar_overflow_padding_start_material;
+ global::Xamarin.Forms.Platform.Resource.Dimension.abc_action_bar_stacked_max_height = global::HelloworldXamarin.Droid.Resource.Dimension.abc_action_bar_stacked_max_height;
+ global::Xamarin.Forms.Platform.Resource.Dimension.abc_action_bar_stacked_tab_max_width = global::HelloworldXamarin.Droid.Resource.Dimension.abc_action_bar_stacked_tab_max_width;
+ global::Xamarin.Forms.Platform.Resource.Dimension.abc_action_bar_subtitle_bottom_margin_material = global::HelloworldXamarin.Droid.Resource.Dimension.abc_action_bar_subtitle_bottom_margin_material;
+ global::Xamarin.Forms.Platform.Resource.Dimension.abc_action_bar_subtitle_top_margin_material = global::HelloworldXamarin.Droid.Resource.Dimension.abc_action_bar_subtitle_top_margin_material;
+ global::Xamarin.Forms.Platform.Resource.Dimension.abc_action_button_min_height_material = global::HelloworldXamarin.Droid.Resource.Dimension.abc_action_button_min_height_material;
+ global::Xamarin.Forms.Platform.Resource.Dimension.abc_action_button_min_width_material = global::HelloworldXamarin.Droid.Resource.Dimension.abc_action_button_min_width_material;
+ global::Xamarin.Forms.Platform.Resource.Dimension.abc_action_button_min_width_overflow_material = global::HelloworldXamarin.Droid.Resource.Dimension.abc_action_button_min_width_overflow_material;
+ global::Xamarin.Forms.Platform.Resource.Dimension.abc_alert_dialog_button_bar_height = global::HelloworldXamarin.Droid.Resource.Dimension.abc_alert_dialog_button_bar_height;
+ global::Xamarin.Forms.Platform.Resource.Dimension.abc_alert_dialog_button_dimen = global::HelloworldXamarin.Droid.Resource.Dimension.abc_alert_dialog_button_dimen;
+ global::Xamarin.Forms.Platform.Resource.Dimension.abc_button_inset_horizontal_material = global::HelloworldXamarin.Droid.Resource.Dimension.abc_button_inset_horizontal_material;
+ global::Xamarin.Forms.Platform.Resource.Dimension.abc_button_inset_vertical_material = global::HelloworldXamarin.Droid.Resource.Dimension.abc_button_inset_vertical_material;
+ global::Xamarin.Forms.Platform.Resource.Dimension.abc_button_padding_horizontal_material = global::HelloworldXamarin.Droid.Resource.Dimension.abc_button_padding_horizontal_material;
+ global::Xamarin.Forms.Platform.Resource.Dimension.abc_button_padding_vertical_material = global::HelloworldXamarin.Droid.Resource.Dimension.abc_button_padding_vertical_material;
+ global::Xamarin.Forms.Platform.Resource.Dimension.abc_cascading_menus_min_smallest_width = global::HelloworldXamarin.Droid.Resource.Dimension.abc_cascading_menus_min_smallest_width;
+ global::Xamarin.Forms.Platform.Resource.Dimension.abc_config_prefDialogWidth = global::HelloworldXamarin.Droid.Resource.Dimension.abc_config_prefDialogWidth;
+ global::Xamarin.Forms.Platform.Resource.Dimension.abc_control_corner_material = global::HelloworldXamarin.Droid.Resource.Dimension.abc_control_corner_material;
+ global::Xamarin.Forms.Platform.Resource.Dimension.abc_control_inset_material = global::HelloworldXamarin.Droid.Resource.Dimension.abc_control_inset_material;
+ global::Xamarin.Forms.Platform.Resource.Dimension.abc_control_padding_material = global::HelloworldXamarin.Droid.Resource.Dimension.abc_control_padding_material;
+ global::Xamarin.Forms.Platform.Resource.Dimension.abc_dialog_corner_radius_material = global::HelloworldXamarin.Droid.Resource.Dimension.abc_dialog_corner_radius_material;
+ global::Xamarin.Forms.Platform.Resource.Dimension.abc_dialog_fixed_height_major = global::HelloworldXamarin.Droid.Resource.Dimension.abc_dialog_fixed_height_major;
+ global::Xamarin.Forms.Platform.Resource.Dimension.abc_dialog_fixed_height_minor = global::HelloworldXamarin.Droid.Resource.Dimension.abc_dialog_fixed_height_minor;
+ global::Xamarin.Forms.Platform.Resource.Dimension.abc_dialog_fixed_width_major = global::HelloworldXamarin.Droid.Resource.Dimension.abc_dialog_fixed_width_major;
+ global::Xamarin.Forms.Platform.Resource.Dimension.abc_dialog_fixed_width_minor = global::HelloworldXamarin.Droid.Resource.Dimension.abc_dialog_fixed_width_minor;
+ global::Xamarin.Forms.Platform.Resource.Dimension.abc_dialog_list_padding_bottom_no_buttons = global::HelloworldXamarin.Droid.Resource.Dimension.abc_dialog_list_padding_bottom_no_buttons;
+ global::Xamarin.Forms.Platform.Resource.Dimension.abc_dialog_list_padding_top_no_title = global::HelloworldXamarin.Droid.Resource.Dimension.abc_dialog_list_padding_top_no_title;
+ global::Xamarin.Forms.Platform.Resource.Dimension.abc_dialog_min_width_major = global::HelloworldXamarin.Droid.Resource.Dimension.abc_dialog_min_width_major;
+ global::Xamarin.Forms.Platform.Resource.Dimension.abc_dialog_min_width_minor = global::HelloworldXamarin.Droid.Resource.Dimension.abc_dialog_min_width_minor;
+ global::Xamarin.Forms.Platform.Resource.Dimension.abc_dialog_padding_material = global::HelloworldXamarin.Droid.Resource.Dimension.abc_dialog_padding_material;
+ global::Xamarin.Forms.Platform.Resource.Dimension.abc_dialog_padding_top_material = global::HelloworldXamarin.Droid.Resource.Dimension.abc_dialog_padding_top_material;
+ global::Xamarin.Forms.Platform.Resource.Dimension.abc_dialog_title_divider_material = global::HelloworldXamarin.Droid.Resource.Dimension.abc_dialog_title_divider_material;
+ global::Xamarin.Forms.Platform.Resource.Dimension.abc_disabled_alpha_material_dark = global::HelloworldXamarin.Droid.Resource.Dimension.abc_disabled_alpha_material_dark;
+ global::Xamarin.Forms.Platform.Resource.Dimension.abc_disabled_alpha_material_light = global::HelloworldXamarin.Droid.Resource.Dimension.abc_disabled_alpha_material_light;
+ global::Xamarin.Forms.Platform.Resource.Dimension.abc_dropdownitem_icon_width = global::HelloworldXamarin.Droid.Resource.Dimension.abc_dropdownitem_icon_width;
+ global::Xamarin.Forms.Platform.Resource.Dimension.abc_dropdownitem_text_padding_left = global::HelloworldXamarin.Droid.Resource.Dimension.abc_dropdownitem_text_padding_left;
+ global::Xamarin.Forms.Platform.Resource.Dimension.abc_dropdownitem_text_padding_right = global::HelloworldXamarin.Droid.Resource.Dimension.abc_dropdownitem_text_padding_right;
+ global::Xamarin.Forms.Platform.Resource.Dimension.abc_edit_text_inset_bottom_material = global::HelloworldXamarin.Droid.Resource.Dimension.abc_edit_text_inset_bottom_material;
+ global::Xamarin.Forms.Platform.Resource.Dimension.abc_edit_text_inset_horizontal_material = global::HelloworldXamarin.Droid.Resource.Dimension.abc_edit_text_inset_horizontal_material;
+ global::Xamarin.Forms.Platform.Resource.Dimension.abc_edit_text_inset_top_material = global::HelloworldXamarin.Droid.Resource.Dimension.abc_edit_text_inset_top_material;
+ global::Xamarin.Forms.Platform.Resource.Dimension.abc_floating_window_z = global::HelloworldXamarin.Droid.Resource.Dimension.abc_floating_window_z;
+ global::Xamarin.Forms.Platform.Resource.Dimension.abc_list_item_padding_horizontal_material = global::HelloworldXamarin.Droid.Resource.Dimension.abc_list_item_padding_horizontal_material;
+ global::Xamarin.Forms.Platform.Resource.Dimension.abc_panel_menu_list_width = global::HelloworldXamarin.Droid.Resource.Dimension.abc_panel_menu_list_width;
+ global::Xamarin.Forms.Platform.Resource.Dimension.abc_progress_bar_height_material = global::HelloworldXamarin.Droid.Resource.Dimension.abc_progress_bar_height_material;
+ global::Xamarin.Forms.Platform.Resource.Dimension.abc_search_view_preferred_height = global::HelloworldXamarin.Droid.Resource.Dimension.abc_search_view_preferred_height;
+ global::Xamarin.Forms.Platform.Resource.Dimension.abc_search_view_preferred_width = global::HelloworldXamarin.Droid.Resource.Dimension.abc_search_view_preferred_width;
+ global::Xamarin.Forms.Platform.Resource.Dimension.abc_seekbar_track_background_height_material = global::HelloworldXamarin.Droid.Resource.Dimension.abc_seekbar_track_background_height_material;
+ global::Xamarin.Forms.Platform.Resource.Dimension.abc_seekbar_track_progress_height_material = global::HelloworldXamarin.Droid.Resource.Dimension.abc_seekbar_track_progress_height_material;
+ global::Xamarin.Forms.Platform.Resource.Dimension.abc_select_dialog_padding_start_material = global::HelloworldXamarin.Droid.Resource.Dimension.abc_select_dialog_padding_start_material;
+ global::Xamarin.Forms.Platform.Resource.Dimension.abc_switch_padding = global::HelloworldXamarin.Droid.Resource.Dimension.abc_switch_padding;
+ global::Xamarin.Forms.Platform.Resource.Dimension.abc_text_size_body_1_material = global::HelloworldXamarin.Droid.Resource.Dimension.abc_text_size_body_1_material;
+ global::Xamarin.Forms.Platform.Resource.Dimension.abc_text_size_body_2_material = global::HelloworldXamarin.Droid.Resource.Dimension.abc_text_size_body_2_material;
+ global::Xamarin.Forms.Platform.Resource.Dimension.abc_text_size_button_material = global::HelloworldXamarin.Droid.Resource.Dimension.abc_text_size_button_material;
+ global::Xamarin.Forms.Platform.Resource.Dimension.abc_text_size_caption_material = global::HelloworldXamarin.Droid.Resource.Dimension.abc_text_size_caption_material;
+ global::Xamarin.Forms.Platform.Resource.Dimension.abc_text_size_display_1_material = global::HelloworldXamarin.Droid.Resource.Dimension.abc_text_size_display_1_material;
+ global::Xamarin.Forms.Platform.Resource.Dimension.abc_text_size_display_2_material = global::HelloworldXamarin.Droid.Resource.Dimension.abc_text_size_display_2_material;
+ global::Xamarin.Forms.Platform.Resource.Dimension.abc_text_size_display_3_material = global::HelloworldXamarin.Droid.Resource.Dimension.abc_text_size_display_3_material;
+ global::Xamarin.Forms.Platform.Resource.Dimension.abc_text_size_display_4_material = global::HelloworldXamarin.Droid.Resource.Dimension.abc_text_size_display_4_material;
+ global::Xamarin.Forms.Platform.Resource.Dimension.abc_text_size_headline_material = global::HelloworldXamarin.Droid.Resource.Dimension.abc_text_size_headline_material;
+ global::Xamarin.Forms.Platform.Resource.Dimension.abc_text_size_large_material = global::HelloworldXamarin.Droid.Resource.Dimension.abc_text_size_large_material;
+ global::Xamarin.Forms.Platform.Resource.Dimension.abc_text_size_medium_material = global::HelloworldXamarin.Droid.Resource.Dimension.abc_text_size_medium_material;
+ global::Xamarin.Forms.Platform.Resource.Dimension.abc_text_size_menu_header_material = global::HelloworldXamarin.Droid.Resource.Dimension.abc_text_size_menu_header_material;
+ global::Xamarin.Forms.Platform.Resource.Dimension.abc_text_size_menu_material = global::HelloworldXamarin.Droid.Resource.Dimension.abc_text_size_menu_material;
+ global::Xamarin.Forms.Platform.Resource.Dimension.abc_text_size_small_material = global::HelloworldXamarin.Droid.Resource.Dimension.abc_text_size_small_material;
+ global::Xamarin.Forms.Platform.Resource.Dimension.abc_text_size_subhead_material = global::HelloworldXamarin.Droid.Resource.Dimension.abc_text_size_subhead_material;
+ global::Xamarin.Forms.Platform.Resource.Dimension.abc_text_size_subtitle_material_toolbar = global::HelloworldXamarin.Droid.Resource.Dimension.abc_text_size_subtitle_material_toolbar;
+ global::Xamarin.Forms.Platform.Resource.Dimension.abc_text_size_title_material = global::HelloworldXamarin.Droid.Resource.Dimension.abc_text_size_title_material;
+ global::Xamarin.Forms.Platform.Resource.Dimension.abc_text_size_title_material_toolbar = global::HelloworldXamarin.Droid.Resource.Dimension.abc_text_size_title_material_toolbar;
+ global::Xamarin.Forms.Platform.Resource.Dimension.cardview_compat_inset_shadow = global::HelloworldXamarin.Droid.Resource.Dimension.cardview_compat_inset_shadow;
+ global::Xamarin.Forms.Platform.Resource.Dimension.cardview_default_elevation = global::HelloworldXamarin.Droid.Resource.Dimension.cardview_default_elevation;
+ global::Xamarin.Forms.Platform.Resource.Dimension.cardview_default_radius = global::HelloworldXamarin.Droid.Resource.Dimension.cardview_default_radius;
+ global::Xamarin.Forms.Platform.Resource.Dimension.compat_button_inset_horizontal_material = global::HelloworldXamarin.Droid.Resource.Dimension.compat_button_inset_horizontal_material;
+ global::Xamarin.Forms.Platform.Resource.Dimension.compat_button_inset_vertical_material = global::HelloworldXamarin.Droid.Resource.Dimension.compat_button_inset_vertical_material;
+ global::Xamarin.Forms.Platform.Resource.Dimension.compat_button_padding_horizontal_material = global::HelloworldXamarin.Droid.Resource.Dimension.compat_button_padding_horizontal_material;
+ global::Xamarin.Forms.Platform.Resource.Dimension.compat_button_padding_vertical_material = global::HelloworldXamarin.Droid.Resource.Dimension.compat_button_padding_vertical_material;
+ global::Xamarin.Forms.Platform.Resource.Dimension.compat_control_corner_material = global::HelloworldXamarin.Droid.Resource.Dimension.compat_control_corner_material;
+ global::Xamarin.Forms.Platform.Resource.Dimension.compat_notification_large_icon_max_height = global::HelloworldXamarin.Droid.Resource.Dimension.compat_notification_large_icon_max_height;
+ global::Xamarin.Forms.Platform.Resource.Dimension.compat_notification_large_icon_max_width = global::HelloworldXamarin.Droid.Resource.Dimension.compat_notification_large_icon_max_width;
+ global::Xamarin.Forms.Platform.Resource.Dimension.design_appbar_elevation = global::HelloworldXamarin.Droid.Resource.Dimension.design_appbar_elevation;
+ global::Xamarin.Forms.Platform.Resource.Dimension.design_bottom_navigation_active_item_max_width = global::HelloworldXamarin.Droid.Resource.Dimension.design_bottom_navigation_active_item_max_width;
+ global::Xamarin.Forms.Platform.Resource.Dimension.design_bottom_navigation_active_item_min_width = global::HelloworldXamarin.Droid.Resource.Dimension.design_bottom_navigation_active_item_min_width;
+ global::Xamarin.Forms.Platform.Resource.Dimension.design_bottom_navigation_active_text_size = global::HelloworldXamarin.Droid.Resource.Dimension.design_bottom_navigation_active_text_size;
+ global::Xamarin.Forms.Platform.Resource.Dimension.design_bottom_navigation_elevation = global::HelloworldXamarin.Droid.Resource.Dimension.design_bottom_navigation_elevation;
+ global::Xamarin.Forms.Platform.Resource.Dimension.design_bottom_navigation_height = global::HelloworldXamarin.Droid.Resource.Dimension.design_bottom_navigation_height;
+ global::Xamarin.Forms.Platform.Resource.Dimension.design_bottom_navigation_icon_size = global::HelloworldXamarin.Droid.Resource.Dimension.design_bottom_navigation_icon_size;
+ global::Xamarin.Forms.Platform.Resource.Dimension.design_bottom_navigation_item_max_width = global::HelloworldXamarin.Droid.Resource.Dimension.design_bottom_navigation_item_max_width;
+ global::Xamarin.Forms.Platform.Resource.Dimension.design_bottom_navigation_item_min_width = global::HelloworldXamarin.Droid.Resource.Dimension.design_bottom_navigation_item_min_width;
+ global::Xamarin.Forms.Platform.Resource.Dimension.design_bottom_navigation_margin = global::HelloworldXamarin.Droid.Resource.Dimension.design_bottom_navigation_margin;
+ global::Xamarin.Forms.Platform.Resource.Dimension.design_bottom_navigation_shadow_height = global::HelloworldXamarin.Droid.Resource.Dimension.design_bottom_navigation_shadow_height;
+ global::Xamarin.Forms.Platform.Resource.Dimension.design_bottom_navigation_text_size = global::HelloworldXamarin.Droid.Resource.Dimension.design_bottom_navigation_text_size;
+ global::Xamarin.Forms.Platform.Resource.Dimension.design_bottom_sheet_modal_elevation = global::HelloworldXamarin.Droid.Resource.Dimension.design_bottom_sheet_modal_elevation;
+ global::Xamarin.Forms.Platform.Resource.Dimension.design_bottom_sheet_peek_height_min = global::HelloworldXamarin.Droid.Resource.Dimension.design_bottom_sheet_peek_height_min;
+ global::Xamarin.Forms.Platform.Resource.Dimension.design_fab_border_width = global::HelloworldXamarin.Droid.Resource.Dimension.design_fab_border_width;
+ global::Xamarin.Forms.Platform.Resource.Dimension.design_fab_elevation = global::HelloworldXamarin.Droid.Resource.Dimension.design_fab_elevation;
+ global::Xamarin.Forms.Platform.Resource.Dimension.design_fab_image_size = global::HelloworldXamarin.Droid.Resource.Dimension.design_fab_image_size;
+ global::Xamarin.Forms.Platform.Resource.Dimension.design_fab_size_mini = global::HelloworldXamarin.Droid.Resource.Dimension.design_fab_size_mini;
+ global::Xamarin.Forms.Platform.Resource.Dimension.design_fab_size_normal = global::HelloworldXamarin.Droid.Resource.Dimension.design_fab_size_normal;
+ global::Xamarin.Forms.Platform.Resource.Dimension.design_fab_translation_z_hovered_focused = global::HelloworldXamarin.Droid.Resource.Dimension.design_fab_translation_z_hovered_focused;
+ global::Xamarin.Forms.Platform.Resource.Dimension.design_fab_translation_z_pressed = global::HelloworldXamarin.Droid.Resource.Dimension.design_fab_translation_z_pressed;
+ global::Xamarin.Forms.Platform.Resource.Dimension.design_navigation_elevation = global::HelloworldXamarin.Droid.Resource.Dimension.design_navigation_elevation;
+ global::Xamarin.Forms.Platform.Resource.Dimension.design_navigation_icon_padding = global::HelloworldXamarin.Droid.Resource.Dimension.design_navigation_icon_padding;
+ global::Xamarin.Forms.Platform.Resource.Dimension.design_navigation_icon_size = global::HelloworldXamarin.Droid.Resource.Dimension.design_navigation_icon_size;
+ global::Xamarin.Forms.Platform.Resource.Dimension.design_navigation_item_horizontal_padding = global::HelloworldXamarin.Droid.Resource.Dimension.design_navigation_item_horizontal_padding;
+ global::Xamarin.Forms.Platform.Resource.Dimension.design_navigation_item_icon_padding = global::HelloworldXamarin.Droid.Resource.Dimension.design_navigation_item_icon_padding;
+ global::Xamarin.Forms.Platform.Resource.Dimension.design_navigation_max_width = global::HelloworldXamarin.Droid.Resource.Dimension.design_navigation_max_width;
+ global::Xamarin.Forms.Platform.Resource.Dimension.design_navigation_padding_bottom = global::HelloworldXamarin.Droid.Resource.Dimension.design_navigation_padding_bottom;
+ global::Xamarin.Forms.Platform.Resource.Dimension.design_navigation_separator_vertical_padding = global::HelloworldXamarin.Droid.Resource.Dimension.design_navigation_separator_vertical_padding;
+ global::Xamarin.Forms.Platform.Resource.Dimension.design_snackbar_action_inline_max_width = global::HelloworldXamarin.Droid.Resource.Dimension.design_snackbar_action_inline_max_width;
+ global::Xamarin.Forms.Platform.Resource.Dimension.design_snackbar_background_corner_radius = global::HelloworldXamarin.Droid.Resource.Dimension.design_snackbar_background_corner_radius;
+ global::Xamarin.Forms.Platform.Resource.Dimension.design_snackbar_elevation = global::HelloworldXamarin.Droid.Resource.Dimension.design_snackbar_elevation;
+ global::Xamarin.Forms.Platform.Resource.Dimension.design_snackbar_extra_spacing_horizontal = global::HelloworldXamarin.Droid.Resource.Dimension.design_snackbar_extra_spacing_horizontal;
+ global::Xamarin.Forms.Platform.Resource.Dimension.design_snackbar_max_width = global::HelloworldXamarin.Droid.Resource.Dimension.design_snackbar_max_width;
+ global::Xamarin.Forms.Platform.Resource.Dimension.design_snackbar_min_width = global::HelloworldXamarin.Droid.Resource.Dimension.design_snackbar_min_width;
+ global::Xamarin.Forms.Platform.Resource.Dimension.design_snackbar_padding_horizontal = global::HelloworldXamarin.Droid.Resource.Dimension.design_snackbar_padding_horizontal;
+ global::Xamarin.Forms.Platform.Resource.Dimension.design_snackbar_padding_vertical = global::HelloworldXamarin.Droid.Resource.Dimension.design_snackbar_padding_vertical;
+ global::Xamarin.Forms.Platform.Resource.Dimension.design_snackbar_padding_vertical_2lines = global::HelloworldXamarin.Droid.Resource.Dimension.design_snackbar_padding_vertical_2lines;
+ global::Xamarin.Forms.Platform.Resource.Dimension.design_snackbar_text_size = global::HelloworldXamarin.Droid.Resource.Dimension.design_snackbar_text_size;
+ global::Xamarin.Forms.Platform.Resource.Dimension.design_tab_max_width = global::HelloworldXamarin.Droid.Resource.Dimension.design_tab_max_width;
+ global::Xamarin.Forms.Platform.Resource.Dimension.design_tab_scrollable_min_width = global::HelloworldXamarin.Droid.Resource.Dimension.design_tab_scrollable_min_width;
+ global::Xamarin.Forms.Platform.Resource.Dimension.design_tab_text_size = global::HelloworldXamarin.Droid.Resource.Dimension.design_tab_text_size;
+ global::Xamarin.Forms.Platform.Resource.Dimension.design_tab_text_size_2line = global::HelloworldXamarin.Droid.Resource.Dimension.design_tab_text_size_2line;
+ global::Xamarin.Forms.Platform.Resource.Dimension.design_textinput_caption_translate_y = global::HelloworldXamarin.Droid.Resource.Dimension.design_textinput_caption_translate_y;
+ global::Xamarin.Forms.Platform.Resource.Dimension.disabled_alpha_material_dark = global::HelloworldXamarin.Droid.Resource.Dimension.disabled_alpha_material_dark;
+ global::Xamarin.Forms.Platform.Resource.Dimension.disabled_alpha_material_light = global::HelloworldXamarin.Droid.Resource.Dimension.disabled_alpha_material_light;
+ global::Xamarin.Forms.Platform.Resource.Dimension.fastscroll_default_thickness = global::HelloworldXamarin.Droid.Resource.Dimension.fastscroll_default_thickness;
+ global::Xamarin.Forms.Platform.Resource.Dimension.fastscroll_margin = global::HelloworldXamarin.Droid.Resource.Dimension.fastscroll_margin;
+ global::Xamarin.Forms.Platform.Resource.Dimension.fastscroll_minimum_range = global::HelloworldXamarin.Droid.Resource.Dimension.fastscroll_minimum_range;
+ global::Xamarin.Forms.Platform.Resource.Dimension.highlight_alpha_material_colored = global::HelloworldXamarin.Droid.Resource.Dimension.highlight_alpha_material_colored;
+ global::Xamarin.Forms.Platform.Resource.Dimension.highlight_alpha_material_dark = global::HelloworldXamarin.Droid.Resource.Dimension.highlight_alpha_material_dark;
+ global::Xamarin.Forms.Platform.Resource.Dimension.highlight_alpha_material_light = global::HelloworldXamarin.Droid.Resource.Dimension.highlight_alpha_material_light;
+ global::Xamarin.Forms.Platform.Resource.Dimension.hint_alpha_material_dark = global::HelloworldXamarin.Droid.Resource.Dimension.hint_alpha_material_dark;
+ global::Xamarin.Forms.Platform.Resource.Dimension.hint_alpha_material_light = global::HelloworldXamarin.Droid.Resource.Dimension.hint_alpha_material_light;
+ global::Xamarin.Forms.Platform.Resource.Dimension.hint_pressed_alpha_material_dark = global::HelloworldXamarin.Droid.Resource.Dimension.hint_pressed_alpha_material_dark;
+ global::Xamarin.Forms.Platform.Resource.Dimension.hint_pressed_alpha_material_light = global::HelloworldXamarin.Droid.Resource.Dimension.hint_pressed_alpha_material_light;
+ global::Xamarin.Forms.Platform.Resource.Dimension.item_touch_helper_max_drag_scroll_per_frame = global::HelloworldXamarin.Droid.Resource.Dimension.item_touch_helper_max_drag_scroll_per_frame;
+ global::Xamarin.Forms.Platform.Resource.Dimension.item_touch_helper_swipe_escape_max_velocity = global::HelloworldXamarin.Droid.Resource.Dimension.item_touch_helper_swipe_escape_max_velocity;
+ global::Xamarin.Forms.Platform.Resource.Dimension.item_touch_helper_swipe_escape_velocity = global::HelloworldXamarin.Droid.Resource.Dimension.item_touch_helper_swipe_escape_velocity;
+ global::Xamarin.Forms.Platform.Resource.Dimension.mtrl_bottomappbar_fabOffsetEndMode = global::HelloworldXamarin.Droid.Resource.Dimension.mtrl_bottomappbar_fabOffsetEndMode;
+ global::Xamarin.Forms.Platform.Resource.Dimension.mtrl_bottomappbar_fab_cradle_margin = global::HelloworldXamarin.Droid.Resource.Dimension.mtrl_bottomappbar_fab_cradle_margin;
+ global::Xamarin.Forms.Platform.Resource.Dimension.mtrl_bottomappbar_fab_cradle_rounded_corner_radius = global::HelloworldXamarin.Droid.Resource.Dimension.mtrl_bottomappbar_fab_cradle_rounded_corner_radius;
+ global::Xamarin.Forms.Platform.Resource.Dimension.mtrl_bottomappbar_fab_cradle_vertical_offset = global::HelloworldXamarin.Droid.Resource.Dimension.mtrl_bottomappbar_fab_cradle_vertical_offset;
+ global::Xamarin.Forms.Platform.Resource.Dimension.mtrl_bottomappbar_height = global::HelloworldXamarin.Droid.Resource.Dimension.mtrl_bottomappbar_height;
+ global::Xamarin.Forms.Platform.Resource.Dimension.mtrl_btn_corner_radius = global::HelloworldXamarin.Droid.Resource.Dimension.mtrl_btn_corner_radius;
+ global::Xamarin.Forms.Platform.Resource.Dimension.mtrl_btn_dialog_btn_min_width = global::HelloworldXamarin.Droid.Resource.Dimension.mtrl_btn_dialog_btn_min_width;
+ global::Xamarin.Forms.Platform.Resource.Dimension.mtrl_btn_disabled_elevation = global::HelloworldXamarin.Droid.Resource.Dimension.mtrl_btn_disabled_elevation;
+ global::Xamarin.Forms.Platform.Resource.Dimension.mtrl_btn_disabled_z = global::HelloworldXamarin.Droid.Resource.Dimension.mtrl_btn_disabled_z;
+ global::Xamarin.Forms.Platform.Resource.Dimension.mtrl_btn_elevation = global::HelloworldXamarin.Droid.Resource.Dimension.mtrl_btn_elevation;
+ global::Xamarin.Forms.Platform.Resource.Dimension.mtrl_btn_focused_z = global::HelloworldXamarin.Droid.Resource.Dimension.mtrl_btn_focused_z;
+ global::Xamarin.Forms.Platform.Resource.Dimension.mtrl_btn_hovered_z = global::HelloworldXamarin.Droid.Resource.Dimension.mtrl_btn_hovered_z;
+ global::Xamarin.Forms.Platform.Resource.Dimension.mtrl_btn_icon_btn_padding_left = global::HelloworldXamarin.Droid.Resource.Dimension.mtrl_btn_icon_btn_padding_left;
+ global::Xamarin.Forms.Platform.Resource.Dimension.mtrl_btn_icon_padding = global::HelloworldXamarin.Droid.Resource.Dimension.mtrl_btn_icon_padding;
+ global::Xamarin.Forms.Platform.Resource.Dimension.mtrl_btn_inset = global::HelloworldXamarin.Droid.Resource.Dimension.mtrl_btn_inset;
+ global::Xamarin.Forms.Platform.Resource.Dimension.mtrl_btn_letter_spacing = global::HelloworldXamarin.Droid.Resource.Dimension.mtrl_btn_letter_spacing;
+ global::Xamarin.Forms.Platform.Resource.Dimension.mtrl_btn_padding_bottom = global::HelloworldXamarin.Droid.Resource.Dimension.mtrl_btn_padding_bottom;
+ global::Xamarin.Forms.Platform.Resource.Dimension.mtrl_btn_padding_left = global::HelloworldXamarin.Droid.Resource.Dimension.mtrl_btn_padding_left;
+ global::Xamarin.Forms.Platform.Resource.Dimension.mtrl_btn_padding_right = global::HelloworldXamarin.Droid.Resource.Dimension.mtrl_btn_padding_right;
+ global::Xamarin.Forms.Platform.Resource.Dimension.mtrl_btn_padding_top = global::HelloworldXamarin.Droid.Resource.Dimension.mtrl_btn_padding_top;
+ global::Xamarin.Forms.Platform.Resource.Dimension.mtrl_btn_pressed_z = global::HelloworldXamarin.Droid.Resource.Dimension.mtrl_btn_pressed_z;
+ global::Xamarin.Forms.Platform.Resource.Dimension.mtrl_btn_stroke_size = global::HelloworldXamarin.Droid.Resource.Dimension.mtrl_btn_stroke_size;
+ global::Xamarin.Forms.Platform.Resource.Dimension.mtrl_btn_text_btn_icon_padding = global::HelloworldXamarin.Droid.Resource.Dimension.mtrl_btn_text_btn_icon_padding;
+ global::Xamarin.Forms.Platform.Resource.Dimension.mtrl_btn_text_btn_padding_left = global::HelloworldXamarin.Droid.Resource.Dimension.mtrl_btn_text_btn_padding_left;
+ global::Xamarin.Forms.Platform.Resource.Dimension.mtrl_btn_text_btn_padding_right = global::HelloworldXamarin.Droid.Resource.Dimension.mtrl_btn_text_btn_padding_right;
+ global::Xamarin.Forms.Platform.Resource.Dimension.mtrl_btn_text_size = global::HelloworldXamarin.Droid.Resource.Dimension.mtrl_btn_text_size;
+ global::Xamarin.Forms.Platform.Resource.Dimension.mtrl_btn_z = global::HelloworldXamarin.Droid.Resource.Dimension.mtrl_btn_z;
+ global::Xamarin.Forms.Platform.Resource.Dimension.mtrl_card_elevation = global::HelloworldXamarin.Droid.Resource.Dimension.mtrl_card_elevation;
+ global::Xamarin.Forms.Platform.Resource.Dimension.mtrl_card_spacing = global::HelloworldXamarin.Droid.Resource.Dimension.mtrl_card_spacing;
+ global::Xamarin.Forms.Platform.Resource.Dimension.mtrl_chip_pressed_translation_z = global::HelloworldXamarin.Droid.Resource.Dimension.mtrl_chip_pressed_translation_z;
+ global::Xamarin.Forms.Platform.Resource.Dimension.mtrl_chip_text_size = global::HelloworldXamarin.Droid.Resource.Dimension.mtrl_chip_text_size;
+ global::Xamarin.Forms.Platform.Resource.Dimension.mtrl_fab_elevation = global::HelloworldXamarin.Droid.Resource.Dimension.mtrl_fab_elevation;
+ global::Xamarin.Forms.Platform.Resource.Dimension.mtrl_fab_translation_z_hovered_focused = global::HelloworldXamarin.Droid.Resource.Dimension.mtrl_fab_translation_z_hovered_focused;
+ global::Xamarin.Forms.Platform.Resource.Dimension.mtrl_fab_translation_z_pressed = global::HelloworldXamarin.Droid.Resource.Dimension.mtrl_fab_translation_z_pressed;
+ global::Xamarin.Forms.Platform.Resource.Dimension.mtrl_navigation_elevation = global::HelloworldXamarin.Droid.Resource.Dimension.mtrl_navigation_elevation;
+ global::Xamarin.Forms.Platform.Resource.Dimension.mtrl_navigation_item_horizontal_padding = global::HelloworldXamarin.Droid.Resource.Dimension.mtrl_navigation_item_horizontal_padding;
+ global::Xamarin.Forms.Platform.Resource.Dimension.mtrl_navigation_item_icon_padding = global::HelloworldXamarin.Droid.Resource.Dimension.mtrl_navigation_item_icon_padding;
+ global::Xamarin.Forms.Platform.Resource.Dimension.mtrl_snackbar_background_corner_radius = global::HelloworldXamarin.Droid.Resource.Dimension.mtrl_snackbar_background_corner_radius;
+ global::Xamarin.Forms.Platform.Resource.Dimension.mtrl_snackbar_margin = global::HelloworldXamarin.Droid.Resource.Dimension.mtrl_snackbar_margin;
+ global::Xamarin.Forms.Platform.Resource.Dimension.mtrl_textinput_box_bottom_offset = global::HelloworldXamarin.Droid.Resource.Dimension.mtrl_textinput_box_bottom_offset;
+ global::Xamarin.Forms.Platform.Resource.Dimension.mtrl_textinput_box_corner_radius_medium = global::HelloworldXamarin.Droid.Resource.Dimension.mtrl_textinput_box_corner_radius_medium;
+ global::Xamarin.Forms.Platform.Resource.Dimension.mtrl_textinput_box_corner_radius_small = global::HelloworldXamarin.Droid.Resource.Dimension.mtrl_textinput_box_corner_radius_small;
+ global::Xamarin.Forms.Platform.Resource.Dimension.mtrl_textinput_box_label_cutout_padding = global::HelloworldXamarin.Droid.Resource.Dimension.mtrl_textinput_box_label_cutout_padding;
+ global::Xamarin.Forms.Platform.Resource.Dimension.mtrl_textinput_box_padding_end = global::HelloworldXamarin.Droid.Resource.Dimension.mtrl_textinput_box_padding_end;
+ global::Xamarin.Forms.Platform.Resource.Dimension.mtrl_textinput_box_stroke_width_default = global::HelloworldXamarin.Droid.Resource.Dimension.mtrl_textinput_box_stroke_width_default;
+ global::Xamarin.Forms.Platform.Resource.Dimension.mtrl_textinput_box_stroke_width_focused = global::HelloworldXamarin.Droid.Resource.Dimension.mtrl_textinput_box_stroke_width_focused;
+ global::Xamarin.Forms.Platform.Resource.Dimension.mtrl_textinput_outline_box_expanded_padding = global::HelloworldXamarin.Droid.Resource.Dimension.mtrl_textinput_outline_box_expanded_padding;
+ global::Xamarin.Forms.Platform.Resource.Dimension.mtrl_toolbar_default_height = global::HelloworldXamarin.Droid.Resource.Dimension.mtrl_toolbar_default_height;
+ global::Xamarin.Forms.Platform.Resource.Dimension.notification_action_icon_size = global::HelloworldXamarin.Droid.Resource.Dimension.notification_action_icon_size;
+ global::Xamarin.Forms.Platform.Resource.Dimension.notification_action_text_size = global::HelloworldXamarin.Droid.Resource.Dimension.notification_action_text_size;
+ global::Xamarin.Forms.Platform.Resource.Dimension.notification_big_circle_margin = global::HelloworldXamarin.Droid.Resource.Dimension.notification_big_circle_margin;
+ global::Xamarin.Forms.Platform.Resource.Dimension.notification_content_margin_start = global::HelloworldXamarin.Droid.Resource.Dimension.notification_content_margin_start;
+ global::Xamarin.Forms.Platform.Resource.Dimension.notification_large_icon_height = global::HelloworldXamarin.Droid.Resource.Dimension.notification_large_icon_height;
+ global::Xamarin.Forms.Platform.Resource.Dimension.notification_large_icon_width = global::HelloworldXamarin.Droid.Resource.Dimension.notification_large_icon_width;
+ global::Xamarin.Forms.Platform.Resource.Dimension.notification_main_column_padding_top = global::HelloworldXamarin.Droid.Resource.Dimension.notification_main_column_padding_top;
+ global::Xamarin.Forms.Platform.Resource.Dimension.notification_media_narrow_margin = global::HelloworldXamarin.Droid.Resource.Dimension.notification_media_narrow_margin;
+ global::Xamarin.Forms.Platform.Resource.Dimension.notification_right_icon_size = global::HelloworldXamarin.Droid.Resource.Dimension.notification_right_icon_size;
+ global::Xamarin.Forms.Platform.Resource.Dimension.notification_right_side_padding_top = global::HelloworldXamarin.Droid.Resource.Dimension.notification_right_side_padding_top;
+ global::Xamarin.Forms.Platform.Resource.Dimension.notification_small_icon_background_padding = global::HelloworldXamarin.Droid.Resource.Dimension.notification_small_icon_background_padding;
+ global::Xamarin.Forms.Platform.Resource.Dimension.notification_small_icon_size_as_large = global::HelloworldXamarin.Droid.Resource.Dimension.notification_small_icon_size_as_large;
+ global::Xamarin.Forms.Platform.Resource.Dimension.notification_subtext_size = global::HelloworldXamarin.Droid.Resource.Dimension.notification_subtext_size;
+ global::Xamarin.Forms.Platform.Resource.Dimension.notification_top_pad = global::HelloworldXamarin.Droid.Resource.Dimension.notification_top_pad;
+ global::Xamarin.Forms.Platform.Resource.Dimension.notification_top_pad_large_text = global::HelloworldXamarin.Droid.Resource.Dimension.notification_top_pad_large_text;
+ global::Xamarin.Forms.Platform.Resource.Dimension.subtitle_corner_radius = global::HelloworldXamarin.Droid.Resource.Dimension.subtitle_corner_radius;
+ global::Xamarin.Forms.Platform.Resource.Dimension.subtitle_outline_width = global::HelloworldXamarin.Droid.Resource.Dimension.subtitle_outline_width;
+ global::Xamarin.Forms.Platform.Resource.Dimension.subtitle_shadow_offset = global::HelloworldXamarin.Droid.Resource.Dimension.subtitle_shadow_offset;
+ global::Xamarin.Forms.Platform.Resource.Dimension.subtitle_shadow_radius = global::HelloworldXamarin.Droid.Resource.Dimension.subtitle_shadow_radius;
+ global::Xamarin.Forms.Platform.Resource.Dimension.tooltip_corner_radius = global::HelloworldXamarin.Droid.Resource.Dimension.tooltip_corner_radius;
+ global::Xamarin.Forms.Platform.Resource.Dimension.tooltip_horizontal_padding = global::HelloworldXamarin.Droid.Resource.Dimension.tooltip_horizontal_padding;
+ global::Xamarin.Forms.Platform.Resource.Dimension.tooltip_margin = global::HelloworldXamarin.Droid.Resource.Dimension.tooltip_margin;
+ global::Xamarin.Forms.Platform.Resource.Dimension.tooltip_precise_anchor_extra_offset = global::HelloworldXamarin.Droid.Resource.Dimension.tooltip_precise_anchor_extra_offset;
+ global::Xamarin.Forms.Platform.Resource.Dimension.tooltip_precise_anchor_threshold = global::HelloworldXamarin.Droid.Resource.Dimension.tooltip_precise_anchor_threshold;
+ global::Xamarin.Forms.Platform.Resource.Dimension.tooltip_vertical_padding = global::HelloworldXamarin.Droid.Resource.Dimension.tooltip_vertical_padding;
+ global::Xamarin.Forms.Platform.Resource.Dimension.tooltip_y_offset_non_touch = global::HelloworldXamarin.Droid.Resource.Dimension.tooltip_y_offset_non_touch;
+ global::Xamarin.Forms.Platform.Resource.Dimension.tooltip_y_offset_touch = global::HelloworldXamarin.Droid.Resource.Dimension.tooltip_y_offset_touch;
+ global::Xamarin.Forms.Platform.Resource.Drawable.abc_ab_share_pack_mtrl_alpha = global::HelloworldXamarin.Droid.Resource.Drawable.abc_ab_share_pack_mtrl_alpha;
+ global::Xamarin.Forms.Platform.Resource.Drawable.abc_action_bar_item_background_material = global::HelloworldXamarin.Droid.Resource.Drawable.abc_action_bar_item_background_material;
+ global::Xamarin.Forms.Platform.Resource.Drawable.abc_btn_borderless_material = global::HelloworldXamarin.Droid.Resource.Drawable.abc_btn_borderless_material;
+ global::Xamarin.Forms.Platform.Resource.Drawable.abc_btn_check_material = global::HelloworldXamarin.Droid.Resource.Drawable.abc_btn_check_material;
+ global::Xamarin.Forms.Platform.Resource.Drawable.abc_btn_check_to_on_mtrl_000 = global::HelloworldXamarin.Droid.Resource.Drawable.abc_btn_check_to_on_mtrl_000;
+ global::Xamarin.Forms.Platform.Resource.Drawable.abc_btn_check_to_on_mtrl_015 = global::HelloworldXamarin.Droid.Resource.Drawable.abc_btn_check_to_on_mtrl_015;
+ global::Xamarin.Forms.Platform.Resource.Drawable.abc_btn_colored_material = global::HelloworldXamarin.Droid.Resource.Drawable.abc_btn_colored_material;
+ global::Xamarin.Forms.Platform.Resource.Drawable.abc_btn_default_mtrl_shape = global::HelloworldXamarin.Droid.Resource.Drawable.abc_btn_default_mtrl_shape;
+ global::Xamarin.Forms.Platform.Resource.Drawable.abc_btn_radio_material = global::HelloworldXamarin.Droid.Resource.Drawable.abc_btn_radio_material;
+ global::Xamarin.Forms.Platform.Resource.Drawable.abc_btn_radio_to_on_mtrl_000 = global::HelloworldXamarin.Droid.Resource.Drawable.abc_btn_radio_to_on_mtrl_000;
+ global::Xamarin.Forms.Platform.Resource.Drawable.abc_btn_radio_to_on_mtrl_015 = global::HelloworldXamarin.Droid.Resource.Drawable.abc_btn_radio_to_on_mtrl_015;
+ global::Xamarin.Forms.Platform.Resource.Drawable.abc_btn_switch_to_on_mtrl_00001 = global::HelloworldXamarin.Droid.Resource.Drawable.abc_btn_switch_to_on_mtrl_00001;
+ global::Xamarin.Forms.Platform.Resource.Drawable.abc_btn_switch_to_on_mtrl_00012 = global::HelloworldXamarin.Droid.Resource.Drawable.abc_btn_switch_to_on_mtrl_00012;
+ global::Xamarin.Forms.Platform.Resource.Drawable.abc_cab_background_internal_bg = global::HelloworldXamarin.Droid.Resource.Drawable.abc_cab_background_internal_bg;
+ global::Xamarin.Forms.Platform.Resource.Drawable.abc_cab_background_top_material = global::HelloworldXamarin.Droid.Resource.Drawable.abc_cab_background_top_material;
+ global::Xamarin.Forms.Platform.Resource.Drawable.abc_cab_background_top_mtrl_alpha = global::HelloworldXamarin.Droid.Resource.Drawable.abc_cab_background_top_mtrl_alpha;
+ global::Xamarin.Forms.Platform.Resource.Drawable.abc_control_background_material = global::HelloworldXamarin.Droid.Resource.Drawable.abc_control_background_material;
+ global::Xamarin.Forms.Platform.Resource.Drawable.abc_dialog_material_background = global::HelloworldXamarin.Droid.Resource.Drawable.abc_dialog_material_background;
+ global::Xamarin.Forms.Platform.Resource.Drawable.abc_edit_text_material = global::HelloworldXamarin.Droid.Resource.Drawable.abc_edit_text_material;
+ global::Xamarin.Forms.Platform.Resource.Drawable.abc_ic_ab_back_material = global::HelloworldXamarin.Droid.Resource.Drawable.abc_ic_ab_back_material;
+ global::Xamarin.Forms.Platform.Resource.Drawable.abc_ic_arrow_drop_right_black_24dp = global::HelloworldXamarin.Droid.Resource.Drawable.abc_ic_arrow_drop_right_black_24dp;
+ global::Xamarin.Forms.Platform.Resource.Drawable.abc_ic_clear_material = global::HelloworldXamarin.Droid.Resource.Drawable.abc_ic_clear_material;
+ global::Xamarin.Forms.Platform.Resource.Drawable.abc_ic_commit_search_api_mtrl_alpha = global::HelloworldXamarin.Droid.Resource.Drawable.abc_ic_commit_search_api_mtrl_alpha;
+ global::Xamarin.Forms.Platform.Resource.Drawable.abc_ic_go_search_api_material = global::HelloworldXamarin.Droid.Resource.Drawable.abc_ic_go_search_api_material;
+ global::Xamarin.Forms.Platform.Resource.Drawable.abc_ic_menu_copy_mtrl_am_alpha = global::HelloworldXamarin.Droid.Resource.Drawable.abc_ic_menu_copy_mtrl_am_alpha;
+ global::Xamarin.Forms.Platform.Resource.Drawable.abc_ic_menu_cut_mtrl_alpha = global::HelloworldXamarin.Droid.Resource.Drawable.abc_ic_menu_cut_mtrl_alpha;
+ global::Xamarin.Forms.Platform.Resource.Drawable.abc_ic_menu_overflow_material = global::HelloworldXamarin.Droid.Resource.Drawable.abc_ic_menu_overflow_material;
+ global::Xamarin.Forms.Platform.Resource.Drawable.abc_ic_menu_paste_mtrl_am_alpha = global::HelloworldXamarin.Droid.Resource.Drawable.abc_ic_menu_paste_mtrl_am_alpha;
+ global::Xamarin.Forms.Platform.Resource.Drawable.abc_ic_menu_selectall_mtrl_alpha = global::HelloworldXamarin.Droid.Resource.Drawable.abc_ic_menu_selectall_mtrl_alpha;
+ global::Xamarin.Forms.Platform.Resource.Drawable.abc_ic_menu_share_mtrl_alpha = global::HelloworldXamarin.Droid.Resource.Drawable.abc_ic_menu_share_mtrl_alpha;
+ global::Xamarin.Forms.Platform.Resource.Drawable.abc_ic_search_api_material = global::HelloworldXamarin.Droid.Resource.Drawable.abc_ic_search_api_material;
+ global::Xamarin.Forms.Platform.Resource.Drawable.abc_ic_star_black_16dp = global::HelloworldXamarin.Droid.Resource.Drawable.abc_ic_star_black_16dp;
+ global::Xamarin.Forms.Platform.Resource.Drawable.abc_ic_star_black_36dp = global::HelloworldXamarin.Droid.Resource.Drawable.abc_ic_star_black_36dp;
+ global::Xamarin.Forms.Platform.Resource.Drawable.abc_ic_star_black_48dp = global::HelloworldXamarin.Droid.Resource.Drawable.abc_ic_star_black_48dp;
+ global::Xamarin.Forms.Platform.Resource.Drawable.abc_ic_star_half_black_16dp = global::HelloworldXamarin.Droid.Resource.Drawable.abc_ic_star_half_black_16dp;
+ global::Xamarin.Forms.Platform.Resource.Drawable.abc_ic_star_half_black_36dp = global::HelloworldXamarin.Droid.Resource.Drawable.abc_ic_star_half_black_36dp;
+ global::Xamarin.Forms.Platform.Resource.Drawable.abc_ic_star_half_black_48dp = global::HelloworldXamarin.Droid.Resource.Drawable.abc_ic_star_half_black_48dp;
+ global::Xamarin.Forms.Platform.Resource.Drawable.abc_ic_voice_search_api_material = global::HelloworldXamarin.Droid.Resource.Drawable.abc_ic_voice_search_api_material;
+ global::Xamarin.Forms.Platform.Resource.Drawable.abc_item_background_holo_dark = global::HelloworldXamarin.Droid.Resource.Drawable.abc_item_background_holo_dark;
+ global::Xamarin.Forms.Platform.Resource.Drawable.abc_item_background_holo_light = global::HelloworldXamarin.Droid.Resource.Drawable.abc_item_background_holo_light;
+ global::Xamarin.Forms.Platform.Resource.Drawable.abc_list_divider_material = global::HelloworldXamarin.Droid.Resource.Drawable.abc_list_divider_material;
+ global::Xamarin.Forms.Platform.Resource.Drawable.abc_list_divider_mtrl_alpha = global::HelloworldXamarin.Droid.Resource.Drawable.abc_list_divider_mtrl_alpha;
+ global::Xamarin.Forms.Platform.Resource.Drawable.abc_list_focused_holo = global::HelloworldXamarin.Droid.Resource.Drawable.abc_list_focused_holo;
+ global::Xamarin.Forms.Platform.Resource.Drawable.abc_list_longpressed_holo = global::HelloworldXamarin.Droid.Resource.Drawable.abc_list_longpressed_holo;
+ global::Xamarin.Forms.Platform.Resource.Drawable.abc_list_pressed_holo_dark = global::HelloworldXamarin.Droid.Resource.Drawable.abc_list_pressed_holo_dark;
+ global::Xamarin.Forms.Platform.Resource.Drawable.abc_list_pressed_holo_light = global::HelloworldXamarin.Droid.Resource.Drawable.abc_list_pressed_holo_light;
+ global::Xamarin.Forms.Platform.Resource.Drawable.abc_list_selector_background_transition_holo_dark = global::HelloworldXamarin.Droid.Resource.Drawable.abc_list_selector_background_transition_holo_dark;
+ global::Xamarin.Forms.Platform.Resource.Drawable.abc_list_selector_background_transition_holo_light = global::HelloworldXamarin.Droid.Resource.Drawable.abc_list_selector_background_transition_holo_light;
+ global::Xamarin.Forms.Platform.Resource.Drawable.abc_list_selector_disabled_holo_dark = global::HelloworldXamarin.Droid.Resource.Drawable.abc_list_selector_disabled_holo_dark;
+ global::Xamarin.Forms.Platform.Resource.Drawable.abc_list_selector_disabled_holo_light = global::HelloworldXamarin.Droid.Resource.Drawable.abc_list_selector_disabled_holo_light;
+ global::Xamarin.Forms.Platform.Resource.Drawable.abc_list_selector_holo_dark = global::HelloworldXamarin.Droid.Resource.Drawable.abc_list_selector_holo_dark;
+ global::Xamarin.Forms.Platform.Resource.Drawable.abc_list_selector_holo_light = global::HelloworldXamarin.Droid.Resource.Drawable.abc_list_selector_holo_light;
+ global::Xamarin.Forms.Platform.Resource.Drawable.abc_menu_hardkey_panel_mtrl_mult = global::HelloworldXamarin.Droid.Resource.Drawable.abc_menu_hardkey_panel_mtrl_mult;
+ global::Xamarin.Forms.Platform.Resource.Drawable.abc_popup_background_mtrl_mult = global::HelloworldXamarin.Droid.Resource.Drawable.abc_popup_background_mtrl_mult;
+ global::Xamarin.Forms.Platform.Resource.Drawable.abc_ratingbar_indicator_material = global::HelloworldXamarin.Droid.Resource.Drawable.abc_ratingbar_indicator_material;
+ global::Xamarin.Forms.Platform.Resource.Drawable.abc_ratingbar_material = global::HelloworldXamarin.Droid.Resource.Drawable.abc_ratingbar_material;
+ global::Xamarin.Forms.Platform.Resource.Drawable.abc_ratingbar_small_material = global::HelloworldXamarin.Droid.Resource.Drawable.abc_ratingbar_small_material;
+ global::Xamarin.Forms.Platform.Resource.Drawable.abc_scrubber_control_off_mtrl_alpha = global::HelloworldXamarin.Droid.Resource.Drawable.abc_scrubber_control_off_mtrl_alpha;
+ global::Xamarin.Forms.Platform.Resource.Drawable.abc_scrubber_control_to_pressed_mtrl_000 = global::HelloworldXamarin.Droid.Resource.Drawable.abc_scrubber_control_to_pressed_mtrl_000;
+ global::Xamarin.Forms.Platform.Resource.Drawable.abc_scrubber_control_to_pressed_mtrl_005 = global::HelloworldXamarin.Droid.Resource.Drawable.abc_scrubber_control_to_pressed_mtrl_005;
+ global::Xamarin.Forms.Platform.Resource.Drawable.abc_scrubber_primary_mtrl_alpha = global::HelloworldXamarin.Droid.Resource.Drawable.abc_scrubber_primary_mtrl_alpha;
+ global::Xamarin.Forms.Platform.Resource.Drawable.abc_scrubber_track_mtrl_alpha = global::HelloworldXamarin.Droid.Resource.Drawable.abc_scrubber_track_mtrl_alpha;
+ global::Xamarin.Forms.Platform.Resource.Drawable.abc_seekbar_thumb_material = global::HelloworldXamarin.Droid.Resource.Drawable.abc_seekbar_thumb_material;
+ global::Xamarin.Forms.Platform.Resource.Drawable.abc_seekbar_tick_mark_material = global::HelloworldXamarin.Droid.Resource.Drawable.abc_seekbar_tick_mark_material;
+ global::Xamarin.Forms.Platform.Resource.Drawable.abc_seekbar_track_material = global::HelloworldXamarin.Droid.Resource.Drawable.abc_seekbar_track_material;
+ global::Xamarin.Forms.Platform.Resource.Drawable.abc_spinner_mtrl_am_alpha = global::HelloworldXamarin.Droid.Resource.Drawable.abc_spinner_mtrl_am_alpha;
+ global::Xamarin.Forms.Platform.Resource.Drawable.abc_spinner_textfield_background_material = global::HelloworldXamarin.Droid.Resource.Drawable.abc_spinner_textfield_background_material;
+ global::Xamarin.Forms.Platform.Resource.Drawable.abc_switch_thumb_material = global::HelloworldXamarin.Droid.Resource.Drawable.abc_switch_thumb_material;
+ global::Xamarin.Forms.Platform.Resource.Drawable.abc_switch_track_mtrl_alpha = global::HelloworldXamarin.Droid.Resource.Drawable.abc_switch_track_mtrl_alpha;
+ global::Xamarin.Forms.Platform.Resource.Drawable.abc_tab_indicator_material = global::HelloworldXamarin.Droid.Resource.Drawable.abc_tab_indicator_material;
+ global::Xamarin.Forms.Platform.Resource.Drawable.abc_tab_indicator_mtrl_alpha = global::HelloworldXamarin.Droid.Resource.Drawable.abc_tab_indicator_mtrl_alpha;
+ global::Xamarin.Forms.Platform.Resource.Drawable.abc_textfield_activated_mtrl_alpha = global::HelloworldXamarin.Droid.Resource.Drawable.abc_textfield_activated_mtrl_alpha;
+ global::Xamarin.Forms.Platform.Resource.Drawable.abc_textfield_default_mtrl_alpha = global::HelloworldXamarin.Droid.Resource.Drawable.abc_textfield_default_mtrl_alpha;
+ global::Xamarin.Forms.Platform.Resource.Drawable.abc_textfield_search_activated_mtrl_alpha = global::HelloworldXamarin.Droid.Resource.Drawable.abc_textfield_search_activated_mtrl_alpha;
+ global::Xamarin.Forms.Platform.Resource.Drawable.abc_textfield_search_default_mtrl_alpha = global::HelloworldXamarin.Droid.Resource.Drawable.abc_textfield_search_default_mtrl_alpha;
+ global::Xamarin.Forms.Platform.Resource.Drawable.abc_textfield_search_material = global::HelloworldXamarin.Droid.Resource.Drawable.abc_textfield_search_material;
+ global::Xamarin.Forms.Platform.Resource.Drawable.abc_text_cursor_material = global::HelloworldXamarin.Droid.Resource.Drawable.abc_text_cursor_material;
+ global::Xamarin.Forms.Platform.Resource.Drawable.abc_text_select_handle_left_mtrl_dark = global::HelloworldXamarin.Droid.Resource.Drawable.abc_text_select_handle_left_mtrl_dark;
+ global::Xamarin.Forms.Platform.Resource.Drawable.abc_text_select_handle_left_mtrl_light = global::HelloworldXamarin.Droid.Resource.Drawable.abc_text_select_handle_left_mtrl_light;
+ global::Xamarin.Forms.Platform.Resource.Drawable.abc_text_select_handle_middle_mtrl_dark = global::HelloworldXamarin.Droid.Resource.Drawable.abc_text_select_handle_middle_mtrl_dark;
+ global::Xamarin.Forms.Platform.Resource.Drawable.abc_text_select_handle_middle_mtrl_light = global::HelloworldXamarin.Droid.Resource.Drawable.abc_text_select_handle_middle_mtrl_light;
+ global::Xamarin.Forms.Platform.Resource.Drawable.abc_text_select_handle_right_mtrl_dark = global::HelloworldXamarin.Droid.Resource.Drawable.abc_text_select_handle_right_mtrl_dark;
+ global::Xamarin.Forms.Platform.Resource.Drawable.abc_text_select_handle_right_mtrl_light = global::HelloworldXamarin.Droid.Resource.Drawable.abc_text_select_handle_right_mtrl_light;
+ global::Xamarin.Forms.Platform.Resource.Drawable.abc_vector_test = global::HelloworldXamarin.Droid.Resource.Drawable.abc_vector_test;
+ global::Xamarin.Forms.Platform.Resource.Drawable.avd_hide_password = global::HelloworldXamarin.Droid.Resource.Drawable.avd_hide_password;
+ global::Xamarin.Forms.Platform.Resource.Drawable.avd_show_password = global::HelloworldXamarin.Droid.Resource.Drawable.avd_show_password;
+ global::Xamarin.Forms.Platform.Resource.Drawable.design_bottom_navigation_item_background = global::HelloworldXamarin.Droid.Resource.Drawable.design_bottom_navigation_item_background;
+ global::Xamarin.Forms.Platform.Resource.Drawable.design_fab_background = global::HelloworldXamarin.Droid.Resource.Drawable.design_fab_background;
+ global::Xamarin.Forms.Platform.Resource.Drawable.design_ic_visibility = global::HelloworldXamarin.Droid.Resource.Drawable.design_ic_visibility;
+ global::Xamarin.Forms.Platform.Resource.Drawable.design_ic_visibility_off = global::HelloworldXamarin.Droid.Resource.Drawable.design_ic_visibility_off;
+ global::Xamarin.Forms.Platform.Resource.Drawable.design_password_eye = global::HelloworldXamarin.Droid.Resource.Drawable.design_password_eye;
+ global::Xamarin.Forms.Platform.Resource.Drawable.design_snackbar_background = global::HelloworldXamarin.Droid.Resource.Drawable.design_snackbar_background;
+ global::Xamarin.Forms.Platform.Resource.Drawable.ic_mtrl_chip_checked_black = global::HelloworldXamarin.Droid.Resource.Drawable.ic_mtrl_chip_checked_black;
+ global::Xamarin.Forms.Platform.Resource.Drawable.ic_mtrl_chip_checked_circle = global::HelloworldXamarin.Droid.Resource.Drawable.ic_mtrl_chip_checked_circle;
+ global::Xamarin.Forms.Platform.Resource.Drawable.ic_mtrl_chip_close_circle = global::HelloworldXamarin.Droid.Resource.Drawable.ic_mtrl_chip_close_circle;
+ global::Xamarin.Forms.Platform.Resource.Drawable.mtrl_snackbar_background = global::HelloworldXamarin.Droid.Resource.Drawable.mtrl_snackbar_background;
+ global::Xamarin.Forms.Platform.Resource.Drawable.mtrl_tabs_default_indicator = global::HelloworldXamarin.Droid.Resource.Drawable.mtrl_tabs_default_indicator;
+ global::Xamarin.Forms.Platform.Resource.Drawable.navigation_empty_icon = global::HelloworldXamarin.Droid.Resource.Drawable.navigation_empty_icon;
+ global::Xamarin.Forms.Platform.Resource.Drawable.notification_action_background = global::HelloworldXamarin.Droid.Resource.Drawable.notification_action_background;
+ global::Xamarin.Forms.Platform.Resource.Drawable.notification_bg = global::HelloworldXamarin.Droid.Resource.Drawable.notification_bg;
+ global::Xamarin.Forms.Platform.Resource.Drawable.notification_bg_low = global::HelloworldXamarin.Droid.Resource.Drawable.notification_bg_low;
+ global::Xamarin.Forms.Platform.Resource.Drawable.notification_bg_low_normal = global::HelloworldXamarin.Droid.Resource.Drawable.notification_bg_low_normal;
+ global::Xamarin.Forms.Platform.Resource.Drawable.notification_bg_low_pressed = global::HelloworldXamarin.Droid.Resource.Drawable.notification_bg_low_pressed;
+ global::Xamarin.Forms.Platform.Resource.Drawable.notification_bg_normal = global::HelloworldXamarin.Droid.Resource.Drawable.notification_bg_normal;
+ global::Xamarin.Forms.Platform.Resource.Drawable.notification_bg_normal_pressed = global::HelloworldXamarin.Droid.Resource.Drawable.notification_bg_normal_pressed;
+ global::Xamarin.Forms.Platform.Resource.Drawable.notification_icon_background = global::HelloworldXamarin.Droid.Resource.Drawable.notification_icon_background;
+ global::Xamarin.Forms.Platform.Resource.Drawable.notification_template_icon_bg = global::HelloworldXamarin.Droid.Resource.Drawable.notification_template_icon_bg;
+ global::Xamarin.Forms.Platform.Resource.Drawable.notification_template_icon_low_bg = global::HelloworldXamarin.Droid.Resource.Drawable.notification_template_icon_low_bg;
+ global::Xamarin.Forms.Platform.Resource.Drawable.notification_tile_bg = global::HelloworldXamarin.Droid.Resource.Drawable.notification_tile_bg;
+ global::Xamarin.Forms.Platform.Resource.Drawable.notify_panel_notification_icon_bg = global::HelloworldXamarin.Droid.Resource.Drawable.notify_panel_notification_icon_bg;
+ global::Xamarin.Forms.Platform.Resource.Drawable.tooltip_frame_dark = global::HelloworldXamarin.Droid.Resource.Drawable.tooltip_frame_dark;
+ global::Xamarin.Forms.Platform.Resource.Drawable.tooltip_frame_light = global::HelloworldXamarin.Droid.Resource.Drawable.tooltip_frame_light;
+ global::Xamarin.Forms.Platform.Resource.Id.action0 = global::HelloworldXamarin.Droid.Resource.Id.action0;
+ global::Xamarin.Forms.Platform.Resource.Id.actions = global::HelloworldXamarin.Droid.Resource.Id.actions;
+ global::Xamarin.Forms.Platform.Resource.Id.action_bar = global::HelloworldXamarin.Droid.Resource.Id.action_bar;
+ global::Xamarin.Forms.Platform.Resource.Id.action_bar_activity_content = global::HelloworldXamarin.Droid.Resource.Id.action_bar_activity_content;
+ global::Xamarin.Forms.Platform.Resource.Id.action_bar_container = global::HelloworldXamarin.Droid.Resource.Id.action_bar_container;
+ global::Xamarin.Forms.Platform.Resource.Id.action_bar_root = global::HelloworldXamarin.Droid.Resource.Id.action_bar_root;
+ global::Xamarin.Forms.Platform.Resource.Id.action_bar_spinner = global::HelloworldXamarin.Droid.Resource.Id.action_bar_spinner;
+ global::Xamarin.Forms.Platform.Resource.Id.action_bar_subtitle = global::HelloworldXamarin.Droid.Resource.Id.action_bar_subtitle;
+ global::Xamarin.Forms.Platform.Resource.Id.action_bar_title = global::HelloworldXamarin.Droid.Resource.Id.action_bar_title;
+ global::Xamarin.Forms.Platform.Resource.Id.action_container = global::HelloworldXamarin.Droid.Resource.Id.action_container;
+ global::Xamarin.Forms.Platform.Resource.Id.action_context_bar = global::HelloworldXamarin.Droid.Resource.Id.action_context_bar;
+ global::Xamarin.Forms.Platform.Resource.Id.action_divider = global::HelloworldXamarin.Droid.Resource.Id.action_divider;
+ global::Xamarin.Forms.Platform.Resource.Id.action_image = global::HelloworldXamarin.Droid.Resource.Id.action_image;
+ global::Xamarin.Forms.Platform.Resource.Id.action_menu_divider = global::HelloworldXamarin.Droid.Resource.Id.action_menu_divider;
+ global::Xamarin.Forms.Platform.Resource.Id.action_menu_presenter = global::HelloworldXamarin.Droid.Resource.Id.action_menu_presenter;
+ global::Xamarin.Forms.Platform.Resource.Id.action_mode_bar = global::HelloworldXamarin.Droid.Resource.Id.action_mode_bar;
+ global::Xamarin.Forms.Platform.Resource.Id.action_mode_bar_stub = global::HelloworldXamarin.Droid.Resource.Id.action_mode_bar_stub;
+ global::Xamarin.Forms.Platform.Resource.Id.action_mode_close_button = global::HelloworldXamarin.Droid.Resource.Id.action_mode_close_button;
+ global::Xamarin.Forms.Platform.Resource.Id.action_text = global::HelloworldXamarin.Droid.Resource.Id.action_text;
+ global::Xamarin.Forms.Platform.Resource.Id.activity_chooser_view_content = global::HelloworldXamarin.Droid.Resource.Id.activity_chooser_view_content;
+ global::Xamarin.Forms.Platform.Resource.Id.add = global::HelloworldXamarin.Droid.Resource.Id.add;
+ global::Xamarin.Forms.Platform.Resource.Id.alertTitle = global::HelloworldXamarin.Droid.Resource.Id.alertTitle;
+ global::Xamarin.Forms.Platform.Resource.Id.all = global::HelloworldXamarin.Droid.Resource.Id.all;
+ global::Xamarin.Forms.Platform.Resource.Id.ALT = global::HelloworldXamarin.Droid.Resource.Id.ALT;
+ global::Xamarin.Forms.Platform.Resource.Id.always = global::HelloworldXamarin.Droid.Resource.Id.always;
+ global::Xamarin.Forms.Platform.Resource.Id.async = global::HelloworldXamarin.Droid.Resource.Id.async;
+ global::Xamarin.Forms.Platform.Resource.Id.auto = global::HelloworldXamarin.Droid.Resource.Id.auto;
+ global::Xamarin.Forms.Platform.Resource.Id.beginning = global::HelloworldXamarin.Droid.Resource.Id.beginning;
+ global::Xamarin.Forms.Platform.Resource.Id.blocking = global::HelloworldXamarin.Droid.Resource.Id.blocking;
+ global::Xamarin.Forms.Platform.Resource.Id.bottom = global::HelloworldXamarin.Droid.Resource.Id.bottom;
+ global::Xamarin.Forms.Platform.Resource.Id.bottomtab_navarea = global::HelloworldXamarin.Droid.Resource.Id.bottomtab_navarea;
+ global::Xamarin.Forms.Platform.Resource.Id.bottomtab_tabbar = global::HelloworldXamarin.Droid.Resource.Id.bottomtab_tabbar;
+ global::Xamarin.Forms.Platform.Resource.Id.buttonPanel = global::HelloworldXamarin.Droid.Resource.Id.buttonPanel;
+ global::Xamarin.Forms.Platform.Resource.Id.cancel_action = global::HelloworldXamarin.Droid.Resource.Id.cancel_action;
+ global::Xamarin.Forms.Platform.Resource.Id.center = global::HelloworldXamarin.Droid.Resource.Id.center;
+ global::Xamarin.Forms.Platform.Resource.Id.center_horizontal = global::HelloworldXamarin.Droid.Resource.Id.center_horizontal;
+ global::Xamarin.Forms.Platform.Resource.Id.center_vertical = global::HelloworldXamarin.Droid.Resource.Id.center_vertical;
+ global::Xamarin.Forms.Platform.Resource.Id.checkbox = global::HelloworldXamarin.Droid.Resource.Id.checkbox;
+ global::Xamarin.Forms.Platform.Resource.Id.chronometer = global::HelloworldXamarin.Droid.Resource.Id.chronometer;
+ global::Xamarin.Forms.Platform.Resource.Id.clip_horizontal = global::HelloworldXamarin.Droid.Resource.Id.clip_horizontal;
+ global::Xamarin.Forms.Platform.Resource.Id.clip_vertical = global::HelloworldXamarin.Droid.Resource.Id.clip_vertical;
+ global::Xamarin.Forms.Platform.Resource.Id.collapseActionView = global::HelloworldXamarin.Droid.Resource.Id.collapseActionView;
+ global::Xamarin.Forms.Platform.Resource.Id.container = global::HelloworldXamarin.Droid.Resource.Id.container;
+ global::Xamarin.Forms.Platform.Resource.Id.content = global::HelloworldXamarin.Droid.Resource.Id.content;
+ global::Xamarin.Forms.Platform.Resource.Id.contentPanel = global::HelloworldXamarin.Droid.Resource.Id.contentPanel;
+ global::Xamarin.Forms.Platform.Resource.Id.coordinator = global::HelloworldXamarin.Droid.Resource.Id.coordinator;
+ global::Xamarin.Forms.Platform.Resource.Id.CTRL = global::HelloworldXamarin.Droid.Resource.Id.CTRL;
+ global::Xamarin.Forms.Platform.Resource.Id.custom = global::HelloworldXamarin.Droid.Resource.Id.custom;
+ global::Xamarin.Forms.Platform.Resource.Id.customPanel = global::HelloworldXamarin.Droid.Resource.Id.customPanel;
+ global::Xamarin.Forms.Platform.Resource.Id.decor_content_parent = global::HelloworldXamarin.Droid.Resource.Id.decor_content_parent;
+ global::Xamarin.Forms.Platform.Resource.Id.default_activity_button = global::HelloworldXamarin.Droid.Resource.Id.default_activity_button;
+ global::Xamarin.Forms.Platform.Resource.Id.design_bottom_sheet = global::HelloworldXamarin.Droid.Resource.Id.design_bottom_sheet;
+ global::Xamarin.Forms.Platform.Resource.Id.design_menu_item_action_area = global::HelloworldXamarin.Droid.Resource.Id.design_menu_item_action_area;
+ global::Xamarin.Forms.Platform.Resource.Id.design_menu_item_action_area_stub = global::HelloworldXamarin.Droid.Resource.Id.design_menu_item_action_area_stub;
+ global::Xamarin.Forms.Platform.Resource.Id.design_menu_item_text = global::HelloworldXamarin.Droid.Resource.Id.design_menu_item_text;
+ global::Xamarin.Forms.Platform.Resource.Id.design_navigation_view = global::HelloworldXamarin.Droid.Resource.Id.design_navigation_view;
+ global::Xamarin.Forms.Platform.Resource.Id.disableHome = global::HelloworldXamarin.Droid.Resource.Id.disableHome;
+ global::Xamarin.Forms.Platform.Resource.Id.edit_query = global::HelloworldXamarin.Droid.Resource.Id.edit_query;
+ global::Xamarin.Forms.Platform.Resource.Id.end = global::HelloworldXamarin.Droid.Resource.Id.end;
+ global::Xamarin.Forms.Platform.Resource.Id.end_padder = global::HelloworldXamarin.Droid.Resource.Id.end_padder;
+ global::Xamarin.Forms.Platform.Resource.Id.enterAlways = global::HelloworldXamarin.Droid.Resource.Id.enterAlways;
+ global::Xamarin.Forms.Platform.Resource.Id.enterAlwaysCollapsed = global::HelloworldXamarin.Droid.Resource.Id.enterAlwaysCollapsed;
+ global::Xamarin.Forms.Platform.Resource.Id.exitUntilCollapsed = global::HelloworldXamarin.Droid.Resource.Id.exitUntilCollapsed;
+ global::Xamarin.Forms.Platform.Resource.Id.expanded_menu = global::HelloworldXamarin.Droid.Resource.Id.expanded_menu;
+ global::Xamarin.Forms.Platform.Resource.Id.expand_activities_button = global::HelloworldXamarin.Droid.Resource.Id.expand_activities_button;
+ global::Xamarin.Forms.Platform.Resource.Id.fill = global::HelloworldXamarin.Droid.Resource.Id.fill;
+ global::Xamarin.Forms.Platform.Resource.Id.filled = global::HelloworldXamarin.Droid.Resource.Id.filled;
+ global::Xamarin.Forms.Platform.Resource.Id.fill_horizontal = global::HelloworldXamarin.Droid.Resource.Id.fill_horizontal;
+ global::Xamarin.Forms.Platform.Resource.Id.fill_vertical = global::HelloworldXamarin.Droid.Resource.Id.fill_vertical;
+ global::Xamarin.Forms.Platform.Resource.Id.@fixed = global::HelloworldXamarin.Droid.Resource.Id.@fixed;
+ global::Xamarin.Forms.Platform.Resource.Id.flyoutcontent_appbar = global::HelloworldXamarin.Droid.Resource.Id.flyoutcontent_appbar;
+ global::Xamarin.Forms.Platform.Resource.Id.flyoutcontent_recycler = global::HelloworldXamarin.Droid.Resource.Id.flyoutcontent_recycler;
+ global::Xamarin.Forms.Platform.Resource.Id.forever = global::HelloworldXamarin.Droid.Resource.Id.forever;
+ global::Xamarin.Forms.Platform.Resource.Id.FUNCTION = global::HelloworldXamarin.Droid.Resource.Id.FUNCTION;
+ global::Xamarin.Forms.Platform.Resource.Id.ghost_view = global::HelloworldXamarin.Droid.Resource.Id.ghost_view;
+ global::Xamarin.Forms.Platform.Resource.Id.group_divider = global::HelloworldXamarin.Droid.Resource.Id.group_divider;
+ global::Xamarin.Forms.Platform.Resource.Id.home = global::HelloworldXamarin.Droid.Resource.Id.home;
+ global::Xamarin.Forms.Platform.Resource.Id.homeAsUp = global::HelloworldXamarin.Droid.Resource.Id.homeAsUp;
+ global::Xamarin.Forms.Platform.Resource.Id.icon = global::HelloworldXamarin.Droid.Resource.Id.icon;
+ global::Xamarin.Forms.Platform.Resource.Id.icon_group = global::HelloworldXamarin.Droid.Resource.Id.icon_group;
+ global::Xamarin.Forms.Platform.Resource.Id.ifRoom = global::HelloworldXamarin.Droid.Resource.Id.ifRoom;
+ global::Xamarin.Forms.Platform.Resource.Id.image = global::HelloworldXamarin.Droid.Resource.Id.image;
+ global::Xamarin.Forms.Platform.Resource.Id.info = global::HelloworldXamarin.Droid.Resource.Id.info;
+ global::Xamarin.Forms.Platform.Resource.Id.italic = global::HelloworldXamarin.Droid.Resource.Id.italic;
+ global::Xamarin.Forms.Platform.Resource.Id.item_touch_helper_previous_elevation = global::HelloworldXamarin.Droid.Resource.Id.item_touch_helper_previous_elevation;
+ global::Xamarin.Forms.Platform.Resource.Id.labeled = global::HelloworldXamarin.Droid.Resource.Id.labeled;
+ global::Xamarin.Forms.Platform.Resource.Id.largeLabel = global::HelloworldXamarin.Droid.Resource.Id.largeLabel;
+ global::Xamarin.Forms.Platform.Resource.Id.left = global::HelloworldXamarin.Droid.Resource.Id.left;
+ global::Xamarin.Forms.Platform.Resource.Id.line1 = global::HelloworldXamarin.Droid.Resource.Id.line1;
+ global::Xamarin.Forms.Platform.Resource.Id.line3 = global::HelloworldXamarin.Droid.Resource.Id.line3;
+ global::Xamarin.Forms.Platform.Resource.Id.listMode = global::HelloworldXamarin.Droid.Resource.Id.listMode;
+ global::Xamarin.Forms.Platform.Resource.Id.list_item = global::HelloworldXamarin.Droid.Resource.Id.list_item;
+ global::Xamarin.Forms.Platform.Resource.Id.main_appbar = global::HelloworldXamarin.Droid.Resource.Id.main_appbar;
+ global::Xamarin.Forms.Platform.Resource.Id.main_tablayout = global::HelloworldXamarin.Droid.Resource.Id.main_tablayout;
+ global::Xamarin.Forms.Platform.Resource.Id.main_toolbar = global::HelloworldXamarin.Droid.Resource.Id.main_toolbar;
+ global::Xamarin.Forms.Platform.Resource.Id.main_viewpager = global::HelloworldXamarin.Droid.Resource.Id.main_viewpager;
+ global::Xamarin.Forms.Platform.Resource.Id.masked = global::HelloworldXamarin.Droid.Resource.Id.masked;
+ global::Xamarin.Forms.Platform.Resource.Id.media_actions = global::HelloworldXamarin.Droid.Resource.Id.media_actions;
+ global::Xamarin.Forms.Platform.Resource.Id.message = global::HelloworldXamarin.Droid.Resource.Id.message;
+ global::Xamarin.Forms.Platform.Resource.Id.META = global::HelloworldXamarin.Droid.Resource.Id.META;
+ global::Xamarin.Forms.Platform.Resource.Id.middle = global::HelloworldXamarin.Droid.Resource.Id.middle;
+ global::Xamarin.Forms.Platform.Resource.Id.mini = global::HelloworldXamarin.Droid.Resource.Id.mini;
+ global::Xamarin.Forms.Platform.Resource.Id.mtrl_child_content_container = global::HelloworldXamarin.Droid.Resource.Id.mtrl_child_content_container;
+ global::Xamarin.Forms.Platform.Resource.Id.mtrl_internal_children_alpha_tag = global::HelloworldXamarin.Droid.Resource.Id.mtrl_internal_children_alpha_tag;
+ global::Xamarin.Forms.Platform.Resource.Id.multiply = global::HelloworldXamarin.Droid.Resource.Id.multiply;
+ global::Xamarin.Forms.Platform.Resource.Id.navigation_header_container = global::HelloworldXamarin.Droid.Resource.Id.navigation_header_container;
+ global::Xamarin.Forms.Platform.Resource.Id.never = global::HelloworldXamarin.Droid.Resource.Id.never;
+ global::Xamarin.Forms.Platform.Resource.Id.none = global::HelloworldXamarin.Droid.Resource.Id.none;
+ global::Xamarin.Forms.Platform.Resource.Id.normal = global::HelloworldXamarin.Droid.Resource.Id.normal;
+ global::Xamarin.Forms.Platform.Resource.Id.notification_background = global::HelloworldXamarin.Droid.Resource.Id.notification_background;
+ global::Xamarin.Forms.Platform.Resource.Id.notification_main_column = global::HelloworldXamarin.Droid.Resource.Id.notification_main_column;
+ global::Xamarin.Forms.Platform.Resource.Id.notification_main_column_container = global::HelloworldXamarin.Droid.Resource.Id.notification_main_column_container;
+ global::Xamarin.Forms.Platform.Resource.Id.outline = global::HelloworldXamarin.Droid.Resource.Id.outline;
+ global::Xamarin.Forms.Platform.Resource.Id.parallax = global::HelloworldXamarin.Droid.Resource.Id.parallax;
+ global::Xamarin.Forms.Platform.Resource.Id.parentPanel = global::HelloworldXamarin.Droid.Resource.Id.parentPanel;
+ global::Xamarin.Forms.Platform.Resource.Id.parent_matrix = global::HelloworldXamarin.Droid.Resource.Id.parent_matrix;
+ global::Xamarin.Forms.Platform.Resource.Id.pin = global::HelloworldXamarin.Droid.Resource.Id.pin;
+ global::Xamarin.Forms.Platform.Resource.Id.progress_circular = global::HelloworldXamarin.Droid.Resource.Id.progress_circular;
+ global::Xamarin.Forms.Platform.Resource.Id.progress_horizontal = global::HelloworldXamarin.Droid.Resource.Id.progress_horizontal;
+ global::Xamarin.Forms.Platform.Resource.Id.radio = global::HelloworldXamarin.Droid.Resource.Id.radio;
+ global::Xamarin.Forms.Platform.Resource.Id.right = global::HelloworldXamarin.Droid.Resource.Id.right;
+ global::Xamarin.Forms.Platform.Resource.Id.right_icon = global::HelloworldXamarin.Droid.Resource.Id.right_icon;
+ global::Xamarin.Forms.Platform.Resource.Id.right_side = global::HelloworldXamarin.Droid.Resource.Id.right_side;
+ global::Xamarin.Forms.Platform.Resource.Id.save_image_matrix = global::HelloworldXamarin.Droid.Resource.Id.save_image_matrix;
+ global::Xamarin.Forms.Platform.Resource.Id.save_non_transition_alpha = global::HelloworldXamarin.Droid.Resource.Id.save_non_transition_alpha;
+ global::Xamarin.Forms.Platform.Resource.Id.save_scale_type = global::HelloworldXamarin.Droid.Resource.Id.save_scale_type;
+ global::Xamarin.Forms.Platform.Resource.Id.screen = global::HelloworldXamarin.Droid.Resource.Id.screen;
+ global::Xamarin.Forms.Platform.Resource.Id.scroll = global::HelloworldXamarin.Droid.Resource.Id.scroll;
+ global::Xamarin.Forms.Platform.Resource.Id.scrollable = global::HelloworldXamarin.Droid.Resource.Id.scrollable;
+ global::Xamarin.Forms.Platform.Resource.Id.scrollIndicatorDown = global::HelloworldXamarin.Droid.Resource.Id.scrollIndicatorDown;
+ global::Xamarin.Forms.Platform.Resource.Id.scrollIndicatorUp = global::HelloworldXamarin.Droid.Resource.Id.scrollIndicatorUp;
+ global::Xamarin.Forms.Platform.Resource.Id.scrollView = global::HelloworldXamarin.Droid.Resource.Id.scrollView;
+ global::Xamarin.Forms.Platform.Resource.Id.search_badge = global::HelloworldXamarin.Droid.Resource.Id.search_badge;
+ global::Xamarin.Forms.Platform.Resource.Id.search_bar = global::HelloworldXamarin.Droid.Resource.Id.search_bar;
+ global::Xamarin.Forms.Platform.Resource.Id.search_button = global::HelloworldXamarin.Droid.Resource.Id.search_button;
+ global::Xamarin.Forms.Platform.Resource.Id.search_close_btn = global::HelloworldXamarin.Droid.Resource.Id.search_close_btn;
+ global::Xamarin.Forms.Platform.Resource.Id.search_edit_frame = global::HelloworldXamarin.Droid.Resource.Id.search_edit_frame;
+ global::Xamarin.Forms.Platform.Resource.Id.search_go_btn = global::HelloworldXamarin.Droid.Resource.Id.search_go_btn;
+ global::Xamarin.Forms.Platform.Resource.Id.search_mag_icon = global::HelloworldXamarin.Droid.Resource.Id.search_mag_icon;
+ global::Xamarin.Forms.Platform.Resource.Id.search_plate = global::HelloworldXamarin.Droid.Resource.Id.search_plate;
+ global::Xamarin.Forms.Platform.Resource.Id.search_src_text = global::HelloworldXamarin.Droid.Resource.Id.search_src_text;
+ global::Xamarin.Forms.Platform.Resource.Id.search_voice_btn = global::HelloworldXamarin.Droid.Resource.Id.search_voice_btn;
+ global::Xamarin.Forms.Platform.Resource.Id.selected = global::HelloworldXamarin.Droid.Resource.Id.selected;
+ global::Xamarin.Forms.Platform.Resource.Id.select_dialog_listview = global::HelloworldXamarin.Droid.Resource.Id.select_dialog_listview;
+ global::Xamarin.Forms.Platform.Resource.Id.shellcontent_appbar = global::HelloworldXamarin.Droid.Resource.Id.shellcontent_appbar;
+ global::Xamarin.Forms.Platform.Resource.Id.shellcontent_toolbar = global::HelloworldXamarin.Droid.Resource.Id.shellcontent_toolbar;
+ global::Xamarin.Forms.Platform.Resource.Id.SHIFT = global::HelloworldXamarin.Droid.Resource.Id.SHIFT;
+ global::Xamarin.Forms.Platform.Resource.Id.shortcut = global::HelloworldXamarin.Droid.Resource.Id.shortcut;
+ global::Xamarin.Forms.Platform.Resource.Id.showCustom = global::HelloworldXamarin.Droid.Resource.Id.showCustom;
+ global::Xamarin.Forms.Platform.Resource.Id.showHome = global::HelloworldXamarin.Droid.Resource.Id.showHome;
+ global::Xamarin.Forms.Platform.Resource.Id.showTitle = global::HelloworldXamarin.Droid.Resource.Id.showTitle;
+ global::Xamarin.Forms.Platform.Resource.Id.smallLabel = global::HelloworldXamarin.Droid.Resource.Id.smallLabel;
+ global::Xamarin.Forms.Platform.Resource.Id.snackbar_action = global::HelloworldXamarin.Droid.Resource.Id.snackbar_action;
+ global::Xamarin.Forms.Platform.Resource.Id.snackbar_text = global::HelloworldXamarin.Droid.Resource.Id.snackbar_text;
+ global::Xamarin.Forms.Platform.Resource.Id.snap = global::HelloworldXamarin.Droid.Resource.Id.snap;
+ global::Xamarin.Forms.Platform.Resource.Id.snapMargins = global::HelloworldXamarin.Droid.Resource.Id.snapMargins;
+ global::Xamarin.Forms.Platform.Resource.Id.spacer = global::HelloworldXamarin.Droid.Resource.Id.spacer;
+ global::Xamarin.Forms.Platform.Resource.Id.split_action_bar = global::HelloworldXamarin.Droid.Resource.Id.split_action_bar;
+ global::Xamarin.Forms.Platform.Resource.Id.src_atop = global::HelloworldXamarin.Droid.Resource.Id.src_atop;
+ global::Xamarin.Forms.Platform.Resource.Id.src_in = global::HelloworldXamarin.Droid.Resource.Id.src_in;
+ global::Xamarin.Forms.Platform.Resource.Id.src_over = global::HelloworldXamarin.Droid.Resource.Id.src_over;
+ global::Xamarin.Forms.Platform.Resource.Id.start = global::HelloworldXamarin.Droid.Resource.Id.start;
+ global::Xamarin.Forms.Platform.Resource.Id.status_bar_latest_event_content = global::HelloworldXamarin.Droid.Resource.Id.status_bar_latest_event_content;
+ global::Xamarin.Forms.Platform.Resource.Id.stretch = global::HelloworldXamarin.Droid.Resource.Id.stretch;
+ global::Xamarin.Forms.Platform.Resource.Id.submenuarrow = global::HelloworldXamarin.Droid.Resource.Id.submenuarrow;
+ global::Xamarin.Forms.Platform.Resource.Id.submit_area = global::HelloworldXamarin.Droid.Resource.Id.submit_area;
+ global::Xamarin.Forms.Platform.Resource.Id.SYM = global::HelloworldXamarin.Droid.Resource.Id.SYM;
+ global::Xamarin.Forms.Platform.Resource.Id.tabMode = global::HelloworldXamarin.Droid.Resource.Id.tabMode;
+ global::Xamarin.Forms.Platform.Resource.Id.tag_transition_group = global::HelloworldXamarin.Droid.Resource.Id.tag_transition_group;
+ global::Xamarin.Forms.Platform.Resource.Id.tag_unhandled_key_event_manager = global::HelloworldXamarin.Droid.Resource.Id.tag_unhandled_key_event_manager;
+ global::Xamarin.Forms.Platform.Resource.Id.tag_unhandled_key_listeners = global::HelloworldXamarin.Droid.Resource.Id.tag_unhandled_key_listeners;
+ global::Xamarin.Forms.Platform.Resource.Id.text = global::HelloworldXamarin.Droid.Resource.Id.text;
+ global::Xamarin.Forms.Platform.Resource.Id.text2 = global::HelloworldXamarin.Droid.Resource.Id.text2;
+ global::Xamarin.Forms.Platform.Resource.Id.textinput_counter = global::HelloworldXamarin.Droid.Resource.Id.textinput_counter;
+ global::Xamarin.Forms.Platform.Resource.Id.textinput_error = global::HelloworldXamarin.Droid.Resource.Id.textinput_error;
+ global::Xamarin.Forms.Platform.Resource.Id.textinput_helper_text = global::HelloworldXamarin.Droid.Resource.Id.textinput_helper_text;
+ global::Xamarin.Forms.Platform.Resource.Id.textSpacerNoButtons = global::HelloworldXamarin.Droid.Resource.Id.textSpacerNoButtons;
+ global::Xamarin.Forms.Platform.Resource.Id.textSpacerNoTitle = global::HelloworldXamarin.Droid.Resource.Id.textSpacerNoTitle;
+ global::Xamarin.Forms.Platform.Resource.Id.textStart = global::HelloworldXamarin.Droid.Resource.Id.textStart;
+ global::Xamarin.Forms.Platform.Resource.Id.text_input_password_toggle = global::HelloworldXamarin.Droid.Resource.Id.text_input_password_toggle;
+ global::Xamarin.Forms.Platform.Resource.Id.time = global::HelloworldXamarin.Droid.Resource.Id.time;
+ global::Xamarin.Forms.Platform.Resource.Id.title = global::HelloworldXamarin.Droid.Resource.Id.title;
+ global::Xamarin.Forms.Platform.Resource.Id.titleDividerNoCustom = global::HelloworldXamarin.Droid.Resource.Id.titleDividerNoCustom;
+ global::Xamarin.Forms.Platform.Resource.Id.title_template = global::HelloworldXamarin.Droid.Resource.Id.title_template;
+ global::Xamarin.Forms.Platform.Resource.Id.top = global::HelloworldXamarin.Droid.Resource.Id.top;
+ global::Xamarin.Forms.Platform.Resource.Id.topPanel = global::HelloworldXamarin.Droid.Resource.Id.topPanel;
+ global::Xamarin.Forms.Platform.Resource.Id.touch_outside = global::HelloworldXamarin.Droid.Resource.Id.touch_outside;
+ global::Xamarin.Forms.Platform.Resource.Id.transition_current_scene = global::HelloworldXamarin.Droid.Resource.Id.transition_current_scene;
+ global::Xamarin.Forms.Platform.Resource.Id.transition_layout_save = global::HelloworldXamarin.Droid.Resource.Id.transition_layout_save;
+ global::Xamarin.Forms.Platform.Resource.Id.transition_position = global::HelloworldXamarin.Droid.Resource.Id.transition_position;
+ global::Xamarin.Forms.Platform.Resource.Id.transition_scene_layoutid_cache = global::HelloworldXamarin.Droid.Resource.Id.transition_scene_layoutid_cache;
+ global::Xamarin.Forms.Platform.Resource.Id.transition_transform = global::HelloworldXamarin.Droid.Resource.Id.transition_transform;
+ global::Xamarin.Forms.Platform.Resource.Id.uniform = global::HelloworldXamarin.Droid.Resource.Id.uniform;
+ global::Xamarin.Forms.Platform.Resource.Id.unlabeled = global::HelloworldXamarin.Droid.Resource.Id.unlabeled;
+ global::Xamarin.Forms.Platform.Resource.Id.up = global::HelloworldXamarin.Droid.Resource.Id.up;
+ global::Xamarin.Forms.Platform.Resource.Id.useLogo = global::HelloworldXamarin.Droid.Resource.Id.useLogo;
+ global::Xamarin.Forms.Platform.Resource.Id.view_offset_helper = global::HelloworldXamarin.Droid.Resource.Id.view_offset_helper;
+ global::Xamarin.Forms.Platform.Resource.Id.visible = global::HelloworldXamarin.Droid.Resource.Id.visible;
+ global::Xamarin.Forms.Platform.Resource.Id.withText = global::HelloworldXamarin.Droid.Resource.Id.withText;
+ global::Xamarin.Forms.Platform.Resource.Id.wrap_content = global::HelloworldXamarin.Droid.Resource.Id.wrap_content;
+ global::Xamarin.Forms.Platform.Resource.Integer.abc_config_activityDefaultDur = global::HelloworldXamarin.Droid.Resource.Integer.abc_config_activityDefaultDur;
+ global::Xamarin.Forms.Platform.Resource.Integer.abc_config_activityShortDur = global::HelloworldXamarin.Droid.Resource.Integer.abc_config_activityShortDur;
+ global::Xamarin.Forms.Platform.Resource.Integer.app_bar_elevation_anim_duration = global::HelloworldXamarin.Droid.Resource.Integer.app_bar_elevation_anim_duration;
+ global::Xamarin.Forms.Platform.Resource.Integer.bottom_sheet_slide_duration = global::HelloworldXamarin.Droid.Resource.Integer.bottom_sheet_slide_duration;
+ global::Xamarin.Forms.Platform.Resource.Integer.cancel_button_image_alpha = global::HelloworldXamarin.Droid.Resource.Integer.cancel_button_image_alpha;
+ global::Xamarin.Forms.Platform.Resource.Integer.config_tooltipAnimTime = global::HelloworldXamarin.Droid.Resource.Integer.config_tooltipAnimTime;
+ global::Xamarin.Forms.Platform.Resource.Integer.design_snackbar_text_max_lines = global::HelloworldXamarin.Droid.Resource.Integer.design_snackbar_text_max_lines;
+ global::Xamarin.Forms.Platform.Resource.Integer.design_tab_indicator_anim_duration_ms = global::HelloworldXamarin.Droid.Resource.Integer.design_tab_indicator_anim_duration_ms;
+ global::Xamarin.Forms.Platform.Resource.Integer.hide_password_duration = global::HelloworldXamarin.Droid.Resource.Integer.hide_password_duration;
+ global::Xamarin.Forms.Platform.Resource.Integer.mtrl_btn_anim_delay_ms = global::HelloworldXamarin.Droid.Resource.Integer.mtrl_btn_anim_delay_ms;
+ global::Xamarin.Forms.Platform.Resource.Integer.mtrl_btn_anim_duration_ms = global::HelloworldXamarin.Droid.Resource.Integer.mtrl_btn_anim_duration_ms;
+ global::Xamarin.Forms.Platform.Resource.Integer.mtrl_chip_anim_duration = global::HelloworldXamarin.Droid.Resource.Integer.mtrl_chip_anim_duration;
+ global::Xamarin.Forms.Platform.Resource.Integer.mtrl_tab_indicator_anim_duration_ms = global::HelloworldXamarin.Droid.Resource.Integer.mtrl_tab_indicator_anim_duration_ms;
+ global::Xamarin.Forms.Platform.Resource.Integer.show_password_duration = global::HelloworldXamarin.Droid.Resource.Integer.show_password_duration;
+ global::Xamarin.Forms.Platform.Resource.Integer.status_bar_notification_info_maxnum = global::HelloworldXamarin.Droid.Resource.Integer.status_bar_notification_info_maxnum;
+ global::Xamarin.Forms.Platform.Resource.Interpolator.mtrl_fast_out_linear_in = global::HelloworldXamarin.Droid.Resource.Interpolator.mtrl_fast_out_linear_in;
+ global::Xamarin.Forms.Platform.Resource.Interpolator.mtrl_fast_out_slow_in = global::HelloworldXamarin.Droid.Resource.Interpolator.mtrl_fast_out_slow_in;
+ global::Xamarin.Forms.Platform.Resource.Interpolator.mtrl_linear = global::HelloworldXamarin.Droid.Resource.Interpolator.mtrl_linear;
+ global::Xamarin.Forms.Platform.Resource.Interpolator.mtrl_linear_out_slow_in = global::HelloworldXamarin.Droid.Resource.Interpolator.mtrl_linear_out_slow_in;
+ global::Xamarin.Forms.Platform.Resource.Layout.abc_action_bar_title_item = global::HelloworldXamarin.Droid.Resource.Layout.abc_action_bar_title_item;
+ global::Xamarin.Forms.Platform.Resource.Layout.abc_action_bar_up_container = global::HelloworldXamarin.Droid.Resource.Layout.abc_action_bar_up_container;
+ global::Xamarin.Forms.Platform.Resource.Layout.abc_action_menu_item_layout = global::HelloworldXamarin.Droid.Resource.Layout.abc_action_menu_item_layout;
+ global::Xamarin.Forms.Platform.Resource.Layout.abc_action_menu_layout = global::HelloworldXamarin.Droid.Resource.Layout.abc_action_menu_layout;
+ global::Xamarin.Forms.Platform.Resource.Layout.abc_action_mode_bar = global::HelloworldXamarin.Droid.Resource.Layout.abc_action_mode_bar;
+ global::Xamarin.Forms.Platform.Resource.Layout.abc_action_mode_close_item_material = global::HelloworldXamarin.Droid.Resource.Layout.abc_action_mode_close_item_material;
+ global::Xamarin.Forms.Platform.Resource.Layout.abc_activity_chooser_view = global::HelloworldXamarin.Droid.Resource.Layout.abc_activity_chooser_view;
+ global::Xamarin.Forms.Platform.Resource.Layout.abc_activity_chooser_view_list_item = global::HelloworldXamarin.Droid.Resource.Layout.abc_activity_chooser_view_list_item;
+ global::Xamarin.Forms.Platform.Resource.Layout.abc_alert_dialog_button_bar_material = global::HelloworldXamarin.Droid.Resource.Layout.abc_alert_dialog_button_bar_material;
+ global::Xamarin.Forms.Platform.Resource.Layout.abc_alert_dialog_material = global::HelloworldXamarin.Droid.Resource.Layout.abc_alert_dialog_material;
+ global::Xamarin.Forms.Platform.Resource.Layout.abc_alert_dialog_title_material = global::HelloworldXamarin.Droid.Resource.Layout.abc_alert_dialog_title_material;
+ global::Xamarin.Forms.Platform.Resource.Layout.abc_cascading_menu_item_layout = global::HelloworldXamarin.Droid.Resource.Layout.abc_cascading_menu_item_layout;
+ global::Xamarin.Forms.Platform.Resource.Layout.abc_dialog_title_material = global::HelloworldXamarin.Droid.Resource.Layout.abc_dialog_title_material;
+ global::Xamarin.Forms.Platform.Resource.Layout.abc_expanded_menu_layout = global::HelloworldXamarin.Droid.Resource.Layout.abc_expanded_menu_layout;
+ global::Xamarin.Forms.Platform.Resource.Layout.abc_list_menu_item_checkbox = global::HelloworldXamarin.Droid.Resource.Layout.abc_list_menu_item_checkbox;
+ global::Xamarin.Forms.Platform.Resource.Layout.abc_list_menu_item_icon = global::HelloworldXamarin.Droid.Resource.Layout.abc_list_menu_item_icon;
+ global::Xamarin.Forms.Platform.Resource.Layout.abc_list_menu_item_layout = global::HelloworldXamarin.Droid.Resource.Layout.abc_list_menu_item_layout;
+ global::Xamarin.Forms.Platform.Resource.Layout.abc_list_menu_item_radio = global::HelloworldXamarin.Droid.Resource.Layout.abc_list_menu_item_radio;
+ global::Xamarin.Forms.Platform.Resource.Layout.abc_popup_menu_header_item_layout = global::HelloworldXamarin.Droid.Resource.Layout.abc_popup_menu_header_item_layout;
+ global::Xamarin.Forms.Platform.Resource.Layout.abc_popup_menu_item_layout = global::HelloworldXamarin.Droid.Resource.Layout.abc_popup_menu_item_layout;
+ global::Xamarin.Forms.Platform.Resource.Layout.abc_screen_content_include = global::HelloworldXamarin.Droid.Resource.Layout.abc_screen_content_include;
+ global::Xamarin.Forms.Platform.Resource.Layout.abc_screen_simple = global::HelloworldXamarin.Droid.Resource.Layout.abc_screen_simple;
+ global::Xamarin.Forms.Platform.Resource.Layout.abc_screen_simple_overlay_action_mode = global::HelloworldXamarin.Droid.Resource.Layout.abc_screen_simple_overlay_action_mode;
+ global::Xamarin.Forms.Platform.Resource.Layout.abc_screen_toolbar = global::HelloworldXamarin.Droid.Resource.Layout.abc_screen_toolbar;
+ global::Xamarin.Forms.Platform.Resource.Layout.abc_search_dropdown_item_icons_2line = global::HelloworldXamarin.Droid.Resource.Layout.abc_search_dropdown_item_icons_2line;
+ global::Xamarin.Forms.Platform.Resource.Layout.abc_search_view = global::HelloworldXamarin.Droid.Resource.Layout.abc_search_view;
+ global::Xamarin.Forms.Platform.Resource.Layout.abc_select_dialog_material = global::HelloworldXamarin.Droid.Resource.Layout.abc_select_dialog_material;
+ global::Xamarin.Forms.Platform.Resource.Layout.abc_tooltip = global::HelloworldXamarin.Droid.Resource.Layout.abc_tooltip;
+ global::Xamarin.Forms.Platform.Resource.Layout.BottomTabLayout = global::HelloworldXamarin.Droid.Resource.Layout.BottomTabLayout;
+ global::Xamarin.Forms.Platform.Resource.Layout.design_bottom_navigation_item = global::HelloworldXamarin.Droid.Resource.Layout.design_bottom_navigation_item;
+ global::Xamarin.Forms.Platform.Resource.Layout.design_bottom_sheet_dialog = global::HelloworldXamarin.Droid.Resource.Layout.design_bottom_sheet_dialog;
+ global::Xamarin.Forms.Platform.Resource.Layout.design_layout_snackbar = global::HelloworldXamarin.Droid.Resource.Layout.design_layout_snackbar;
+ global::Xamarin.Forms.Platform.Resource.Layout.design_layout_snackbar_include = global::HelloworldXamarin.Droid.Resource.Layout.design_layout_snackbar_include;
+ global::Xamarin.Forms.Platform.Resource.Layout.design_layout_tab_icon = global::HelloworldXamarin.Droid.Resource.Layout.design_layout_tab_icon;
+ global::Xamarin.Forms.Platform.Resource.Layout.design_layout_tab_text = global::HelloworldXamarin.Droid.Resource.Layout.design_layout_tab_text;
+ global::Xamarin.Forms.Platform.Resource.Layout.design_menu_item_action_area = global::HelloworldXamarin.Droid.Resource.Layout.design_menu_item_action_area;
+ global::Xamarin.Forms.Platform.Resource.Layout.design_navigation_item = global::HelloworldXamarin.Droid.Resource.Layout.design_navigation_item;
+ global::Xamarin.Forms.Platform.Resource.Layout.design_navigation_item_header = global::HelloworldXamarin.Droid.Resource.Layout.design_navigation_item_header;
+ global::Xamarin.Forms.Platform.Resource.Layout.design_navigation_item_separator = global::HelloworldXamarin.Droid.Resource.Layout.design_navigation_item_separator;
+ global::Xamarin.Forms.Platform.Resource.Layout.design_navigation_item_subheader = global::HelloworldXamarin.Droid.Resource.Layout.design_navigation_item_subheader;
+ global::Xamarin.Forms.Platform.Resource.Layout.design_navigation_menu = global::HelloworldXamarin.Droid.Resource.Layout.design_navigation_menu;
+ global::Xamarin.Forms.Platform.Resource.Layout.design_navigation_menu_item = global::HelloworldXamarin.Droid.Resource.Layout.design_navigation_menu_item;
+ global::Xamarin.Forms.Platform.Resource.Layout.design_text_input_password_icon = global::HelloworldXamarin.Droid.Resource.Layout.design_text_input_password_icon;
+ global::Xamarin.Forms.Platform.Resource.Layout.FlyoutContent = global::HelloworldXamarin.Droid.Resource.Layout.FlyoutContent;
+ global::Xamarin.Forms.Platform.Resource.Layout.mtrl_layout_snackbar = global::HelloworldXamarin.Droid.Resource.Layout.mtrl_layout_snackbar;
+ global::Xamarin.Forms.Platform.Resource.Layout.mtrl_layout_snackbar_include = global::HelloworldXamarin.Droid.Resource.Layout.mtrl_layout_snackbar_include;
+ global::Xamarin.Forms.Platform.Resource.Layout.notification_action = global::HelloworldXamarin.Droid.Resource.Layout.notification_action;
+ global::Xamarin.Forms.Platform.Resource.Layout.notification_action_tombstone = global::HelloworldXamarin.Droid.Resource.Layout.notification_action_tombstone;
+ global::Xamarin.Forms.Platform.Resource.Layout.notification_media_action = global::HelloworldXamarin.Droid.Resource.Layout.notification_media_action;
+ global::Xamarin.Forms.Platform.Resource.Layout.notification_media_cancel_action = global::HelloworldXamarin.Droid.Resource.Layout.notification_media_cancel_action;
+ global::Xamarin.Forms.Platform.Resource.Layout.notification_template_big_media = global::HelloworldXamarin.Droid.Resource.Layout.notification_template_big_media;
+ global::Xamarin.Forms.Platform.Resource.Layout.notification_template_big_media_custom = global::HelloworldXamarin.Droid.Resource.Layout.notification_template_big_media_custom;
+ global::Xamarin.Forms.Platform.Resource.Layout.notification_template_big_media_narrow = global::HelloworldXamarin.Droid.Resource.Layout.notification_template_big_media_narrow;
+ global::Xamarin.Forms.Platform.Resource.Layout.notification_template_big_media_narrow_custom = global::HelloworldXamarin.Droid.Resource.Layout.notification_template_big_media_narrow_custom;
+ global::Xamarin.Forms.Platform.Resource.Layout.notification_template_custom_big = global::HelloworldXamarin.Droid.Resource.Layout.notification_template_custom_big;
+ global::Xamarin.Forms.Platform.Resource.Layout.notification_template_icon_group = global::HelloworldXamarin.Droid.Resource.Layout.notification_template_icon_group;
+ global::Xamarin.Forms.Platform.Resource.Layout.notification_template_lines_media = global::HelloworldXamarin.Droid.Resource.Layout.notification_template_lines_media;
+ global::Xamarin.Forms.Platform.Resource.Layout.notification_template_media = global::HelloworldXamarin.Droid.Resource.Layout.notification_template_media;
+ global::Xamarin.Forms.Platform.Resource.Layout.notification_template_media_custom = global::HelloworldXamarin.Droid.Resource.Layout.notification_template_media_custom;
+ global::Xamarin.Forms.Platform.Resource.Layout.notification_template_part_chronometer = global::HelloworldXamarin.Droid.Resource.Layout.notification_template_part_chronometer;
+ global::Xamarin.Forms.Platform.Resource.Layout.notification_template_part_time = global::HelloworldXamarin.Droid.Resource.Layout.notification_template_part_time;
+ global::Xamarin.Forms.Platform.Resource.Layout.RootLayout = global::HelloworldXamarin.Droid.Resource.Layout.RootLayout;
+ global::Xamarin.Forms.Platform.Resource.Layout.select_dialog_item_material = global::HelloworldXamarin.Droid.Resource.Layout.select_dialog_item_material;
+ global::Xamarin.Forms.Platform.Resource.Layout.select_dialog_multichoice_material = global::HelloworldXamarin.Droid.Resource.Layout.select_dialog_multichoice_material;
+ global::Xamarin.Forms.Platform.Resource.Layout.select_dialog_singlechoice_material = global::HelloworldXamarin.Droid.Resource.Layout.select_dialog_singlechoice_material;
+ global::Xamarin.Forms.Platform.Resource.Layout.ShellContent = global::HelloworldXamarin.Droid.Resource.Layout.ShellContent;
+ global::Xamarin.Forms.Platform.Resource.Layout.support_simple_spinner_dropdown_item = global::HelloworldXamarin.Droid.Resource.Layout.support_simple_spinner_dropdown_item;
+ global::Xamarin.Forms.Platform.Resource.String.abc_action_bar_home_description = global::HelloworldXamarin.Droid.Resource.String.abc_action_bar_home_description;
+ global::Xamarin.Forms.Platform.Resource.String.abc_action_bar_up_description = global::HelloworldXamarin.Droid.Resource.String.abc_action_bar_up_description;
+ global::Xamarin.Forms.Platform.Resource.String.abc_action_menu_overflow_description = global::HelloworldXamarin.Droid.Resource.String.abc_action_menu_overflow_description;
+ global::Xamarin.Forms.Platform.Resource.String.abc_action_mode_done = global::HelloworldXamarin.Droid.Resource.String.abc_action_mode_done;
+ global::Xamarin.Forms.Platform.Resource.String.abc_activitychooserview_choose_application = global::HelloworldXamarin.Droid.Resource.String.abc_activitychooserview_choose_application;
+ global::Xamarin.Forms.Platform.Resource.String.abc_activity_chooser_view_see_all = global::HelloworldXamarin.Droid.Resource.String.abc_activity_chooser_view_see_all;
+ global::Xamarin.Forms.Platform.Resource.String.abc_capital_off = global::HelloworldXamarin.Droid.Resource.String.abc_capital_off;
+ global::Xamarin.Forms.Platform.Resource.String.abc_capital_on = global::HelloworldXamarin.Droid.Resource.String.abc_capital_on;
+ global::Xamarin.Forms.Platform.Resource.String.abc_font_family_body_1_material = global::HelloworldXamarin.Droid.Resource.String.abc_font_family_body_1_material;
+ global::Xamarin.Forms.Platform.Resource.String.abc_font_family_body_2_material = global::HelloworldXamarin.Droid.Resource.String.abc_font_family_body_2_material;
+ global::Xamarin.Forms.Platform.Resource.String.abc_font_family_button_material = global::HelloworldXamarin.Droid.Resource.String.abc_font_family_button_material;
+ global::Xamarin.Forms.Platform.Resource.String.abc_font_family_caption_material = global::HelloworldXamarin.Droid.Resource.String.abc_font_family_caption_material;
+ global::Xamarin.Forms.Platform.Resource.String.abc_font_family_display_1_material = global::HelloworldXamarin.Droid.Resource.String.abc_font_family_display_1_material;
+ global::Xamarin.Forms.Platform.Resource.String.abc_font_family_display_2_material = global::HelloworldXamarin.Droid.Resource.String.abc_font_family_display_2_material;
+ global::Xamarin.Forms.Platform.Resource.String.abc_font_family_display_3_material = global::HelloworldXamarin.Droid.Resource.String.abc_font_family_display_3_material;
+ global::Xamarin.Forms.Platform.Resource.String.abc_font_family_display_4_material = global::HelloworldXamarin.Droid.Resource.String.abc_font_family_display_4_material;
+ global::Xamarin.Forms.Platform.Resource.String.abc_font_family_headline_material = global::HelloworldXamarin.Droid.Resource.String.abc_font_family_headline_material;
+ global::Xamarin.Forms.Platform.Resource.String.abc_font_family_menu_material = global::HelloworldXamarin.Droid.Resource.String.abc_font_family_menu_material;
+ global::Xamarin.Forms.Platform.Resource.String.abc_font_family_subhead_material = global::HelloworldXamarin.Droid.Resource.String.abc_font_family_subhead_material;
+ global::Xamarin.Forms.Platform.Resource.String.abc_font_family_title_material = global::HelloworldXamarin.Droid.Resource.String.abc_font_family_title_material;
+ global::Xamarin.Forms.Platform.Resource.String.abc_menu_alt_shortcut_label = global::HelloworldXamarin.Droid.Resource.String.abc_menu_alt_shortcut_label;
+ global::Xamarin.Forms.Platform.Resource.String.abc_menu_ctrl_shortcut_label = global::HelloworldXamarin.Droid.Resource.String.abc_menu_ctrl_shortcut_label;
+ global::Xamarin.Forms.Platform.Resource.String.abc_menu_delete_shortcut_label = global::HelloworldXamarin.Droid.Resource.String.abc_menu_delete_shortcut_label;
+ global::Xamarin.Forms.Platform.Resource.String.abc_menu_enter_shortcut_label = global::HelloworldXamarin.Droid.Resource.String.abc_menu_enter_shortcut_label;
+ global::Xamarin.Forms.Platform.Resource.String.abc_menu_function_shortcut_label = global::HelloworldXamarin.Droid.Resource.String.abc_menu_function_shortcut_label;
+ global::Xamarin.Forms.Platform.Resource.String.abc_menu_meta_shortcut_label = global::HelloworldXamarin.Droid.Resource.String.abc_menu_meta_shortcut_label;
+ global::Xamarin.Forms.Platform.Resource.String.abc_menu_shift_shortcut_label = global::HelloworldXamarin.Droid.Resource.String.abc_menu_shift_shortcut_label;
+ global::Xamarin.Forms.Platform.Resource.String.abc_menu_space_shortcut_label = global::HelloworldXamarin.Droid.Resource.String.abc_menu_space_shortcut_label;
+ global::Xamarin.Forms.Platform.Resource.String.abc_menu_sym_shortcut_label = global::HelloworldXamarin.Droid.Resource.String.abc_menu_sym_shortcut_label;
+ global::Xamarin.Forms.Platform.Resource.String.abc_prepend_shortcut_label = global::HelloworldXamarin.Droid.Resource.String.abc_prepend_shortcut_label;
+ global::Xamarin.Forms.Platform.Resource.String.abc_searchview_description_clear = global::HelloworldXamarin.Droid.Resource.String.abc_searchview_description_clear;
+ global::Xamarin.Forms.Platform.Resource.String.abc_searchview_description_query = global::HelloworldXamarin.Droid.Resource.String.abc_searchview_description_query;
+ global::Xamarin.Forms.Platform.Resource.String.abc_searchview_description_search = global::HelloworldXamarin.Droid.Resource.String.abc_searchview_description_search;
+ global::Xamarin.Forms.Platform.Resource.String.abc_searchview_description_submit = global::HelloworldXamarin.Droid.Resource.String.abc_searchview_description_submit;
+ global::Xamarin.Forms.Platform.Resource.String.abc_searchview_description_voice = global::HelloworldXamarin.Droid.Resource.String.abc_searchview_description_voice;
+ global::Xamarin.Forms.Platform.Resource.String.abc_search_hint = global::HelloworldXamarin.Droid.Resource.String.abc_search_hint;
+ global::Xamarin.Forms.Platform.Resource.String.abc_shareactionprovider_share_with = global::HelloworldXamarin.Droid.Resource.String.abc_shareactionprovider_share_with;
+ global::Xamarin.Forms.Platform.Resource.String.abc_shareactionprovider_share_with_application = global::HelloworldXamarin.Droid.Resource.String.abc_shareactionprovider_share_with_application;
+ global::Xamarin.Forms.Platform.Resource.String.abc_toolbar_collapse_description = global::HelloworldXamarin.Droid.Resource.String.abc_toolbar_collapse_description;
+ global::Xamarin.Forms.Platform.Resource.String.appbar_scrolling_view_behavior = global::HelloworldXamarin.Droid.Resource.String.appbar_scrolling_view_behavior;
+ global::Xamarin.Forms.Platform.Resource.String.bottom_sheet_behavior = global::HelloworldXamarin.Droid.Resource.String.bottom_sheet_behavior;
+ global::Xamarin.Forms.Platform.Resource.String.character_counter_content_description = global::HelloworldXamarin.Droid.Resource.String.character_counter_content_description;
+ global::Xamarin.Forms.Platform.Resource.String.character_counter_pattern = global::HelloworldXamarin.Droid.Resource.String.character_counter_pattern;
+ global::Xamarin.Forms.Platform.Resource.String.fab_transformation_scrim_behavior = global::HelloworldXamarin.Droid.Resource.String.fab_transformation_scrim_behavior;
+ global::Xamarin.Forms.Platform.Resource.String.fab_transformation_sheet_behavior = global::HelloworldXamarin.Droid.Resource.String.fab_transformation_sheet_behavior;
+ global::Xamarin.Forms.Platform.Resource.String.hide_bottom_view_on_scroll_behavior = global::HelloworldXamarin.Droid.Resource.String.hide_bottom_view_on_scroll_behavior;
+ global::Xamarin.Forms.Platform.Resource.String.mtrl_chip_close_icon_content_description = global::HelloworldXamarin.Droid.Resource.String.mtrl_chip_close_icon_content_description;
+ global::Xamarin.Forms.Platform.Resource.String.password_toggle_content_description = global::HelloworldXamarin.Droid.Resource.String.password_toggle_content_description;
+ global::Xamarin.Forms.Platform.Resource.String.path_password_eye = global::HelloworldXamarin.Droid.Resource.String.path_password_eye;
+ global::Xamarin.Forms.Platform.Resource.String.path_password_eye_mask_strike_through = global::HelloworldXamarin.Droid.Resource.String.path_password_eye_mask_strike_through;
+ global::Xamarin.Forms.Platform.Resource.String.path_password_eye_mask_visible = global::HelloworldXamarin.Droid.Resource.String.path_password_eye_mask_visible;
+ global::Xamarin.Forms.Platform.Resource.String.path_password_strike_through = global::HelloworldXamarin.Droid.Resource.String.path_password_strike_through;
+ global::Xamarin.Forms.Platform.Resource.String.search_menu_title = global::HelloworldXamarin.Droid.Resource.String.search_menu_title;
+ global::Xamarin.Forms.Platform.Resource.String.status_bar_notification_info_overflow = global::HelloworldXamarin.Droid.Resource.String.status_bar_notification_info_overflow;
+ global::Xamarin.Forms.Platform.Resource.Style.AlertDialog_AppCompat = global::HelloworldXamarin.Droid.Resource.Style.AlertDialog_AppCompat;
+ global::Xamarin.Forms.Platform.Resource.Style.AlertDialog_AppCompat_Light = global::HelloworldXamarin.Droid.Resource.Style.AlertDialog_AppCompat_Light;
+ global::Xamarin.Forms.Platform.Resource.Style.Animation_AppCompat_Dialog = global::HelloworldXamarin.Droid.Resource.Style.Animation_AppCompat_Dialog;
+ global::Xamarin.Forms.Platform.Resource.Style.Animation_AppCompat_DropDownUp = global::HelloworldXamarin.Droid.Resource.Style.Animation_AppCompat_DropDownUp;
+ global::Xamarin.Forms.Platform.Resource.Style.Animation_AppCompat_Tooltip = global::HelloworldXamarin.Droid.Resource.Style.Animation_AppCompat_Tooltip;
+ global::Xamarin.Forms.Platform.Resource.Style.Animation_Design_BottomSheetDialog = global::HelloworldXamarin.Droid.Resource.Style.Animation_Design_BottomSheetDialog;
+ global::Xamarin.Forms.Platform.Resource.Style.AppCompatDialogStyle = global::HelloworldXamarin.Droid.Resource.Style.AppCompatDialogStyle;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_AlertDialog_AppCompat = global::HelloworldXamarin.Droid.Resource.Style.Base_AlertDialog_AppCompat;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_AlertDialog_AppCompat_Light = global::HelloworldXamarin.Droid.Resource.Style.Base_AlertDialog_AppCompat_Light;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_Animation_AppCompat_Dialog = global::HelloworldXamarin.Droid.Resource.Style.Base_Animation_AppCompat_Dialog;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_Animation_AppCompat_DropDownUp = global::HelloworldXamarin.Droid.Resource.Style.Base_Animation_AppCompat_DropDownUp;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_Animation_AppCompat_Tooltip = global::HelloworldXamarin.Droid.Resource.Style.Base_Animation_AppCompat_Tooltip;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_CardView = global::HelloworldXamarin.Droid.Resource.Style.Base_CardView;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_DialogWindowTitleBackground_AppCompat = global::HelloworldXamarin.Droid.Resource.Style.Base_DialogWindowTitleBackground_AppCompat;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_DialogWindowTitle_AppCompat = global::HelloworldXamarin.Droid.Resource.Style.Base_DialogWindowTitle_AppCompat;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_TextAppearance_AppCompat = global::HelloworldXamarin.Droid.Resource.Style.Base_TextAppearance_AppCompat;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_TextAppearance_AppCompat_Body1 = global::HelloworldXamarin.Droid.Resource.Style.Base_TextAppearance_AppCompat_Body1;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_TextAppearance_AppCompat_Body2 = global::HelloworldXamarin.Droid.Resource.Style.Base_TextAppearance_AppCompat_Body2;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_TextAppearance_AppCompat_Button = global::HelloworldXamarin.Droid.Resource.Style.Base_TextAppearance_AppCompat_Button;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_TextAppearance_AppCompat_Caption = global::HelloworldXamarin.Droid.Resource.Style.Base_TextAppearance_AppCompat_Caption;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_TextAppearance_AppCompat_Display1 = global::HelloworldXamarin.Droid.Resource.Style.Base_TextAppearance_AppCompat_Display1;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_TextAppearance_AppCompat_Display2 = global::HelloworldXamarin.Droid.Resource.Style.Base_TextAppearance_AppCompat_Display2;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_TextAppearance_AppCompat_Display3 = global::HelloworldXamarin.Droid.Resource.Style.Base_TextAppearance_AppCompat_Display3;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_TextAppearance_AppCompat_Display4 = global::HelloworldXamarin.Droid.Resource.Style.Base_TextAppearance_AppCompat_Display4;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_TextAppearance_AppCompat_Headline = global::HelloworldXamarin.Droid.Resource.Style.Base_TextAppearance_AppCompat_Headline;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_TextAppearance_AppCompat_Inverse = global::HelloworldXamarin.Droid.Resource.Style.Base_TextAppearance_AppCompat_Inverse;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_TextAppearance_AppCompat_Large = global::HelloworldXamarin.Droid.Resource.Style.Base_TextAppearance_AppCompat_Large;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_TextAppearance_AppCompat_Large_Inverse = global::HelloworldXamarin.Droid.Resource.Style.Base_TextAppearance_AppCompat_Large_Inverse;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_TextAppearance_AppCompat_Light_Widget_PopupMenu_Large = global::HelloworldXamarin.Droid.Resource.Style.Base_TextAppearance_AppCompat_Light_Widget_PopupMenu_Large;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_TextAppearance_AppCompat_Light_Widget_PopupMenu_Small = global::HelloworldXamarin.Droid.Resource.Style.Base_TextAppearance_AppCompat_Light_Widget_PopupMenu_Small;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_TextAppearance_AppCompat_Medium = global::HelloworldXamarin.Droid.Resource.Style.Base_TextAppearance_AppCompat_Medium;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_TextAppearance_AppCompat_Medium_Inverse = global::HelloworldXamarin.Droid.Resource.Style.Base_TextAppearance_AppCompat_Medium_Inverse;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_TextAppearance_AppCompat_Menu = global::HelloworldXamarin.Droid.Resource.Style.Base_TextAppearance_AppCompat_Menu;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_TextAppearance_AppCompat_SearchResult = global::HelloworldXamarin.Droid.Resource.Style.Base_TextAppearance_AppCompat_SearchResult;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_TextAppearance_AppCompat_SearchResult_Subtitle = global::HelloworldXamarin.Droid.Resource.Style.Base_TextAppearance_AppCompat_SearchResult_Subtitle;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_TextAppearance_AppCompat_SearchResult_Title = global::HelloworldXamarin.Droid.Resource.Style.Base_TextAppearance_AppCompat_SearchResult_Title;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_TextAppearance_AppCompat_Small = global::HelloworldXamarin.Droid.Resource.Style.Base_TextAppearance_AppCompat_Small;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_TextAppearance_AppCompat_Small_Inverse = global::HelloworldXamarin.Droid.Resource.Style.Base_TextAppearance_AppCompat_Small_Inverse;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_TextAppearance_AppCompat_Subhead = global::HelloworldXamarin.Droid.Resource.Style.Base_TextAppearance_AppCompat_Subhead;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_TextAppearance_AppCompat_Subhead_Inverse = global::HelloworldXamarin.Droid.Resource.Style.Base_TextAppearance_AppCompat_Subhead_Inverse;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_TextAppearance_AppCompat_Title = global::HelloworldXamarin.Droid.Resource.Style.Base_TextAppearance_AppCompat_Title;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_TextAppearance_AppCompat_Title_Inverse = global::HelloworldXamarin.Droid.Resource.Style.Base_TextAppearance_AppCompat_Title_Inverse;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_TextAppearance_AppCompat_Tooltip = global::HelloworldXamarin.Droid.Resource.Style.Base_TextAppearance_AppCompat_Tooltip;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_TextAppearance_AppCompat_Widget_ActionBar_Menu = global::HelloworldXamarin.Droid.Resource.Style.Base_TextAppearance_AppCompat_Widget_ActionBar_Menu;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_TextAppearance_AppCompat_Widget_ActionBar_Subtitle = global::HelloworldXamarin.Droid.Resource.Style.Base_TextAppearance_AppCompat_Widget_ActionBar_Subtitle;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_TextAppearance_AppCompat_Widget_ActionBar_Subtitle_Inverse = global::HelloworldXamarin.Droid.Resource.Style.Base_TextAppearance_AppCompat_Widget_ActionBar_Subtitle_Inverse;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_TextAppearance_AppCompat_Widget_ActionBar_Title = global::HelloworldXamarin.Droid.Resource.Style.Base_TextAppearance_AppCompat_Widget_ActionBar_Title;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_TextAppearance_AppCompat_Widget_ActionBar_Title_Inverse = global::HelloworldXamarin.Droid.Resource.Style.Base_TextAppearance_AppCompat_Widget_ActionBar_Title_Inverse;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_TextAppearance_AppCompat_Widget_ActionMode_Subtitle = global::HelloworldXamarin.Droid.Resource.Style.Base_TextAppearance_AppCompat_Widget_ActionMode_Subtitle;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_TextAppearance_AppCompat_Widget_ActionMode_Title = global::HelloworldXamarin.Droid.Resource.Style.Base_TextAppearance_AppCompat_Widget_ActionMode_Title;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_TextAppearance_AppCompat_Widget_Button = global::HelloworldXamarin.Droid.Resource.Style.Base_TextAppearance_AppCompat_Widget_Button;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_TextAppearance_AppCompat_Widget_Button_Borderless_Colored = global::HelloworldXamarin.Droid.Resource.Style.Base_TextAppearance_AppCompat_Widget_Button_Borderless_Colored;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_TextAppearance_AppCompat_Widget_Button_Colored = global::HelloworldXamarin.Droid.Resource.Style.Base_TextAppearance_AppCompat_Widget_Button_Colored;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_TextAppearance_AppCompat_Widget_Button_Inverse = global::HelloworldXamarin.Droid.Resource.Style.Base_TextAppearance_AppCompat_Widget_Button_Inverse;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_TextAppearance_AppCompat_Widget_DropDownItem = global::HelloworldXamarin.Droid.Resource.Style.Base_TextAppearance_AppCompat_Widget_DropDownItem;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_TextAppearance_AppCompat_Widget_PopupMenu_Header = global::HelloworldXamarin.Droid.Resource.Style.Base_TextAppearance_AppCompat_Widget_PopupMenu_Header;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_TextAppearance_AppCompat_Widget_PopupMenu_Large = global::HelloworldXamarin.Droid.Resource.Style.Base_TextAppearance_AppCompat_Widget_PopupMenu_Large;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_TextAppearance_AppCompat_Widget_PopupMenu_Small = global::HelloworldXamarin.Droid.Resource.Style.Base_TextAppearance_AppCompat_Widget_PopupMenu_Small;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_TextAppearance_AppCompat_Widget_Switch = global::HelloworldXamarin.Droid.Resource.Style.Base_TextAppearance_AppCompat_Widget_Switch;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_TextAppearance_AppCompat_Widget_TextView_SpinnerItem = global::HelloworldXamarin.Droid.Resource.Style.Base_TextAppearance_AppCompat_Widget_TextView_SpinnerItem;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_TextAppearance_Widget_AppCompat_ExpandedMenu_Item = global::HelloworldXamarin.Droid.Resource.Style.Base_TextAppearance_Widget_AppCompat_ExpandedMenu_Item;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_TextAppearance_Widget_AppCompat_Toolbar_Subtitle = global::HelloworldXamarin.Droid.Resource.Style.Base_TextAppearance_Widget_AppCompat_Toolbar_Subtitle;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_TextAppearance_Widget_AppCompat_Toolbar_Title = global::HelloworldXamarin.Droid.Resource.Style.Base_TextAppearance_Widget_AppCompat_Toolbar_Title;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_ThemeOverlay_AppCompat = global::HelloworldXamarin.Droid.Resource.Style.Base_ThemeOverlay_AppCompat;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_ThemeOverlay_AppCompat_ActionBar = global::HelloworldXamarin.Droid.Resource.Style.Base_ThemeOverlay_AppCompat_ActionBar;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_ThemeOverlay_AppCompat_Dark = global::HelloworldXamarin.Droid.Resource.Style.Base_ThemeOverlay_AppCompat_Dark;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_ThemeOverlay_AppCompat_Dark_ActionBar = global::HelloworldXamarin.Droid.Resource.Style.Base_ThemeOverlay_AppCompat_Dark_ActionBar;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_ThemeOverlay_AppCompat_Dialog = global::HelloworldXamarin.Droid.Resource.Style.Base_ThemeOverlay_AppCompat_Dialog;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_ThemeOverlay_AppCompat_Dialog_Alert = global::HelloworldXamarin.Droid.Resource.Style.Base_ThemeOverlay_AppCompat_Dialog_Alert;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_ThemeOverlay_AppCompat_Light = global::HelloworldXamarin.Droid.Resource.Style.Base_ThemeOverlay_AppCompat_Light;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_ThemeOverlay_MaterialComponents_Dialog = global::HelloworldXamarin.Droid.Resource.Style.Base_ThemeOverlay_MaterialComponents_Dialog;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_ThemeOverlay_MaterialComponents_Dialog_Alert = global::HelloworldXamarin.Droid.Resource.Style.Base_ThemeOverlay_MaterialComponents_Dialog_Alert;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_Theme_AppCompat = global::HelloworldXamarin.Droid.Resource.Style.Base_Theme_AppCompat;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_Theme_AppCompat_CompactMenu = global::HelloworldXamarin.Droid.Resource.Style.Base_Theme_AppCompat_CompactMenu;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_Theme_AppCompat_Dialog = global::HelloworldXamarin.Droid.Resource.Style.Base_Theme_AppCompat_Dialog;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_Theme_AppCompat_DialogWhenLarge = global::HelloworldXamarin.Droid.Resource.Style.Base_Theme_AppCompat_DialogWhenLarge;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_Theme_AppCompat_Dialog_Alert = global::HelloworldXamarin.Droid.Resource.Style.Base_Theme_AppCompat_Dialog_Alert;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_Theme_AppCompat_Dialog_FixedSize = global::HelloworldXamarin.Droid.Resource.Style.Base_Theme_AppCompat_Dialog_FixedSize;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_Theme_AppCompat_Dialog_MinWidth = global::HelloworldXamarin.Droid.Resource.Style.Base_Theme_AppCompat_Dialog_MinWidth;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_Theme_AppCompat_Light = global::HelloworldXamarin.Droid.Resource.Style.Base_Theme_AppCompat_Light;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_Theme_AppCompat_Light_DarkActionBar = global::HelloworldXamarin.Droid.Resource.Style.Base_Theme_AppCompat_Light_DarkActionBar;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_Theme_AppCompat_Light_Dialog = global::HelloworldXamarin.Droid.Resource.Style.Base_Theme_AppCompat_Light_Dialog;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_Theme_AppCompat_Light_DialogWhenLarge = global::HelloworldXamarin.Droid.Resource.Style.Base_Theme_AppCompat_Light_DialogWhenLarge;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_Theme_AppCompat_Light_Dialog_Alert = global::HelloworldXamarin.Droid.Resource.Style.Base_Theme_AppCompat_Light_Dialog_Alert;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_Theme_AppCompat_Light_Dialog_FixedSize = global::HelloworldXamarin.Droid.Resource.Style.Base_Theme_AppCompat_Light_Dialog_FixedSize;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_Theme_AppCompat_Light_Dialog_MinWidth = global::HelloworldXamarin.Droid.Resource.Style.Base_Theme_AppCompat_Light_Dialog_MinWidth;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_Theme_MaterialComponents = global::HelloworldXamarin.Droid.Resource.Style.Base_Theme_MaterialComponents;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_Theme_MaterialComponents_Bridge = global::HelloworldXamarin.Droid.Resource.Style.Base_Theme_MaterialComponents_Bridge;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_Theme_MaterialComponents_CompactMenu = global::HelloworldXamarin.Droid.Resource.Style.Base_Theme_MaterialComponents_CompactMenu;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_Theme_MaterialComponents_Dialog = global::HelloworldXamarin.Droid.Resource.Style.Base_Theme_MaterialComponents_Dialog;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_Theme_MaterialComponents_DialogWhenLarge = global::HelloworldXamarin.Droid.Resource.Style.Base_Theme_MaterialComponents_DialogWhenLarge;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_Theme_MaterialComponents_Dialog_Alert = global::HelloworldXamarin.Droid.Resource.Style.Base_Theme_MaterialComponents_Dialog_Alert;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_Theme_MaterialComponents_Dialog_FixedSize = global::HelloworldXamarin.Droid.Resource.Style.Base_Theme_MaterialComponents_Dialog_FixedSize;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_Theme_MaterialComponents_Dialog_MinWidth = global::HelloworldXamarin.Droid.Resource.Style.Base_Theme_MaterialComponents_Dialog_MinWidth;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_Theme_MaterialComponents_Light = global::HelloworldXamarin.Droid.Resource.Style.Base_Theme_MaterialComponents_Light;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_Theme_MaterialComponents_Light_Bridge = global::HelloworldXamarin.Droid.Resource.Style.Base_Theme_MaterialComponents_Light_Bridge;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_Theme_MaterialComponents_Light_DarkActionBar = global::HelloworldXamarin.Droid.Resource.Style.Base_Theme_MaterialComponents_Light_DarkActionBar;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_Theme_MaterialComponents_Light_DarkActionBar_Bridge = global::HelloworldXamarin.Droid.Resource.Style.Base_Theme_MaterialComponents_Light_DarkActionBar_Bridge;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_Theme_MaterialComponents_Light_Dialog = global::HelloworldXamarin.Droid.Resource.Style.Base_Theme_MaterialComponents_Light_Dialog;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_Theme_MaterialComponents_Light_DialogWhenLarge = global::HelloworldXamarin.Droid.Resource.Style.Base_Theme_MaterialComponents_Light_DialogWhenLarge;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_Theme_MaterialComponents_Light_Dialog_Alert = global::HelloworldXamarin.Droid.Resource.Style.Base_Theme_MaterialComponents_Light_Dialog_Alert;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_Theme_MaterialComponents_Light_Dialog_FixedSize = global::HelloworldXamarin.Droid.Resource.Style.Base_Theme_MaterialComponents_Light_Dialog_FixedSize;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_Theme_MaterialComponents_Light_Dialog_MinWidth = global::HelloworldXamarin.Droid.Resource.Style.Base_Theme_MaterialComponents_Light_Dialog_MinWidth;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_V14_ThemeOverlay_MaterialComponents_Dialog = global::HelloworldXamarin.Droid.Resource.Style.Base_V14_ThemeOverlay_MaterialComponents_Dialog;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_V14_ThemeOverlay_MaterialComponents_Dialog_Alert = global::HelloworldXamarin.Droid.Resource.Style.Base_V14_ThemeOverlay_MaterialComponents_Dialog_Alert;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_V14_Theme_MaterialComponents = global::HelloworldXamarin.Droid.Resource.Style.Base_V14_Theme_MaterialComponents;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_V14_Theme_MaterialComponents_Bridge = global::HelloworldXamarin.Droid.Resource.Style.Base_V14_Theme_MaterialComponents_Bridge;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_V14_Theme_MaterialComponents_Dialog = global::HelloworldXamarin.Droid.Resource.Style.Base_V14_Theme_MaterialComponents_Dialog;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_V14_Theme_MaterialComponents_Light = global::HelloworldXamarin.Droid.Resource.Style.Base_V14_Theme_MaterialComponents_Light;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_V14_Theme_MaterialComponents_Light_Bridge = global::HelloworldXamarin.Droid.Resource.Style.Base_V14_Theme_MaterialComponents_Light_Bridge;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_V14_Theme_MaterialComponents_Light_DarkActionBar_Bridge = global::HelloworldXamarin.Droid.Resource.Style.Base_V14_Theme_MaterialComponents_Light_DarkActionBar_Bridge;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_V14_Theme_MaterialComponents_Light_Dialog = global::HelloworldXamarin.Droid.Resource.Style.Base_V14_Theme_MaterialComponents_Light_Dialog;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_V21_ThemeOverlay_AppCompat_Dialog = global::HelloworldXamarin.Droid.Resource.Style.Base_V21_ThemeOverlay_AppCompat_Dialog;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_V21_Theme_AppCompat = global::HelloworldXamarin.Droid.Resource.Style.Base_V21_Theme_AppCompat;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_V21_Theme_AppCompat_Dialog = global::HelloworldXamarin.Droid.Resource.Style.Base_V21_Theme_AppCompat_Dialog;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_V21_Theme_AppCompat_Light = global::HelloworldXamarin.Droid.Resource.Style.Base_V21_Theme_AppCompat_Light;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_V21_Theme_AppCompat_Light_Dialog = global::HelloworldXamarin.Droid.Resource.Style.Base_V21_Theme_AppCompat_Light_Dialog;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_V22_Theme_AppCompat = global::HelloworldXamarin.Droid.Resource.Style.Base_V22_Theme_AppCompat;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_V22_Theme_AppCompat_Light = global::HelloworldXamarin.Droid.Resource.Style.Base_V22_Theme_AppCompat_Light;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_V23_Theme_AppCompat = global::HelloworldXamarin.Droid.Resource.Style.Base_V23_Theme_AppCompat;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_V23_Theme_AppCompat_Light = global::HelloworldXamarin.Droid.Resource.Style.Base_V23_Theme_AppCompat_Light;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_V26_Theme_AppCompat = global::HelloworldXamarin.Droid.Resource.Style.Base_V26_Theme_AppCompat;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_V26_Theme_AppCompat_Light = global::HelloworldXamarin.Droid.Resource.Style.Base_V26_Theme_AppCompat_Light;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_V26_Widget_AppCompat_Toolbar = global::HelloworldXamarin.Droid.Resource.Style.Base_V26_Widget_AppCompat_Toolbar;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_V28_Theme_AppCompat = global::HelloworldXamarin.Droid.Resource.Style.Base_V28_Theme_AppCompat;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_V28_Theme_AppCompat_Light = global::HelloworldXamarin.Droid.Resource.Style.Base_V28_Theme_AppCompat_Light;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_V7_ThemeOverlay_AppCompat_Dialog = global::HelloworldXamarin.Droid.Resource.Style.Base_V7_ThemeOverlay_AppCompat_Dialog;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_V7_Theme_AppCompat = global::HelloworldXamarin.Droid.Resource.Style.Base_V7_Theme_AppCompat;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_V7_Theme_AppCompat_Dialog = global::HelloworldXamarin.Droid.Resource.Style.Base_V7_Theme_AppCompat_Dialog;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_V7_Theme_AppCompat_Light = global::HelloworldXamarin.Droid.Resource.Style.Base_V7_Theme_AppCompat_Light;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_V7_Theme_AppCompat_Light_Dialog = global::HelloworldXamarin.Droid.Resource.Style.Base_V7_Theme_AppCompat_Light_Dialog;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_V7_Widget_AppCompat_AutoCompleteTextView = global::HelloworldXamarin.Droid.Resource.Style.Base_V7_Widget_AppCompat_AutoCompleteTextView;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_V7_Widget_AppCompat_EditText = global::HelloworldXamarin.Droid.Resource.Style.Base_V7_Widget_AppCompat_EditText;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_V7_Widget_AppCompat_Toolbar = global::HelloworldXamarin.Droid.Resource.Style.Base_V7_Widget_AppCompat_Toolbar;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_Widget_AppCompat_ActionBar = global::HelloworldXamarin.Droid.Resource.Style.Base_Widget_AppCompat_ActionBar;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_Widget_AppCompat_ActionBar_Solid = global::HelloworldXamarin.Droid.Resource.Style.Base_Widget_AppCompat_ActionBar_Solid;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_Widget_AppCompat_ActionBar_TabBar = global::HelloworldXamarin.Droid.Resource.Style.Base_Widget_AppCompat_ActionBar_TabBar;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_Widget_AppCompat_ActionBar_TabText = global::HelloworldXamarin.Droid.Resource.Style.Base_Widget_AppCompat_ActionBar_TabText;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_Widget_AppCompat_ActionBar_TabView = global::HelloworldXamarin.Droid.Resource.Style.Base_Widget_AppCompat_ActionBar_TabView;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_Widget_AppCompat_ActionButton = global::HelloworldXamarin.Droid.Resource.Style.Base_Widget_AppCompat_ActionButton;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_Widget_AppCompat_ActionButton_CloseMode = global::HelloworldXamarin.Droid.Resource.Style.Base_Widget_AppCompat_ActionButton_CloseMode;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_Widget_AppCompat_ActionButton_Overflow = global::HelloworldXamarin.Droid.Resource.Style.Base_Widget_AppCompat_ActionButton_Overflow;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_Widget_AppCompat_ActionMode = global::HelloworldXamarin.Droid.Resource.Style.Base_Widget_AppCompat_ActionMode;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_Widget_AppCompat_ActivityChooserView = global::HelloworldXamarin.Droid.Resource.Style.Base_Widget_AppCompat_ActivityChooserView;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_Widget_AppCompat_AutoCompleteTextView = global::HelloworldXamarin.Droid.Resource.Style.Base_Widget_AppCompat_AutoCompleteTextView;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_Widget_AppCompat_Button = global::HelloworldXamarin.Droid.Resource.Style.Base_Widget_AppCompat_Button;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_Widget_AppCompat_ButtonBar = global::HelloworldXamarin.Droid.Resource.Style.Base_Widget_AppCompat_ButtonBar;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_Widget_AppCompat_ButtonBar_AlertDialog = global::HelloworldXamarin.Droid.Resource.Style.Base_Widget_AppCompat_ButtonBar_AlertDialog;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_Widget_AppCompat_Button_Borderless = global::HelloworldXamarin.Droid.Resource.Style.Base_Widget_AppCompat_Button_Borderless;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_Widget_AppCompat_Button_Borderless_Colored = global::HelloworldXamarin.Droid.Resource.Style.Base_Widget_AppCompat_Button_Borderless_Colored;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_Widget_AppCompat_Button_ButtonBar_AlertDialog = global::HelloworldXamarin.Droid.Resource.Style.Base_Widget_AppCompat_Button_ButtonBar_AlertDialog;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_Widget_AppCompat_Button_Colored = global::HelloworldXamarin.Droid.Resource.Style.Base_Widget_AppCompat_Button_Colored;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_Widget_AppCompat_Button_Small = global::HelloworldXamarin.Droid.Resource.Style.Base_Widget_AppCompat_Button_Small;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_Widget_AppCompat_CompoundButton_CheckBox = global::HelloworldXamarin.Droid.Resource.Style.Base_Widget_AppCompat_CompoundButton_CheckBox;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_Widget_AppCompat_CompoundButton_RadioButton = global::HelloworldXamarin.Droid.Resource.Style.Base_Widget_AppCompat_CompoundButton_RadioButton;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_Widget_AppCompat_CompoundButton_Switch = global::HelloworldXamarin.Droid.Resource.Style.Base_Widget_AppCompat_CompoundButton_Switch;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_Widget_AppCompat_DrawerArrowToggle = global::HelloworldXamarin.Droid.Resource.Style.Base_Widget_AppCompat_DrawerArrowToggle;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_Widget_AppCompat_DrawerArrowToggle_Common = global::HelloworldXamarin.Droid.Resource.Style.Base_Widget_AppCompat_DrawerArrowToggle_Common;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_Widget_AppCompat_DropDownItem_Spinner = global::HelloworldXamarin.Droid.Resource.Style.Base_Widget_AppCompat_DropDownItem_Spinner;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_Widget_AppCompat_EditText = global::HelloworldXamarin.Droid.Resource.Style.Base_Widget_AppCompat_EditText;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_Widget_AppCompat_ImageButton = global::HelloworldXamarin.Droid.Resource.Style.Base_Widget_AppCompat_ImageButton;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_Widget_AppCompat_Light_ActionBar = global::HelloworldXamarin.Droid.Resource.Style.Base_Widget_AppCompat_Light_ActionBar;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_Widget_AppCompat_Light_ActionBar_Solid = global::HelloworldXamarin.Droid.Resource.Style.Base_Widget_AppCompat_Light_ActionBar_Solid;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_Widget_AppCompat_Light_ActionBar_TabBar = global::HelloworldXamarin.Droid.Resource.Style.Base_Widget_AppCompat_Light_ActionBar_TabBar;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_Widget_AppCompat_Light_ActionBar_TabText = global::HelloworldXamarin.Droid.Resource.Style.Base_Widget_AppCompat_Light_ActionBar_TabText;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_Widget_AppCompat_Light_ActionBar_TabText_Inverse = global::HelloworldXamarin.Droid.Resource.Style.Base_Widget_AppCompat_Light_ActionBar_TabText_Inverse;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_Widget_AppCompat_Light_ActionBar_TabView = global::HelloworldXamarin.Droid.Resource.Style.Base_Widget_AppCompat_Light_ActionBar_TabView;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_Widget_AppCompat_Light_PopupMenu = global::HelloworldXamarin.Droid.Resource.Style.Base_Widget_AppCompat_Light_PopupMenu;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_Widget_AppCompat_Light_PopupMenu_Overflow = global::HelloworldXamarin.Droid.Resource.Style.Base_Widget_AppCompat_Light_PopupMenu_Overflow;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_Widget_AppCompat_ListMenuView = global::HelloworldXamarin.Droid.Resource.Style.Base_Widget_AppCompat_ListMenuView;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_Widget_AppCompat_ListPopupWindow = global::HelloworldXamarin.Droid.Resource.Style.Base_Widget_AppCompat_ListPopupWindow;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_Widget_AppCompat_ListView = global::HelloworldXamarin.Droid.Resource.Style.Base_Widget_AppCompat_ListView;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_Widget_AppCompat_ListView_DropDown = global::HelloworldXamarin.Droid.Resource.Style.Base_Widget_AppCompat_ListView_DropDown;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_Widget_AppCompat_ListView_Menu = global::HelloworldXamarin.Droid.Resource.Style.Base_Widget_AppCompat_ListView_Menu;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_Widget_AppCompat_PopupMenu = global::HelloworldXamarin.Droid.Resource.Style.Base_Widget_AppCompat_PopupMenu;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_Widget_AppCompat_PopupMenu_Overflow = global::HelloworldXamarin.Droid.Resource.Style.Base_Widget_AppCompat_PopupMenu_Overflow;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_Widget_AppCompat_PopupWindow = global::HelloworldXamarin.Droid.Resource.Style.Base_Widget_AppCompat_PopupWindow;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_Widget_AppCompat_ProgressBar = global::HelloworldXamarin.Droid.Resource.Style.Base_Widget_AppCompat_ProgressBar;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_Widget_AppCompat_ProgressBar_Horizontal = global::HelloworldXamarin.Droid.Resource.Style.Base_Widget_AppCompat_ProgressBar_Horizontal;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_Widget_AppCompat_RatingBar = global::HelloworldXamarin.Droid.Resource.Style.Base_Widget_AppCompat_RatingBar;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_Widget_AppCompat_RatingBar_Indicator = global::HelloworldXamarin.Droid.Resource.Style.Base_Widget_AppCompat_RatingBar_Indicator;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_Widget_AppCompat_RatingBar_Small = global::HelloworldXamarin.Droid.Resource.Style.Base_Widget_AppCompat_RatingBar_Small;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_Widget_AppCompat_SearchView = global::HelloworldXamarin.Droid.Resource.Style.Base_Widget_AppCompat_SearchView;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_Widget_AppCompat_SearchView_ActionBar = global::HelloworldXamarin.Droid.Resource.Style.Base_Widget_AppCompat_SearchView_ActionBar;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_Widget_AppCompat_SeekBar = global::HelloworldXamarin.Droid.Resource.Style.Base_Widget_AppCompat_SeekBar;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_Widget_AppCompat_SeekBar_Discrete = global::HelloworldXamarin.Droid.Resource.Style.Base_Widget_AppCompat_SeekBar_Discrete;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_Widget_AppCompat_Spinner = global::HelloworldXamarin.Droid.Resource.Style.Base_Widget_AppCompat_Spinner;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_Widget_AppCompat_Spinner_Underlined = global::HelloworldXamarin.Droid.Resource.Style.Base_Widget_AppCompat_Spinner_Underlined;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_Widget_AppCompat_TextView_SpinnerItem = global::HelloworldXamarin.Droid.Resource.Style.Base_Widget_AppCompat_TextView_SpinnerItem;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_Widget_AppCompat_Toolbar = global::HelloworldXamarin.Droid.Resource.Style.Base_Widget_AppCompat_Toolbar;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_Widget_AppCompat_Toolbar_Button_Navigation = global::HelloworldXamarin.Droid.Resource.Style.Base_Widget_AppCompat_Toolbar_Button_Navigation;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_Widget_Design_TabLayout = global::HelloworldXamarin.Droid.Resource.Style.Base_Widget_Design_TabLayout;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_Widget_MaterialComponents_Chip = global::HelloworldXamarin.Droid.Resource.Style.Base_Widget_MaterialComponents_Chip;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_Widget_MaterialComponents_TextInputEditText = global::HelloworldXamarin.Droid.Resource.Style.Base_Widget_MaterialComponents_TextInputEditText;
+ global::Xamarin.Forms.Platform.Resource.Style.Base_Widget_MaterialComponents_TextInputLayout = global::HelloworldXamarin.Droid.Resource.Style.Base_Widget_MaterialComponents_TextInputLayout;
+ global::Xamarin.Forms.Platform.Resource.Style.CardView = global::HelloworldXamarin.Droid.Resource.Style.CardView;
+ global::Xamarin.Forms.Platform.Resource.Style.CardView_Dark = global::HelloworldXamarin.Droid.Resource.Style.CardView_Dark;
+ global::Xamarin.Forms.Platform.Resource.Style.CardView_Light = global::HelloworldXamarin.Droid.Resource.Style.CardView_Light;
+ global::Xamarin.Forms.Platform.Resource.Style.collectionViewStyle = global::HelloworldXamarin.Droid.Resource.Style.collectionViewStyle;
+ global::Xamarin.Forms.Platform.Resource.Style.MainTheme = global::HelloworldXamarin.Droid.Resource.Style.MainTheme;
+ global::Xamarin.Forms.Platform.Resource.Style.MainTheme_Base = global::HelloworldXamarin.Droid.Resource.Style.MainTheme_Base;
+ global::Xamarin.Forms.Platform.Resource.Style.Platform_AppCompat = global::HelloworldXamarin.Droid.Resource.Style.Platform_AppCompat;
+ global::Xamarin.Forms.Platform.Resource.Style.Platform_AppCompat_Light = global::HelloworldXamarin.Droid.Resource.Style.Platform_AppCompat_Light;
+ global::Xamarin.Forms.Platform.Resource.Style.Platform_MaterialComponents = global::HelloworldXamarin.Droid.Resource.Style.Platform_MaterialComponents;
+ global::Xamarin.Forms.Platform.Resource.Style.Platform_MaterialComponents_Dialog = global::HelloworldXamarin.Droid.Resource.Style.Platform_MaterialComponents_Dialog;
+ global::Xamarin.Forms.Platform.Resource.Style.Platform_MaterialComponents_Light = global::HelloworldXamarin.Droid.Resource.Style.Platform_MaterialComponents_Light;
+ global::Xamarin.Forms.Platform.Resource.Style.Platform_MaterialComponents_Light_Dialog = global::HelloworldXamarin.Droid.Resource.Style.Platform_MaterialComponents_Light_Dialog;
+ global::Xamarin.Forms.Platform.Resource.Style.Platform_ThemeOverlay_AppCompat = global::HelloworldXamarin.Droid.Resource.Style.Platform_ThemeOverlay_AppCompat;
+ global::Xamarin.Forms.Platform.Resource.Style.Platform_ThemeOverlay_AppCompat_Dark = global::HelloworldXamarin.Droid.Resource.Style.Platform_ThemeOverlay_AppCompat_Dark;
+ global::Xamarin.Forms.Platform.Resource.Style.Platform_ThemeOverlay_AppCompat_Light = global::HelloworldXamarin.Droid.Resource.Style.Platform_ThemeOverlay_AppCompat_Light;
+ global::Xamarin.Forms.Platform.Resource.Style.Platform_V21_AppCompat = global::HelloworldXamarin.Droid.Resource.Style.Platform_V21_AppCompat;
+ global::Xamarin.Forms.Platform.Resource.Style.Platform_V21_AppCompat_Light = global::HelloworldXamarin.Droid.Resource.Style.Platform_V21_AppCompat_Light;
+ global::Xamarin.Forms.Platform.Resource.Style.Platform_V25_AppCompat = global::HelloworldXamarin.Droid.Resource.Style.Platform_V25_AppCompat;
+ global::Xamarin.Forms.Platform.Resource.Style.Platform_V25_AppCompat_Light = global::HelloworldXamarin.Droid.Resource.Style.Platform_V25_AppCompat_Light;
+ global::Xamarin.Forms.Platform.Resource.Style.Platform_Widget_AppCompat_Spinner = global::HelloworldXamarin.Droid.Resource.Style.Platform_Widget_AppCompat_Spinner;
+ global::Xamarin.Forms.Platform.Resource.Style.RtlOverlay_DialogWindowTitle_AppCompat = global::HelloworldXamarin.Droid.Resource.Style.RtlOverlay_DialogWindowTitle_AppCompat;
+ global::Xamarin.Forms.Platform.Resource.Style.RtlOverlay_Widget_AppCompat_ActionBar_TitleItem = global::HelloworldXamarin.Droid.Resource.Style.RtlOverlay_Widget_AppCompat_ActionBar_TitleItem;
+ global::Xamarin.Forms.Platform.Resource.Style.RtlOverlay_Widget_AppCompat_DialogTitle_Icon = global::HelloworldXamarin.Droid.Resource.Style.RtlOverlay_Widget_AppCompat_DialogTitle_Icon;
+ global::Xamarin.Forms.Platform.Resource.Style.RtlOverlay_Widget_AppCompat_PopupMenuItem = global::HelloworldXamarin.Droid.Resource.Style.RtlOverlay_Widget_AppCompat_PopupMenuItem;
+ global::Xamarin.Forms.Platform.Resource.Style.RtlOverlay_Widget_AppCompat_PopupMenuItem_InternalGroup = global::HelloworldXamarin.Droid.Resource.Style.RtlOverlay_Widget_AppCompat_PopupMenuItem_InternalGroup;
+ global::Xamarin.Forms.Platform.Resource.Style.RtlOverlay_Widget_AppCompat_PopupMenuItem_Shortcut = global::HelloworldXamarin.Droid.Resource.Style.RtlOverlay_Widget_AppCompat_PopupMenuItem_Shortcut;
+ global::Xamarin.Forms.Platform.Resource.Style.RtlOverlay_Widget_AppCompat_PopupMenuItem_SubmenuArrow = global::HelloworldXamarin.Droid.Resource.Style.RtlOverlay_Widget_AppCompat_PopupMenuItem_SubmenuArrow;
+ global::Xamarin.Forms.Platform.Resource.Style.RtlOverlay_Widget_AppCompat_PopupMenuItem_Text = global::HelloworldXamarin.Droid.Resource.Style.RtlOverlay_Widget_AppCompat_PopupMenuItem_Text;
+ global::Xamarin.Forms.Platform.Resource.Style.RtlOverlay_Widget_AppCompat_PopupMenuItem_Title = global::HelloworldXamarin.Droid.Resource.Style.RtlOverlay_Widget_AppCompat_PopupMenuItem_Title;
+ global::Xamarin.Forms.Platform.Resource.Style.RtlOverlay_Widget_AppCompat_SearchView_MagIcon = global::HelloworldXamarin.Droid.Resource.Style.RtlOverlay_Widget_AppCompat_SearchView_MagIcon;
+ global::Xamarin.Forms.Platform.Resource.Style.RtlOverlay_Widget_AppCompat_Search_DropDown = global::HelloworldXamarin.Droid.Resource.Style.RtlOverlay_Widget_AppCompat_Search_DropDown;
+ global::Xamarin.Forms.Platform.Resource.Style.RtlOverlay_Widget_AppCompat_Search_DropDown_Icon1 = global::HelloworldXamarin.Droid.Resource.Style.RtlOverlay_Widget_AppCompat_Search_DropDown_Icon1;
+ global::Xamarin.Forms.Platform.Resource.Style.RtlOverlay_Widget_AppCompat_Search_DropDown_Icon2 = global::HelloworldXamarin.Droid.Resource.Style.RtlOverlay_Widget_AppCompat_Search_DropDown_Icon2;
+ global::Xamarin.Forms.Platform.Resource.Style.RtlOverlay_Widget_AppCompat_Search_DropDown_Query = global::HelloworldXamarin.Droid.Resource.Style.RtlOverlay_Widget_AppCompat_Search_DropDown_Query;
+ global::Xamarin.Forms.Platform.Resource.Style.RtlOverlay_Widget_AppCompat_Search_DropDown_Text = global::HelloworldXamarin.Droid.Resource.Style.RtlOverlay_Widget_AppCompat_Search_DropDown_Text;
+ global::Xamarin.Forms.Platform.Resource.Style.RtlUnderlay_Widget_AppCompat_ActionButton = global::HelloworldXamarin.Droid.Resource.Style.RtlUnderlay_Widget_AppCompat_ActionButton;
+ global::Xamarin.Forms.Platform.Resource.Style.RtlUnderlay_Widget_AppCompat_ActionButton_Overflow = global::HelloworldXamarin.Droid.Resource.Style.RtlUnderlay_Widget_AppCompat_ActionButton_Overflow;
+ global::Xamarin.Forms.Platform.Resource.Style.TextAppearance_AppCompat = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_AppCompat;
+ global::Xamarin.Forms.Platform.Resource.Style.TextAppearance_AppCompat_Body1 = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_AppCompat_Body1;
+ global::Xamarin.Forms.Platform.Resource.Style.TextAppearance_AppCompat_Body2 = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_AppCompat_Body2;
+ global::Xamarin.Forms.Platform.Resource.Style.TextAppearance_AppCompat_Button = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_AppCompat_Button;
+ global::Xamarin.Forms.Platform.Resource.Style.TextAppearance_AppCompat_Caption = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_AppCompat_Caption;
+ global::Xamarin.Forms.Platform.Resource.Style.TextAppearance_AppCompat_Display1 = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_AppCompat_Display1;
+ global::Xamarin.Forms.Platform.Resource.Style.TextAppearance_AppCompat_Display2 = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_AppCompat_Display2;
+ global::Xamarin.Forms.Platform.Resource.Style.TextAppearance_AppCompat_Display3 = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_AppCompat_Display3;
+ global::Xamarin.Forms.Platform.Resource.Style.TextAppearance_AppCompat_Display4 = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_AppCompat_Display4;
+ global::Xamarin.Forms.Platform.Resource.Style.TextAppearance_AppCompat_Headline = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_AppCompat_Headline;
+ global::Xamarin.Forms.Platform.Resource.Style.TextAppearance_AppCompat_Inverse = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_AppCompat_Inverse;
+ global::Xamarin.Forms.Platform.Resource.Style.TextAppearance_AppCompat_Large = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_AppCompat_Large;
+ global::Xamarin.Forms.Platform.Resource.Style.TextAppearance_AppCompat_Large_Inverse = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_AppCompat_Large_Inverse;
+ global::Xamarin.Forms.Platform.Resource.Style.TextAppearance_AppCompat_Light_SearchResult_Subtitle = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_AppCompat_Light_SearchResult_Subtitle;
+ global::Xamarin.Forms.Platform.Resource.Style.TextAppearance_AppCompat_Light_SearchResult_Title = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_AppCompat_Light_SearchResult_Title;
+ global::Xamarin.Forms.Platform.Resource.Style.TextAppearance_AppCompat_Light_Widget_PopupMenu_Large = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_AppCompat_Light_Widget_PopupMenu_Large;
+ global::Xamarin.Forms.Platform.Resource.Style.TextAppearance_AppCompat_Light_Widget_PopupMenu_Small = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_AppCompat_Light_Widget_PopupMenu_Small;
+ global::Xamarin.Forms.Platform.Resource.Style.TextAppearance_AppCompat_Medium = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_AppCompat_Medium;
+ global::Xamarin.Forms.Platform.Resource.Style.TextAppearance_AppCompat_Medium_Inverse = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_AppCompat_Medium_Inverse;
+ global::Xamarin.Forms.Platform.Resource.Style.TextAppearance_AppCompat_Menu = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_AppCompat_Menu;
+ global::Xamarin.Forms.Platform.Resource.Style.TextAppearance_AppCompat_SearchResult_Subtitle = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_AppCompat_SearchResult_Subtitle;
+ global::Xamarin.Forms.Platform.Resource.Style.TextAppearance_AppCompat_SearchResult_Title = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_AppCompat_SearchResult_Title;
+ global::Xamarin.Forms.Platform.Resource.Style.TextAppearance_AppCompat_Small = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_AppCompat_Small;
+ global::Xamarin.Forms.Platform.Resource.Style.TextAppearance_AppCompat_Small_Inverse = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_AppCompat_Small_Inverse;
+ global::Xamarin.Forms.Platform.Resource.Style.TextAppearance_AppCompat_Subhead = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_AppCompat_Subhead;
+ global::Xamarin.Forms.Platform.Resource.Style.TextAppearance_AppCompat_Subhead_Inverse = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_AppCompat_Subhead_Inverse;
+ global::Xamarin.Forms.Platform.Resource.Style.TextAppearance_AppCompat_Title = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_AppCompat_Title;
+ global::Xamarin.Forms.Platform.Resource.Style.TextAppearance_AppCompat_Title_Inverse = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_AppCompat_Title_Inverse;
+ global::Xamarin.Forms.Platform.Resource.Style.TextAppearance_AppCompat_Tooltip = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_AppCompat_Tooltip;
+ global::Xamarin.Forms.Platform.Resource.Style.TextAppearance_AppCompat_Widget_ActionBar_Menu = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_AppCompat_Widget_ActionBar_Menu;
+ global::Xamarin.Forms.Platform.Resource.Style.TextAppearance_AppCompat_Widget_ActionBar_Subtitle = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_AppCompat_Widget_ActionBar_Subtitle;
+ global::Xamarin.Forms.Platform.Resource.Style.TextAppearance_AppCompat_Widget_ActionBar_Subtitle_Inverse = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_AppCompat_Widget_ActionBar_Subtitle_Inverse;
+ global::Xamarin.Forms.Platform.Resource.Style.TextAppearance_AppCompat_Widget_ActionBar_Title = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_AppCompat_Widget_ActionBar_Title;
+ global::Xamarin.Forms.Platform.Resource.Style.TextAppearance_AppCompat_Widget_ActionBar_Title_Inverse = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_AppCompat_Widget_ActionBar_Title_Inverse;
+ global::Xamarin.Forms.Platform.Resource.Style.TextAppearance_AppCompat_Widget_ActionMode_Subtitle = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_AppCompat_Widget_ActionMode_Subtitle;
+ global::Xamarin.Forms.Platform.Resource.Style.TextAppearance_AppCompat_Widget_ActionMode_Subtitle_Inverse = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_AppCompat_Widget_ActionMode_Subtitle_Inverse;
+ global::Xamarin.Forms.Platform.Resource.Style.TextAppearance_AppCompat_Widget_ActionMode_Title = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_AppCompat_Widget_ActionMode_Title;
+ global::Xamarin.Forms.Platform.Resource.Style.TextAppearance_AppCompat_Widget_ActionMode_Title_Inverse = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_AppCompat_Widget_ActionMode_Title_Inverse;
+ global::Xamarin.Forms.Platform.Resource.Style.TextAppearance_AppCompat_Widget_Button = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_AppCompat_Widget_Button;
+ global::Xamarin.Forms.Platform.Resource.Style.TextAppearance_AppCompat_Widget_Button_Borderless_Colored = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_AppCompat_Widget_Button_Borderless_Colored;
+ global::Xamarin.Forms.Platform.Resource.Style.TextAppearance_AppCompat_Widget_Button_Colored = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_AppCompat_Widget_Button_Colored;
+ global::Xamarin.Forms.Platform.Resource.Style.TextAppearance_AppCompat_Widget_Button_Inverse = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_AppCompat_Widget_Button_Inverse;
+ global::Xamarin.Forms.Platform.Resource.Style.TextAppearance_AppCompat_Widget_DropDownItem = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_AppCompat_Widget_DropDownItem;
+ global::Xamarin.Forms.Platform.Resource.Style.TextAppearance_AppCompat_Widget_PopupMenu_Header = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_AppCompat_Widget_PopupMenu_Header;
+ global::Xamarin.Forms.Platform.Resource.Style.TextAppearance_AppCompat_Widget_PopupMenu_Large = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_AppCompat_Widget_PopupMenu_Large;
+ global::Xamarin.Forms.Platform.Resource.Style.TextAppearance_AppCompat_Widget_PopupMenu_Small = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_AppCompat_Widget_PopupMenu_Small;
+ global::Xamarin.Forms.Platform.Resource.Style.TextAppearance_AppCompat_Widget_Switch = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_AppCompat_Widget_Switch;
+ global::Xamarin.Forms.Platform.Resource.Style.TextAppearance_AppCompat_Widget_TextView_SpinnerItem = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_AppCompat_Widget_TextView_SpinnerItem;
+ global::Xamarin.Forms.Platform.Resource.Style.TextAppearance_Compat_Notification = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_Compat_Notification;
+ global::Xamarin.Forms.Platform.Resource.Style.TextAppearance_Compat_Notification_Info = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_Compat_Notification_Info;
+ global::Xamarin.Forms.Platform.Resource.Style.TextAppearance_Compat_Notification_Info_Media = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_Compat_Notification_Info_Media;
+ global::Xamarin.Forms.Platform.Resource.Style.TextAppearance_Compat_Notification_Line2 = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_Compat_Notification_Line2;
+ global::Xamarin.Forms.Platform.Resource.Style.TextAppearance_Compat_Notification_Line2_Media = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_Compat_Notification_Line2_Media;
+ global::Xamarin.Forms.Platform.Resource.Style.TextAppearance_Compat_Notification_Media = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_Compat_Notification_Media;
+ global::Xamarin.Forms.Platform.Resource.Style.TextAppearance_Compat_Notification_Time = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_Compat_Notification_Time;
+ global::Xamarin.Forms.Platform.Resource.Style.TextAppearance_Compat_Notification_Time_Media = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_Compat_Notification_Time_Media;
+ global::Xamarin.Forms.Platform.Resource.Style.TextAppearance_Compat_Notification_Title = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_Compat_Notification_Title;
+ global::Xamarin.Forms.Platform.Resource.Style.TextAppearance_Compat_Notification_Title_Media = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_Compat_Notification_Title_Media;
+ global::Xamarin.Forms.Platform.Resource.Style.TextAppearance_Design_CollapsingToolbar_Expanded = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_Design_CollapsingToolbar_Expanded;
+ global::Xamarin.Forms.Platform.Resource.Style.TextAppearance_Design_Counter = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_Design_Counter;
+ global::Xamarin.Forms.Platform.Resource.Style.TextAppearance_Design_Counter_Overflow = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_Design_Counter_Overflow;
+ global::Xamarin.Forms.Platform.Resource.Style.TextAppearance_Design_Error = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_Design_Error;
+ global::Xamarin.Forms.Platform.Resource.Style.TextAppearance_Design_HelperText = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_Design_HelperText;
+ global::Xamarin.Forms.Platform.Resource.Style.TextAppearance_Design_Hint = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_Design_Hint;
+ global::Xamarin.Forms.Platform.Resource.Style.TextAppearance_Design_Snackbar_Message = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_Design_Snackbar_Message;
+ global::Xamarin.Forms.Platform.Resource.Style.TextAppearance_Design_Tab = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_Design_Tab;
+ global::Xamarin.Forms.Platform.Resource.Style.TextAppearance_MaterialComponents_Body1 = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_MaterialComponents_Body1;
+ global::Xamarin.Forms.Platform.Resource.Style.TextAppearance_MaterialComponents_Body2 = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_MaterialComponents_Body2;
+ global::Xamarin.Forms.Platform.Resource.Style.TextAppearance_MaterialComponents_Button = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_MaterialComponents_Button;
+ global::Xamarin.Forms.Platform.Resource.Style.TextAppearance_MaterialComponents_Caption = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_MaterialComponents_Caption;
+ global::Xamarin.Forms.Platform.Resource.Style.TextAppearance_MaterialComponents_Chip = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_MaterialComponents_Chip;
+ global::Xamarin.Forms.Platform.Resource.Style.TextAppearance_MaterialComponents_Headline1 = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_MaterialComponents_Headline1;
+ global::Xamarin.Forms.Platform.Resource.Style.TextAppearance_MaterialComponents_Headline2 = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_MaterialComponents_Headline2;
+ global::Xamarin.Forms.Platform.Resource.Style.TextAppearance_MaterialComponents_Headline3 = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_MaterialComponents_Headline3;
+ global::Xamarin.Forms.Platform.Resource.Style.TextAppearance_MaterialComponents_Headline4 = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_MaterialComponents_Headline4;
+ global::Xamarin.Forms.Platform.Resource.Style.TextAppearance_MaterialComponents_Headline5 = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_MaterialComponents_Headline5;
+ global::Xamarin.Forms.Platform.Resource.Style.TextAppearance_MaterialComponents_Headline6 = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_MaterialComponents_Headline6;
+ global::Xamarin.Forms.Platform.Resource.Style.TextAppearance_MaterialComponents_Overline = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_MaterialComponents_Overline;
+ global::Xamarin.Forms.Platform.Resource.Style.TextAppearance_MaterialComponents_Subtitle1 = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_MaterialComponents_Subtitle1;
+ global::Xamarin.Forms.Platform.Resource.Style.TextAppearance_MaterialComponents_Subtitle2 = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_MaterialComponents_Subtitle2;
+ global::Xamarin.Forms.Platform.Resource.Style.TextAppearance_MaterialComponents_Tab = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_MaterialComponents_Tab;
+ global::Xamarin.Forms.Platform.Resource.Style.TextAppearance_Widget_AppCompat_ExpandedMenu_Item = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_Widget_AppCompat_ExpandedMenu_Item;
+ global::Xamarin.Forms.Platform.Resource.Style.TextAppearance_Widget_AppCompat_Toolbar_Subtitle = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_Widget_AppCompat_Toolbar_Subtitle;
+ global::Xamarin.Forms.Platform.Resource.Style.TextAppearance_Widget_AppCompat_Toolbar_Title = global::HelloworldXamarin.Droid.Resource.Style.TextAppearance_Widget_AppCompat_Toolbar_Title;
+ global::Xamarin.Forms.Platform.Resource.Style.ThemeOverlay_AppCompat = global::HelloworldXamarin.Droid.Resource.Style.ThemeOverlay_AppCompat;
+ global::Xamarin.Forms.Platform.Resource.Style.ThemeOverlay_AppCompat_ActionBar = global::HelloworldXamarin.Droid.Resource.Style.ThemeOverlay_AppCompat_ActionBar;
+ global::Xamarin.Forms.Platform.Resource.Style.ThemeOverlay_AppCompat_Dark = global::HelloworldXamarin.Droid.Resource.Style.ThemeOverlay_AppCompat_Dark;
+ global::Xamarin.Forms.Platform.Resource.Style.ThemeOverlay_AppCompat_Dark_ActionBar = global::HelloworldXamarin.Droid.Resource.Style.ThemeOverlay_AppCompat_Dark_ActionBar;
+ global::Xamarin.Forms.Platform.Resource.Style.ThemeOverlay_AppCompat_Dialog = global::HelloworldXamarin.Droid.Resource.Style.ThemeOverlay_AppCompat_Dialog;
+ global::Xamarin.Forms.Platform.Resource.Style.ThemeOverlay_AppCompat_Dialog_Alert = global::HelloworldXamarin.Droid.Resource.Style.ThemeOverlay_AppCompat_Dialog_Alert;
+ global::Xamarin.Forms.Platform.Resource.Style.ThemeOverlay_AppCompat_Light = global::HelloworldXamarin.Droid.Resource.Style.ThemeOverlay_AppCompat_Light;
+ global::Xamarin.Forms.Platform.Resource.Style.ThemeOverlay_MaterialComponents = global::HelloworldXamarin.Droid.Resource.Style.ThemeOverlay_MaterialComponents;
+ global::Xamarin.Forms.Platform.Resource.Style.ThemeOverlay_MaterialComponents_ActionBar = global::HelloworldXamarin.Droid.Resource.Style.ThemeOverlay_MaterialComponents_ActionBar;
+ global::Xamarin.Forms.Platform.Resource.Style.ThemeOverlay_MaterialComponents_Dark = global::HelloworldXamarin.Droid.Resource.Style.ThemeOverlay_MaterialComponents_Dark;
+ global::Xamarin.Forms.Platform.Resource.Style.ThemeOverlay_MaterialComponents_Dark_ActionBar = global::HelloworldXamarin.Droid.Resource.Style.ThemeOverlay_MaterialComponents_Dark_ActionBar;
+ global::Xamarin.Forms.Platform.Resource.Style.ThemeOverlay_MaterialComponents_Dialog = global::HelloworldXamarin.Droid.Resource.Style.ThemeOverlay_MaterialComponents_Dialog;
+ global::Xamarin.Forms.Platform.Resource.Style.ThemeOverlay_MaterialComponents_Dialog_Alert = global::HelloworldXamarin.Droid.Resource.Style.ThemeOverlay_MaterialComponents_Dialog_Alert;
+ global::Xamarin.Forms.Platform.Resource.Style.ThemeOverlay_MaterialComponents_Light = global::HelloworldXamarin.Droid.Resource.Style.ThemeOverlay_MaterialComponents_Light;
+ global::Xamarin.Forms.Platform.Resource.Style.ThemeOverlay_MaterialComponents_TextInputEditText = global::HelloworldXamarin.Droid.Resource.Style.ThemeOverlay_MaterialComponents_TextInputEditText;
+ global::Xamarin.Forms.Platform.Resource.Style.ThemeOverlay_MaterialComponents_TextInputEditText_FilledBox = global::HelloworldXamarin.Droid.Resource.Style.ThemeOverlay_MaterialComponents_TextInputEditText_FilledBox;
+ global::Xamarin.Forms.Platform.Resource.Style.ThemeOverlay_MaterialComponents_TextInputEditText_FilledBox_Dense = global::HelloworldXamarin.Droid.Resource.Style.ThemeOverlay_MaterialComponents_TextInputEditText_FilledBox_Dense;
+ global::Xamarin.Forms.Platform.Resource.Style.ThemeOverlay_MaterialComponents_TextInputEditText_OutlinedBox = global::HelloworldXamarin.Droid.Resource.Style.ThemeOverlay_MaterialComponents_TextInputEditText_OutlinedBox;
+ global::Xamarin.Forms.Platform.Resource.Style.ThemeOverlay_MaterialComponents_TextInputEditText_OutlinedBox_Dense = global::HelloworldXamarin.Droid.Resource.Style.ThemeOverlay_MaterialComponents_TextInputEditText_OutlinedBox_Dense;
+ global::Xamarin.Forms.Platform.Resource.Style.Theme_AppCompat = global::HelloworldXamarin.Droid.Resource.Style.Theme_AppCompat;
+ global::Xamarin.Forms.Platform.Resource.Style.Theme_AppCompat_CompactMenu = global::HelloworldXamarin.Droid.Resource.Style.Theme_AppCompat_CompactMenu;
+ global::Xamarin.Forms.Platform.Resource.Style.Theme_AppCompat_DayNight = global::HelloworldXamarin.Droid.Resource.Style.Theme_AppCompat_DayNight;
+ global::Xamarin.Forms.Platform.Resource.Style.Theme_AppCompat_DayNight_DarkActionBar = global::HelloworldXamarin.Droid.Resource.Style.Theme_AppCompat_DayNight_DarkActionBar;
+ global::Xamarin.Forms.Platform.Resource.Style.Theme_AppCompat_DayNight_Dialog = global::HelloworldXamarin.Droid.Resource.Style.Theme_AppCompat_DayNight_Dialog;
+ global::Xamarin.Forms.Platform.Resource.Style.Theme_AppCompat_DayNight_DialogWhenLarge = global::HelloworldXamarin.Droid.Resource.Style.Theme_AppCompat_DayNight_DialogWhenLarge;
+ global::Xamarin.Forms.Platform.Resource.Style.Theme_AppCompat_DayNight_Dialog_Alert = global::HelloworldXamarin.Droid.Resource.Style.Theme_AppCompat_DayNight_Dialog_Alert;
+ global::Xamarin.Forms.Platform.Resource.Style.Theme_AppCompat_DayNight_Dialog_MinWidth = global::HelloworldXamarin.Droid.Resource.Style.Theme_AppCompat_DayNight_Dialog_MinWidth;
+ global::Xamarin.Forms.Platform.Resource.Style.Theme_AppCompat_DayNight_NoActionBar = global::HelloworldXamarin.Droid.Resource.Style.Theme_AppCompat_DayNight_NoActionBar;
+ global::Xamarin.Forms.Platform.Resource.Style.Theme_AppCompat_Dialog = global::HelloworldXamarin.Droid.Resource.Style.Theme_AppCompat_Dialog;
+ global::Xamarin.Forms.Platform.Resource.Style.Theme_AppCompat_DialogWhenLarge = global::HelloworldXamarin.Droid.Resource.Style.Theme_AppCompat_DialogWhenLarge;
+ global::Xamarin.Forms.Platform.Resource.Style.Theme_AppCompat_Dialog_Alert = global::HelloworldXamarin.Droid.Resource.Style.Theme_AppCompat_Dialog_Alert;
+ global::Xamarin.Forms.Platform.Resource.Style.Theme_AppCompat_Dialog_MinWidth = global::HelloworldXamarin.Droid.Resource.Style.Theme_AppCompat_Dialog_MinWidth;
+ global::Xamarin.Forms.Platform.Resource.Style.Theme_AppCompat_Light = global::HelloworldXamarin.Droid.Resource.Style.Theme_AppCompat_Light;
+ global::Xamarin.Forms.Platform.Resource.Style.Theme_AppCompat_Light_DarkActionBar = global::HelloworldXamarin.Droid.Resource.Style.Theme_AppCompat_Light_DarkActionBar;
+ global::Xamarin.Forms.Platform.Resource.Style.Theme_AppCompat_Light_Dialog = global::HelloworldXamarin.Droid.Resource.Style.Theme_AppCompat_Light_Dialog;
+ global::Xamarin.Forms.Platform.Resource.Style.Theme_AppCompat_Light_DialogWhenLarge = global::HelloworldXamarin.Droid.Resource.Style.Theme_AppCompat_Light_DialogWhenLarge;
+ global::Xamarin.Forms.Platform.Resource.Style.Theme_AppCompat_Light_Dialog_Alert = global::HelloworldXamarin.Droid.Resource.Style.Theme_AppCompat_Light_Dialog_Alert;
+ global::Xamarin.Forms.Platform.Resource.Style.Theme_AppCompat_Light_Dialog_MinWidth = global::HelloworldXamarin.Droid.Resource.Style.Theme_AppCompat_Light_Dialog_MinWidth;
+ global::Xamarin.Forms.Platform.Resource.Style.Theme_AppCompat_Light_NoActionBar = global::HelloworldXamarin.Droid.Resource.Style.Theme_AppCompat_Light_NoActionBar;
+ global::Xamarin.Forms.Platform.Resource.Style.Theme_AppCompat_NoActionBar = global::HelloworldXamarin.Droid.Resource.Style.Theme_AppCompat_NoActionBar;
+ global::Xamarin.Forms.Platform.Resource.Style.Theme_Design = global::HelloworldXamarin.Droid.Resource.Style.Theme_Design;
+ global::Xamarin.Forms.Platform.Resource.Style.Theme_Design_BottomSheetDialog = global::HelloworldXamarin.Droid.Resource.Style.Theme_Design_BottomSheetDialog;
+ global::Xamarin.Forms.Platform.Resource.Style.Theme_Design_Light = global::HelloworldXamarin.Droid.Resource.Style.Theme_Design_Light;
+ global::Xamarin.Forms.Platform.Resource.Style.Theme_Design_Light_BottomSheetDialog = global::HelloworldXamarin.Droid.Resource.Style.Theme_Design_Light_BottomSheetDialog;
+ global::Xamarin.Forms.Platform.Resource.Style.Theme_Design_Light_NoActionBar = global::HelloworldXamarin.Droid.Resource.Style.Theme_Design_Light_NoActionBar;
+ global::Xamarin.Forms.Platform.Resource.Style.Theme_Design_NoActionBar = global::HelloworldXamarin.Droid.Resource.Style.Theme_Design_NoActionBar;
+ global::Xamarin.Forms.Platform.Resource.Style.Theme_MaterialComponents = global::HelloworldXamarin.Droid.Resource.Style.Theme_MaterialComponents;
+ global::Xamarin.Forms.Platform.Resource.Style.Theme_MaterialComponents_BottomSheetDialog = global::HelloworldXamarin.Droid.Resource.Style.Theme_MaterialComponents_BottomSheetDialog;
+ global::Xamarin.Forms.Platform.Resource.Style.Theme_MaterialComponents_Bridge = global::HelloworldXamarin.Droid.Resource.Style.Theme_MaterialComponents_Bridge;
+ global::Xamarin.Forms.Platform.Resource.Style.Theme_MaterialComponents_CompactMenu = global::HelloworldXamarin.Droid.Resource.Style.Theme_MaterialComponents_CompactMenu;
+ global::Xamarin.Forms.Platform.Resource.Style.Theme_MaterialComponents_Dialog = global::HelloworldXamarin.Droid.Resource.Style.Theme_MaterialComponents_Dialog;
+ global::Xamarin.Forms.Platform.Resource.Style.Theme_MaterialComponents_DialogWhenLarge = global::HelloworldXamarin.Droid.Resource.Style.Theme_MaterialComponents_DialogWhenLarge;
+ global::Xamarin.Forms.Platform.Resource.Style.Theme_MaterialComponents_Dialog_Alert = global::HelloworldXamarin.Droid.Resource.Style.Theme_MaterialComponents_Dialog_Alert;
+ global::Xamarin.Forms.Platform.Resource.Style.Theme_MaterialComponents_Dialog_MinWidth = global::HelloworldXamarin.Droid.Resource.Style.Theme_MaterialComponents_Dialog_MinWidth;
+ global::Xamarin.Forms.Platform.Resource.Style.Theme_MaterialComponents_Light = global::HelloworldXamarin.Droid.Resource.Style.Theme_MaterialComponents_Light;
+ global::Xamarin.Forms.Platform.Resource.Style.Theme_MaterialComponents_Light_BottomSheetDialog = global::HelloworldXamarin.Droid.Resource.Style.Theme_MaterialComponents_Light_BottomSheetDialog;
+ global::Xamarin.Forms.Platform.Resource.Style.Theme_MaterialComponents_Light_Bridge = global::HelloworldXamarin.Droid.Resource.Style.Theme_MaterialComponents_Light_Bridge;
+ global::Xamarin.Forms.Platform.Resource.Style.Theme_MaterialComponents_Light_DarkActionBar = global::HelloworldXamarin.Droid.Resource.Style.Theme_MaterialComponents_Light_DarkActionBar;
+ global::Xamarin.Forms.Platform.Resource.Style.Theme_MaterialComponents_Light_DarkActionBar_Bridge = global::HelloworldXamarin.Droid.Resource.Style.Theme_MaterialComponents_Light_DarkActionBar_Bridge;
+ global::Xamarin.Forms.Platform.Resource.Style.Theme_MaterialComponents_Light_Dialog = global::HelloworldXamarin.Droid.Resource.Style.Theme_MaterialComponents_Light_Dialog;
+ global::Xamarin.Forms.Platform.Resource.Style.Theme_MaterialComponents_Light_DialogWhenLarge = global::HelloworldXamarin.Droid.Resource.Style.Theme_MaterialComponents_Light_DialogWhenLarge;
+ global::Xamarin.Forms.Platform.Resource.Style.Theme_MaterialComponents_Light_Dialog_Alert = global::HelloworldXamarin.Droid.Resource.Style.Theme_MaterialComponents_Light_Dialog_Alert;
+ global::Xamarin.Forms.Platform.Resource.Style.Theme_MaterialComponents_Light_Dialog_MinWidth = global::HelloworldXamarin.Droid.Resource.Style.Theme_MaterialComponents_Light_Dialog_MinWidth;
+ global::Xamarin.Forms.Platform.Resource.Style.Theme_MaterialComponents_Light_NoActionBar = global::HelloworldXamarin.Droid.Resource.Style.Theme_MaterialComponents_Light_NoActionBar;
+ global::Xamarin.Forms.Platform.Resource.Style.Theme_MaterialComponents_Light_NoActionBar_Bridge = global::HelloworldXamarin.Droid.Resource.Style.Theme_MaterialComponents_Light_NoActionBar_Bridge;
+ global::Xamarin.Forms.Platform.Resource.Style.Theme_MaterialComponents_NoActionBar = global::HelloworldXamarin.Droid.Resource.Style.Theme_MaterialComponents_NoActionBar;
+ global::Xamarin.Forms.Platform.Resource.Style.Theme_MaterialComponents_NoActionBar_Bridge = global::HelloworldXamarin.Droid.Resource.Style.Theme_MaterialComponents_NoActionBar_Bridge;
+ global::Xamarin.Forms.Platform.Resource.Style.Widget_AppCompat_ActionBar = global::HelloworldXamarin.Droid.Resource.Style.Widget_AppCompat_ActionBar;
+ global::Xamarin.Forms.Platform.Resource.Style.Widget_AppCompat_ActionBar_Solid = global::HelloworldXamarin.Droid.Resource.Style.Widget_AppCompat_ActionBar_Solid;
+ global::Xamarin.Forms.Platform.Resource.Style.Widget_AppCompat_ActionBar_TabBar = global::HelloworldXamarin.Droid.Resource.Style.Widget_AppCompat_ActionBar_TabBar;
+ global::Xamarin.Forms.Platform.Resource.Style.Widget_AppCompat_ActionBar_TabText = global::HelloworldXamarin.Droid.Resource.Style.Widget_AppCompat_ActionBar_TabText;
+ global::Xamarin.Forms.Platform.Resource.Style.Widget_AppCompat_ActionBar_TabView = global::HelloworldXamarin.Droid.Resource.Style.Widget_AppCompat_ActionBar_TabView;
+ global::Xamarin.Forms.Platform.Resource.Style.Widget_AppCompat_ActionButton = global::HelloworldXamarin.Droid.Resource.Style.Widget_AppCompat_ActionButton;
+ global::Xamarin.Forms.Platform.Resource.Style.Widget_AppCompat_ActionButton_CloseMode = global::HelloworldXamarin.Droid.Resource.Style.Widget_AppCompat_ActionButton_CloseMode;
+ global::Xamarin.Forms.Platform.Resource.Style.Widget_AppCompat_ActionButton_Overflow = global::HelloworldXamarin.Droid.Resource.Style.Widget_AppCompat_ActionButton_Overflow;
+ global::Xamarin.Forms.Platform.Resource.Style.Widget_AppCompat_ActionMode = global::HelloworldXamarin.Droid.Resource.Style.Widget_AppCompat_ActionMode;
+ global::Xamarin.Forms.Platform.Resource.Style.Widget_AppCompat_ActivityChooserView = global::HelloworldXamarin.Droid.Resource.Style.Widget_AppCompat_ActivityChooserView;
+ global::Xamarin.Forms.Platform.Resource.Style.Widget_AppCompat_AutoCompleteTextView = global::HelloworldXamarin.Droid.Resource.Style.Widget_AppCompat_AutoCompleteTextView;
+ global::Xamarin.Forms.Platform.Resource.Style.Widget_AppCompat_Button = global::HelloworldXamarin.Droid.Resource.Style.Widget_AppCompat_Button;
+ global::Xamarin.Forms.Platform.Resource.Style.Widget_AppCompat_ButtonBar = global::HelloworldXamarin.Droid.Resource.Style.Widget_AppCompat_ButtonBar;
+ global::Xamarin.Forms.Platform.Resource.Style.Widget_AppCompat_ButtonBar_AlertDialog = global::HelloworldXamarin.Droid.Resource.Style.Widget_AppCompat_ButtonBar_AlertDialog;
+ global::Xamarin.Forms.Platform.Resource.Style.Widget_AppCompat_Button_Borderless = global::HelloworldXamarin.Droid.Resource.Style.Widget_AppCompat_Button_Borderless;
+ global::Xamarin.Forms.Platform.Resource.Style.Widget_AppCompat_Button_Borderless_Colored = global::HelloworldXamarin.Droid.Resource.Style.Widget_AppCompat_Button_Borderless_Colored;
+ global::Xamarin.Forms.Platform.Resource.Style.Widget_AppCompat_Button_ButtonBar_AlertDialog = global::HelloworldXamarin.Droid.Resource.Style.Widget_AppCompat_Button_ButtonBar_AlertDialog;
+ global::Xamarin.Forms.Platform.Resource.Style.Widget_AppCompat_Button_Colored = global::HelloworldXamarin.Droid.Resource.Style.Widget_AppCompat_Button_Colored;
+ global::Xamarin.Forms.Platform.Resource.Style.Widget_AppCompat_Button_Small = global::HelloworldXamarin.Droid.Resource.Style.Widget_AppCompat_Button_Small;
+ global::Xamarin.Forms.Platform.Resource.Style.Widget_AppCompat_CompoundButton_CheckBox = global::HelloworldXamarin.Droid.Resource.Style.Widget_AppCompat_CompoundButton_CheckBox;
+ global::Xamarin.Forms.Platform.Resource.Style.Widget_AppCompat_CompoundButton_RadioButton = global::HelloworldXamarin.Droid.Resource.Style.Widget_AppCompat_CompoundButton_RadioButton;
+ global::Xamarin.Forms.Platform.Resource.Style.Widget_AppCompat_CompoundButton_Switch = global::HelloworldXamarin.Droid.Resource.Style.Widget_AppCompat_CompoundButton_Switch;
+ global::Xamarin.Forms.Platform.Resource.Style.Widget_AppCompat_DrawerArrowToggle = global::HelloworldXamarin.Droid.Resource.Style.Widget_AppCompat_DrawerArrowToggle;
+ global::Xamarin.Forms.Platform.Resource.Style.Widget_AppCompat_DropDownItem_Spinner = global::HelloworldXamarin.Droid.Resource.Style.Widget_AppCompat_DropDownItem_Spinner;
+ global::Xamarin.Forms.Platform.Resource.Style.Widget_AppCompat_EditText = global::HelloworldXamarin.Droid.Resource.Style.Widget_AppCompat_EditText;
+ global::Xamarin.Forms.Platform.Resource.Style.Widget_AppCompat_ImageButton = global::HelloworldXamarin.Droid.Resource.Style.Widget_AppCompat_ImageButton;
+ global::Xamarin.Forms.Platform.Resource.Style.Widget_AppCompat_Light_ActionBar = global::HelloworldXamarin.Droid.Resource.Style.Widget_AppCompat_Light_ActionBar;
+ global::Xamarin.Forms.Platform.Resource.Style.Widget_AppCompat_Light_ActionBar_Solid = global::HelloworldXamarin.Droid.Resource.Style.Widget_AppCompat_Light_ActionBar_Solid;
+ global::Xamarin.Forms.Platform.Resource.Style.Widget_AppCompat_Light_ActionBar_Solid_Inverse = global::HelloworldXamarin.Droid.Resource.Style.Widget_AppCompat_Light_ActionBar_Solid_Inverse;
+ global::Xamarin.Forms.Platform.Resource.Style.Widget_AppCompat_Light_ActionBar_TabBar = global::HelloworldXamarin.Droid.Resource.Style.Widget_AppCompat_Light_ActionBar_TabBar;
+ global::Xamarin.Forms.Platform.Resource.Style.Widget_AppCompat_Light_ActionBar_TabBar_Inverse = global::HelloworldXamarin.Droid.Resource.Style.Widget_AppCompat_Light_ActionBar_TabBar_Inverse;
+ global::Xamarin.Forms.Platform.Resource.Style.Widget_AppCompat_Light_ActionBar_TabText = global::HelloworldXamarin.Droid.Resource.Style.Widget_AppCompat_Light_ActionBar_TabText;
+ global::Xamarin.Forms.Platform.Resource.Style.Widget_AppCompat_Light_ActionBar_TabText_Inverse = global::HelloworldXamarin.Droid.Resource.Style.Widget_AppCompat_Light_ActionBar_TabText_Inverse;
+ global::Xamarin.Forms.Platform.Resource.Style.Widget_AppCompat_Light_ActionBar_TabView = global::HelloworldXamarin.Droid.Resource.Style.Widget_AppCompat_Light_ActionBar_TabView;
+ global::Xamarin.Forms.Platform.Resource.Style.Widget_AppCompat_Light_ActionBar_TabView_Inverse = global::HelloworldXamarin.Droid.Resource.Style.Widget_AppCompat_Light_ActionBar_TabView_Inverse;
+ global::Xamarin.Forms.Platform.Resource.Style.Widget_AppCompat_Light_ActionButton = global::HelloworldXamarin.Droid.Resource.Style.Widget_AppCompat_Light_ActionButton;
+ global::Xamarin.Forms.Platform.Resource.Style.Widget_AppCompat_Light_ActionButton_CloseMode = global::HelloworldXamarin.Droid.Resource.Style.Widget_AppCompat_Light_ActionButton_CloseMode;
+ global::Xamarin.Forms.Platform.Resource.Style.Widget_AppCompat_Light_ActionButton_Overflow = global::HelloworldXamarin.Droid.Resource.Style.Widget_AppCompat_Light_ActionButton_Overflow;
+ global::Xamarin.Forms.Platform.Resource.Style.Widget_AppCompat_Light_ActionMode_Inverse = global::HelloworldXamarin.Droid.Resource.Style.Widget_AppCompat_Light_ActionMode_Inverse;
+ global::Xamarin.Forms.Platform.Resource.Style.Widget_AppCompat_Light_ActivityChooserView = global::HelloworldXamarin.Droid.Resource.Style.Widget_AppCompat_Light_ActivityChooserView;
+ global::Xamarin.Forms.Platform.Resource.Style.Widget_AppCompat_Light_AutoCompleteTextView = global::HelloworldXamarin.Droid.Resource.Style.Widget_AppCompat_Light_AutoCompleteTextView;
+ global::Xamarin.Forms.Platform.Resource.Style.Widget_AppCompat_Light_DropDownItem_Spinner = global::HelloworldXamarin.Droid.Resource.Style.Widget_AppCompat_Light_DropDownItem_Spinner;
+ global::Xamarin.Forms.Platform.Resource.Style.Widget_AppCompat_Light_ListPopupWindow = global::HelloworldXamarin.Droid.Resource.Style.Widget_AppCompat_Light_ListPopupWindow;
+ global::Xamarin.Forms.Platform.Resource.Style.Widget_AppCompat_Light_ListView_DropDown = global::HelloworldXamarin.Droid.Resource.Style.Widget_AppCompat_Light_ListView_DropDown;
+ global::Xamarin.Forms.Platform.Resource.Style.Widget_AppCompat_Light_PopupMenu = global::HelloworldXamarin.Droid.Resource.Style.Widget_AppCompat_Light_PopupMenu;
+ global::Xamarin.Forms.Platform.Resource.Style.Widget_AppCompat_Light_PopupMenu_Overflow = global::HelloworldXamarin.Droid.Resource.Style.Widget_AppCompat_Light_PopupMenu_Overflow;
+ global::Xamarin.Forms.Platform.Resource.Style.Widget_AppCompat_Light_SearchView = global::HelloworldXamarin.Droid.Resource.Style.Widget_AppCompat_Light_SearchView;
+ global::Xamarin.Forms.Platform.Resource.Style.Widget_AppCompat_Light_Spinner_DropDown_ActionBar = global::HelloworldXamarin.Droid.Resource.Style.Widget_AppCompat_Light_Spinner_DropDown_ActionBar;
+ global::Xamarin.Forms.Platform.Resource.Style.Widget_AppCompat_ListMenuView = global::HelloworldXamarin.Droid.Resource.Style.Widget_AppCompat_ListMenuView;
+ global::Xamarin.Forms.Platform.Resource.Style.Widget_AppCompat_ListPopupWindow = global::HelloworldXamarin.Droid.Resource.Style.Widget_AppCompat_ListPopupWindow;
+ global::Xamarin.Forms.Platform.Resource.Style.Widget_AppCompat_ListView = global::HelloworldXamarin.Droid.Resource.Style.Widget_AppCompat_ListView;
+ global::Xamarin.Forms.Platform.Resource.Style.Widget_AppCompat_ListView_DropDown = global::HelloworldXamarin.Droid.Resource.Style.Widget_AppCompat_ListView_DropDown;
+ global::Xamarin.Forms.Platform.Resource.Style.Widget_AppCompat_ListView_Menu = global::HelloworldXamarin.Droid.Resource.Style.Widget_AppCompat_ListView_Menu;
+ global::Xamarin.Forms.Platform.Resource.Style.Widget_AppCompat_PopupMenu = global::HelloworldXamarin.Droid.Resource.Style.Widget_AppCompat_PopupMenu;
+ global::Xamarin.Forms.Platform.Resource.Style.Widget_AppCompat_PopupMenu_Overflow = global::HelloworldXamarin.Droid.Resource.Style.Widget_AppCompat_PopupMenu_Overflow;
+ global::Xamarin.Forms.Platform.Resource.Style.Widget_AppCompat_PopupWindow = global::HelloworldXamarin.Droid.Resource.Style.Widget_AppCompat_PopupWindow;
+ global::Xamarin.Forms.Platform.Resource.Style.Widget_AppCompat_ProgressBar = global::HelloworldXamarin.Droid.Resource.Style.Widget_AppCompat_ProgressBar;
+ global::Xamarin.Forms.Platform.Resource.Style.Widget_AppCompat_ProgressBar_Horizontal = global::HelloworldXamarin.Droid.Resource.Style.Widget_AppCompat_ProgressBar_Horizontal;
+ global::Xamarin.Forms.Platform.Resource.Style.Widget_AppCompat_RatingBar = global::HelloworldXamarin.Droid.Resource.Style.Widget_AppCompat_RatingBar;
+ global::Xamarin.Forms.Platform.Resource.Style.Widget_AppCompat_RatingBar_Indicator = global::HelloworldXamarin.Droid.Resource.Style.Widget_AppCompat_RatingBar_Indicator;
+ global::Xamarin.Forms.Platform.Resource.Style.Widget_AppCompat_RatingBar_Small = global::HelloworldXamarin.Droid.Resource.Style.Widget_AppCompat_RatingBar_Small;
+ global::Xamarin.Forms.Platform.Resource.Style.Widget_AppCompat_SearchView = global::HelloworldXamarin.Droid.Resource.Style.Widget_AppCompat_SearchView;
+ global::Xamarin.Forms.Platform.Resource.Style.Widget_AppCompat_SearchView_ActionBar = global::HelloworldXamarin.Droid.Resource.Style.Widget_AppCompat_SearchView_ActionBar;
+ global::Xamarin.Forms.Platform.Resource.Style.Widget_AppCompat_SeekBar = global::HelloworldXamarin.Droid.Resource.Style.Widget_AppCompat_SeekBar;
+ global::Xamarin.Forms.Platform.Resource.Style.Widget_AppCompat_SeekBar_Discrete = global::HelloworldXamarin.Droid.Resource.Style.Widget_AppCompat_SeekBar_Discrete;
+ global::Xamarin.Forms.Platform.Resource.Style.Widget_AppCompat_Spinner = global::HelloworldXamarin.Droid.Resource.Style.Widget_AppCompat_Spinner;
+ global::Xamarin.Forms.Platform.Resource.Style.Widget_AppCompat_Spinner_DropDown = global::HelloworldXamarin.Droid.Resource.Style.Widget_AppCompat_Spinner_DropDown;
+ global::Xamarin.Forms.Platform.Resource.Style.Widget_AppCompat_Spinner_DropDown_ActionBar = global::HelloworldXamarin.Droid.Resource.Style.Widget_AppCompat_Spinner_DropDown_ActionBar;
+ global::Xamarin.Forms.Platform.Resource.Style.Widget_AppCompat_Spinner_Underlined = global::HelloworldXamarin.Droid.Resource.Style.Widget_AppCompat_Spinner_Underlined;
+ global::Xamarin.Forms.Platform.Resource.Style.Widget_AppCompat_TextView_SpinnerItem = global::HelloworldXamarin.Droid.Resource.Style.Widget_AppCompat_TextView_SpinnerItem;
+ global::Xamarin.Forms.Platform.Resource.Style.Widget_AppCompat_Toolbar = global::HelloworldXamarin.Droid.Resource.Style.Widget_AppCompat_Toolbar;
+ global::Xamarin.Forms.Platform.Resource.Style.Widget_AppCompat_Toolbar_Button_Navigation = global::HelloworldXamarin.Droid.Resource.Style.Widget_AppCompat_Toolbar_Button_Navigation;
+ global::Xamarin.Forms.Platform.Resource.Style.Widget_Compat_NotificationActionContainer = global::HelloworldXamarin.Droid.Resource.Style.Widget_Compat_NotificationActionContainer;
+ global::Xamarin.Forms.Platform.Resource.Style.Widget_Compat_NotificationActionText = global::HelloworldXamarin.Droid.Resource.Style.Widget_Compat_NotificationActionText;
+ global::Xamarin.Forms.Platform.Resource.Style.Widget_Design_AppBarLayout = global::HelloworldXamarin.Droid.Resource.Style.Widget_Design_AppBarLayout;
+ global::Xamarin.Forms.Platform.Resource.Style.Widget_Design_BottomNavigationView = global::HelloworldXamarin.Droid.Resource.Style.Widget_Design_BottomNavigationView;
+ global::Xamarin.Forms.Platform.Resource.Style.Widget_Design_BottomSheet_Modal = global::HelloworldXamarin.Droid.Resource.Style.Widget_Design_BottomSheet_Modal;
+ global::Xamarin.Forms.Platform.Resource.Style.Widget_Design_CollapsingToolbar = global::HelloworldXamarin.Droid.Resource.Style.Widget_Design_CollapsingToolbar;
+ global::Xamarin.Forms.Platform.Resource.Style.Widget_Design_FloatingActionButton = global::HelloworldXamarin.Droid.Resource.Style.Widget_Design_FloatingActionButton;
+ global::Xamarin.Forms.Platform.Resource.Style.Widget_Design_NavigationView = global::HelloworldXamarin.Droid.Resource.Style.Widget_Design_NavigationView;
+ global::Xamarin.Forms.Platform.Resource.Style.Widget_Design_ScrimInsetsFrameLayout = global::HelloworldXamarin.Droid.Resource.Style.Widget_Design_ScrimInsetsFrameLayout;
+ global::Xamarin.Forms.Platform.Resource.Style.Widget_Design_Snackbar = global::HelloworldXamarin.Droid.Resource.Style.Widget_Design_Snackbar;
+ global::Xamarin.Forms.Platform.Resource.Style.Widget_Design_TabLayout = global::HelloworldXamarin.Droid.Resource.Style.Widget_Design_TabLayout;
+ global::Xamarin.Forms.Platform.Resource.Style.Widget_Design_TextInputLayout = global::HelloworldXamarin.Droid.Resource.Style.Widget_Design_TextInputLayout;
+ global::Xamarin.Forms.Platform.Resource.Style.Widget_MaterialComponents_BottomAppBar = global::HelloworldXamarin.Droid.Resource.Style.Widget_MaterialComponents_BottomAppBar;
+ global::Xamarin.Forms.Platform.Resource.Style.Widget_MaterialComponents_BottomAppBar_Colored = global::HelloworldXamarin.Droid.Resource.Style.Widget_MaterialComponents_BottomAppBar_Colored;
+ global::Xamarin.Forms.Platform.Resource.Style.Widget_MaterialComponents_BottomNavigationView = global::HelloworldXamarin.Droid.Resource.Style.Widget_MaterialComponents_BottomNavigationView;
+ global::Xamarin.Forms.Platform.Resource.Style.Widget_MaterialComponents_BottomNavigationView_Colored = global::HelloworldXamarin.Droid.Resource.Style.Widget_MaterialComponents_BottomNavigationView_Colored;
+ global::Xamarin.Forms.Platform.Resource.Style.Widget_MaterialComponents_BottomSheet_Modal = global::HelloworldXamarin.Droid.Resource.Style.Widget_MaterialComponents_BottomSheet_Modal;
+ global::Xamarin.Forms.Platform.Resource.Style.Widget_MaterialComponents_Button = global::HelloworldXamarin.Droid.Resource.Style.Widget_MaterialComponents_Button;
+ global::Xamarin.Forms.Platform.Resource.Style.Widget_MaterialComponents_Button_Icon = global::HelloworldXamarin.Droid.Resource.Style.Widget_MaterialComponents_Button_Icon;
+ global::Xamarin.Forms.Platform.Resource.Style.Widget_MaterialComponents_Button_OutlinedButton = global::HelloworldXamarin.Droid.Resource.Style.Widget_MaterialComponents_Button_OutlinedButton;
+ global::Xamarin.Forms.Platform.Resource.Style.Widget_MaterialComponents_Button_OutlinedButton_Icon = global::HelloworldXamarin.Droid.Resource.Style.Widget_MaterialComponents_Button_OutlinedButton_Icon;
+ global::Xamarin.Forms.Platform.Resource.Style.Widget_MaterialComponents_Button_TextButton = global::HelloworldXamarin.Droid.Resource.Style.Widget_MaterialComponents_Button_TextButton;
+ global::Xamarin.Forms.Platform.Resource.Style.Widget_MaterialComponents_Button_TextButton_Dialog = global::HelloworldXamarin.Droid.Resource.Style.Widget_MaterialComponents_Button_TextButton_Dialog;
+ global::Xamarin.Forms.Platform.Resource.Style.Widget_MaterialComponents_Button_TextButton_Dialog_Icon = global::HelloworldXamarin.Droid.Resource.Style.Widget_MaterialComponents_Button_TextButton_Dialog_Icon;
+ global::Xamarin.Forms.Platform.Resource.Style.Widget_MaterialComponents_Button_TextButton_Icon = global::HelloworldXamarin.Droid.Resource.Style.Widget_MaterialComponents_Button_TextButton_Icon;
+ global::Xamarin.Forms.Platform.Resource.Style.Widget_MaterialComponents_Button_UnelevatedButton = global::HelloworldXamarin.Droid.Resource.Style.Widget_MaterialComponents_Button_UnelevatedButton;
+ global::Xamarin.Forms.Platform.Resource.Style.Widget_MaterialComponents_Button_UnelevatedButton_Icon = global::HelloworldXamarin.Droid.Resource.Style.Widget_MaterialComponents_Button_UnelevatedButton_Icon;
+ global::Xamarin.Forms.Platform.Resource.Style.Widget_MaterialComponents_CardView = global::HelloworldXamarin.Droid.Resource.Style.Widget_MaterialComponents_CardView;
+ global::Xamarin.Forms.Platform.Resource.Style.Widget_MaterialComponents_ChipGroup = global::HelloworldXamarin.Droid.Resource.Style.Widget_MaterialComponents_ChipGroup;
+ global::Xamarin.Forms.Platform.Resource.Style.Widget_MaterialComponents_Chip_Action = global::HelloworldXamarin.Droid.Resource.Style.Widget_MaterialComponents_Chip_Action;
+ global::Xamarin.Forms.Platform.Resource.Style.Widget_MaterialComponents_Chip_Choice = global::HelloworldXamarin.Droid.Resource.Style.Widget_MaterialComponents_Chip_Choice;
+ global::Xamarin.Forms.Platform.Resource.Style.Widget_MaterialComponents_Chip_Entry = global::HelloworldXamarin.Droid.Resource.Style.Widget_MaterialComponents_Chip_Entry;
+ global::Xamarin.Forms.Platform.Resource.Style.Widget_MaterialComponents_Chip_Filter = global::HelloworldXamarin.Droid.Resource.Style.Widget_MaterialComponents_Chip_Filter;
+ global::Xamarin.Forms.Platform.Resource.Style.Widget_MaterialComponents_FloatingActionButton = global::HelloworldXamarin.Droid.Resource.Style.Widget_MaterialComponents_FloatingActionButton;
+ global::Xamarin.Forms.Platform.Resource.Style.Widget_MaterialComponents_NavigationView = global::HelloworldXamarin.Droid.Resource.Style.Widget_MaterialComponents_NavigationView;
+ global::Xamarin.Forms.Platform.Resource.Style.Widget_MaterialComponents_Snackbar = global::HelloworldXamarin.Droid.Resource.Style.Widget_MaterialComponents_Snackbar;
+ global::Xamarin.Forms.Platform.Resource.Style.Widget_MaterialComponents_Snackbar_FullWidth = global::HelloworldXamarin.Droid.Resource.Style.Widget_MaterialComponents_Snackbar_FullWidth;
+ global::Xamarin.Forms.Platform.Resource.Style.Widget_MaterialComponents_TabLayout = global::HelloworldXamarin.Droid.Resource.Style.Widget_MaterialComponents_TabLayout;
+ global::Xamarin.Forms.Platform.Resource.Style.Widget_MaterialComponents_TabLayout_Colored = global::HelloworldXamarin.Droid.Resource.Style.Widget_MaterialComponents_TabLayout_Colored;
+ global::Xamarin.Forms.Platform.Resource.Style.Widget_MaterialComponents_TextInputEditText_FilledBox = global::HelloworldXamarin.Droid.Resource.Style.Widget_MaterialComponents_TextInputEditText_FilledBox;
+ global::Xamarin.Forms.Platform.Resource.Style.Widget_MaterialComponents_TextInputEditText_FilledBox_Dense = global::HelloworldXamarin.Droid.Resource.Style.Widget_MaterialComponents_TextInputEditText_FilledBox_Dense;
+ global::Xamarin.Forms.Platform.Resource.Style.Widget_MaterialComponents_TextInputEditText_OutlinedBox = global::HelloworldXamarin.Droid.Resource.Style.Widget_MaterialComponents_TextInputEditText_OutlinedBox;
+ global::Xamarin.Forms.Platform.Resource.Style.Widget_MaterialComponents_TextInputEditText_OutlinedBox_Dense = global::HelloworldXamarin.Droid.Resource.Style.Widget_MaterialComponents_TextInputEditText_OutlinedBox_Dense;
+ global::Xamarin.Forms.Platform.Resource.Style.Widget_MaterialComponents_TextInputLayout_FilledBox = global::HelloworldXamarin.Droid.Resource.Style.Widget_MaterialComponents_TextInputLayout_FilledBox;
+ global::Xamarin.Forms.Platform.Resource.Style.Widget_MaterialComponents_TextInputLayout_FilledBox_Dense = global::HelloworldXamarin.Droid.Resource.Style.Widget_MaterialComponents_TextInputLayout_FilledBox_Dense;
+ global::Xamarin.Forms.Platform.Resource.Style.Widget_MaterialComponents_TextInputLayout_OutlinedBox = global::HelloworldXamarin.Droid.Resource.Style.Widget_MaterialComponents_TextInputLayout_OutlinedBox;
+ global::Xamarin.Forms.Platform.Resource.Style.Widget_MaterialComponents_TextInputLayout_OutlinedBox_Dense = global::HelloworldXamarin.Droid.Resource.Style.Widget_MaterialComponents_TextInputLayout_OutlinedBox_Dense;
+ global::Xamarin.Forms.Platform.Resource.Style.Widget_MaterialComponents_Toolbar = global::HelloworldXamarin.Droid.Resource.Style.Widget_MaterialComponents_Toolbar;
+ global::Xamarin.Forms.Platform.Resource.Style.Widget_Support_CoordinatorLayout = global::HelloworldXamarin.Droid.Resource.Style.Widget_Support_CoordinatorLayout;
+ global::Xamarin.Forms.Platform.Resource.Styleable.ActionBar = global::HelloworldXamarin.Droid.Resource.Styleable.ActionBar;
+ global::Xamarin.Forms.Platform.Resource.Styleable.ActionBarLayout = global::HelloworldXamarin.Droid.Resource.Styleable.ActionBarLayout;
+ global::Xamarin.Forms.Platform.Resource.Styleable.ActionBarLayout_android_layout_gravity = global::HelloworldXamarin.Droid.Resource.Styleable.ActionBarLayout_android_layout_gravity;
+ global::Xamarin.Forms.Platform.Resource.Styleable.ActionBar_background = global::HelloworldXamarin.Droid.Resource.Styleable.ActionBar_background;
+ global::Xamarin.Forms.Platform.Resource.Styleable.ActionBar_backgroundSplit = global::HelloworldXamarin.Droid.Resource.Styleable.ActionBar_backgroundSplit;
+ global::Xamarin.Forms.Platform.Resource.Styleable.ActionBar_backgroundStacked = global::HelloworldXamarin.Droid.Resource.Styleable.ActionBar_backgroundStacked;
+ global::Xamarin.Forms.Platform.Resource.Styleable.ActionBar_contentInsetEnd = global::HelloworldXamarin.Droid.Resource.Styleable.ActionBar_contentInsetEnd;
+ global::Xamarin.Forms.Platform.Resource.Styleable.ActionBar_contentInsetEndWithActions = global::HelloworldXamarin.Droid.Resource.Styleable.ActionBar_contentInsetEndWithActions;
+ global::Xamarin.Forms.Platform.Resource.Styleable.ActionBar_contentInsetLeft = global::HelloworldXamarin.Droid.Resource.Styleable.ActionBar_contentInsetLeft;
+ global::Xamarin.Forms.Platform.Resource.Styleable.ActionBar_contentInsetRight = global::HelloworldXamarin.Droid.Resource.Styleable.ActionBar_contentInsetRight;
+ global::Xamarin.Forms.Platform.Resource.Styleable.ActionBar_contentInsetStart = global::HelloworldXamarin.Droid.Resource.Styleable.ActionBar_contentInsetStart;
+ global::Xamarin.Forms.Platform.Resource.Styleable.ActionBar_contentInsetStartWithNavigation = global::HelloworldXamarin.Droid.Resource.Styleable.ActionBar_contentInsetStartWithNavigation;
+ global::Xamarin.Forms.Platform.Resource.Styleable.ActionBar_customNavigationLayout = global::HelloworldXamarin.Droid.Resource.Styleable.ActionBar_customNavigationLayout;
+ global::Xamarin.Forms.Platform.Resource.Styleable.ActionBar_displayOptions = global::HelloworldXamarin.Droid.Resource.Styleable.ActionBar_displayOptions;
+ global::Xamarin.Forms.Platform.Resource.Styleable.ActionBar_divider = global::HelloworldXamarin.Droid.Resource.Styleable.ActionBar_divider;
+ global::Xamarin.Forms.Platform.Resource.Styleable.ActionBar_elevation = global::HelloworldXamarin.Droid.Resource.Styleable.ActionBar_elevation;
+ global::Xamarin.Forms.Platform.Resource.Styleable.ActionBar_height = global::HelloworldXamarin.Droid.Resource.Styleable.ActionBar_height;
+ global::Xamarin.Forms.Platform.Resource.Styleable.ActionBar_hideOnContentScroll = global::HelloworldXamarin.Droid.Resource.Styleable.ActionBar_hideOnContentScroll;
+ global::Xamarin.Forms.Platform.Resource.Styleable.ActionBar_homeAsUpIndicator = global::HelloworldXamarin.Droid.Resource.Styleable.ActionBar_homeAsUpIndicator;
+ global::Xamarin.Forms.Platform.Resource.Styleable.ActionBar_homeLayout = global::HelloworldXamarin.Droid.Resource.Styleable.ActionBar_homeLayout;
+ global::Xamarin.Forms.Platform.Resource.Styleable.ActionBar_icon = global::HelloworldXamarin.Droid.Resource.Styleable.ActionBar_icon;
+ global::Xamarin.Forms.Platform.Resource.Styleable.ActionBar_indeterminateProgressStyle = global::HelloworldXamarin.Droid.Resource.Styleable.ActionBar_indeterminateProgressStyle;
+ global::Xamarin.Forms.Platform.Resource.Styleable.ActionBar_itemPadding = global::HelloworldXamarin.Droid.Resource.Styleable.ActionBar_itemPadding;
+ global::Xamarin.Forms.Platform.Resource.Styleable.ActionBar_logo = global::HelloworldXamarin.Droid.Resource.Styleable.ActionBar_logo;
+ global::Xamarin.Forms.Platform.Resource.Styleable.ActionBar_navigationMode = global::HelloworldXamarin.Droid.Resource.Styleable.ActionBar_navigationMode;
+ global::Xamarin.Forms.Platform.Resource.Styleable.ActionBar_popupTheme = global::HelloworldXamarin.Droid.Resource.Styleable.ActionBar_popupTheme;
+ global::Xamarin.Forms.Platform.Resource.Styleable.ActionBar_progressBarPadding = global::HelloworldXamarin.Droid.Resource.Styleable.ActionBar_progressBarPadding;
+ global::Xamarin.Forms.Platform.Resource.Styleable.ActionBar_progressBarStyle = global::HelloworldXamarin.Droid.Resource.Styleable.ActionBar_progressBarStyle;
+ global::Xamarin.Forms.Platform.Resource.Styleable.ActionBar_subtitle = global::HelloworldXamarin.Droid.Resource.Styleable.ActionBar_subtitle;
+ global::Xamarin.Forms.Platform.Resource.Styleable.ActionBar_subtitleTextStyle = global::HelloworldXamarin.Droid.Resource.Styleable.ActionBar_subtitleTextStyle;
+ global::Xamarin.Forms.Platform.Resource.Styleable.ActionBar_title = global::HelloworldXamarin.Droid.Resource.Styleable.ActionBar_title;
+ global::Xamarin.Forms.Platform.Resource.Styleable.ActionBar_titleTextStyle = global::HelloworldXamarin.Droid.Resource.Styleable.ActionBar_titleTextStyle;
+ global::Xamarin.Forms.Platform.Resource.Styleable.ActionMenuItemView = global::HelloworldXamarin.Droid.Resource.Styleable.ActionMenuItemView;
+ global::Xamarin.Forms.Platform.Resource.Styleable.ActionMenuItemView_android_minWidth = global::HelloworldXamarin.Droid.Resource.Styleable.ActionMenuItemView_android_minWidth;
+ global::Xamarin.Forms.Platform.Resource.Styleable.ActionMenuView = global::HelloworldXamarin.Droid.Resource.Styleable.ActionMenuView;
+ global::Xamarin.Forms.Platform.Resource.Styleable.ActionMode = global::HelloworldXamarin.Droid.Resource.Styleable.ActionMode;
+ global::Xamarin.Forms.Platform.Resource.Styleable.ActionMode_background = global::HelloworldXamarin.Droid.Resource.Styleable.ActionMode_background;
+ global::Xamarin.Forms.Platform.Resource.Styleable.ActionMode_backgroundSplit = global::HelloworldXamarin.Droid.Resource.Styleable.ActionMode_backgroundSplit;
+ global::Xamarin.Forms.Platform.Resource.Styleable.ActionMode_closeItemLayout = global::HelloworldXamarin.Droid.Resource.Styleable.ActionMode_closeItemLayout;
+ global::Xamarin.Forms.Platform.Resource.Styleable.ActionMode_height = global::HelloworldXamarin.Droid.Resource.Styleable.ActionMode_height;
+ global::Xamarin.Forms.Platform.Resource.Styleable.ActionMode_subtitleTextStyle = global::HelloworldXamarin.Droid.Resource.Styleable.ActionMode_subtitleTextStyle;
+ global::Xamarin.Forms.Platform.Resource.Styleable.ActionMode_titleTextStyle = global::HelloworldXamarin.Droid.Resource.Styleable.ActionMode_titleTextStyle;
+ global::Xamarin.Forms.Platform.Resource.Styleable.ActivityChooserView = global::HelloworldXamarin.Droid.Resource.Styleable.ActivityChooserView;
+ global::Xamarin.Forms.Platform.Resource.Styleable.ActivityChooserView_expandActivityOverflowButtonDrawable = global::HelloworldXamarin.Droid.Resource.Styleable.ActivityChooserView_expandActivityOverflowButtonDrawable;
+ global::Xamarin.Forms.Platform.Resource.Styleable.ActivityChooserView_initialActivityCount = global::HelloworldXamarin.Droid.Resource.Styleable.ActivityChooserView_initialActivityCount;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AlertDialog = global::HelloworldXamarin.Droid.Resource.Styleable.AlertDialog;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AlertDialog_android_layout = global::HelloworldXamarin.Droid.Resource.Styleable.AlertDialog_android_layout;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AlertDialog_buttonIconDimen = global::HelloworldXamarin.Droid.Resource.Styleable.AlertDialog_buttonIconDimen;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AlertDialog_buttonPanelSideLayout = global::HelloworldXamarin.Droid.Resource.Styleable.AlertDialog_buttonPanelSideLayout;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AlertDialog_listItemLayout = global::HelloworldXamarin.Droid.Resource.Styleable.AlertDialog_listItemLayout;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AlertDialog_listLayout = global::HelloworldXamarin.Droid.Resource.Styleable.AlertDialog_listLayout;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AlertDialog_multiChoiceItemLayout = global::HelloworldXamarin.Droid.Resource.Styleable.AlertDialog_multiChoiceItemLayout;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AlertDialog_showTitle = global::HelloworldXamarin.Droid.Resource.Styleable.AlertDialog_showTitle;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AlertDialog_singleChoiceItemLayout = global::HelloworldXamarin.Droid.Resource.Styleable.AlertDialog_singleChoiceItemLayout;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AnimatedStateListDrawableCompat = global::HelloworldXamarin.Droid.Resource.Styleable.AnimatedStateListDrawableCompat;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AnimatedStateListDrawableCompat_android_constantSize = global::HelloworldXamarin.Droid.Resource.Styleable.AnimatedStateListDrawableCompat_android_constantSize;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AnimatedStateListDrawableCompat_android_dither = global::HelloworldXamarin.Droid.Resource.Styleable.AnimatedStateListDrawableCompat_android_dither;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AnimatedStateListDrawableCompat_android_enterFadeDuration = global::HelloworldXamarin.Droid.Resource.Styleable.AnimatedStateListDrawableCompat_android_enterFadeDuration;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AnimatedStateListDrawableCompat_android_exitFadeDuration = global::HelloworldXamarin.Droid.Resource.Styleable.AnimatedStateListDrawableCompat_android_exitFadeDuration;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AnimatedStateListDrawableCompat_android_variablePadding = global::HelloworldXamarin.Droid.Resource.Styleable.AnimatedStateListDrawableCompat_android_variablePadding;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AnimatedStateListDrawableCompat_android_visible = global::HelloworldXamarin.Droid.Resource.Styleable.AnimatedStateListDrawableCompat_android_visible;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AnimatedStateListDrawableItem = global::HelloworldXamarin.Droid.Resource.Styleable.AnimatedStateListDrawableItem;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AnimatedStateListDrawableItem_android_drawable = global::HelloworldXamarin.Droid.Resource.Styleable.AnimatedStateListDrawableItem_android_drawable;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AnimatedStateListDrawableItem_android_id = global::HelloworldXamarin.Droid.Resource.Styleable.AnimatedStateListDrawableItem_android_id;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AnimatedStateListDrawableTransition = global::HelloworldXamarin.Droid.Resource.Styleable.AnimatedStateListDrawableTransition;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AnimatedStateListDrawableTransition_android_drawable = global::HelloworldXamarin.Droid.Resource.Styleable.AnimatedStateListDrawableTransition_android_drawable;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AnimatedStateListDrawableTransition_android_fromId = global::HelloworldXamarin.Droid.Resource.Styleable.AnimatedStateListDrawableTransition_android_fromId;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AnimatedStateListDrawableTransition_android_reversible = global::HelloworldXamarin.Droid.Resource.Styleable.AnimatedStateListDrawableTransition_android_reversible;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AnimatedStateListDrawableTransition_android_toId = global::HelloworldXamarin.Droid.Resource.Styleable.AnimatedStateListDrawableTransition_android_toId;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AppBarLayout = global::HelloworldXamarin.Droid.Resource.Styleable.AppBarLayout;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AppBarLayoutStates = global::HelloworldXamarin.Droid.Resource.Styleable.AppBarLayoutStates;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AppBarLayoutStates_state_collapsed = global::HelloworldXamarin.Droid.Resource.Styleable.AppBarLayoutStates_state_collapsed;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AppBarLayoutStates_state_collapsible = global::HelloworldXamarin.Droid.Resource.Styleable.AppBarLayoutStates_state_collapsible;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AppBarLayoutStates_state_liftable = global::HelloworldXamarin.Droid.Resource.Styleable.AppBarLayoutStates_state_liftable;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AppBarLayoutStates_state_lifted = global::HelloworldXamarin.Droid.Resource.Styleable.AppBarLayoutStates_state_lifted;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AppBarLayout_android_background = global::HelloworldXamarin.Droid.Resource.Styleable.AppBarLayout_android_background;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AppBarLayout_android_keyboardNavigationCluster = global::HelloworldXamarin.Droid.Resource.Styleable.AppBarLayout_android_keyboardNavigationCluster;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AppBarLayout_android_touchscreenBlocksFocus = global::HelloworldXamarin.Droid.Resource.Styleable.AppBarLayout_android_touchscreenBlocksFocus;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AppBarLayout_elevation = global::HelloworldXamarin.Droid.Resource.Styleable.AppBarLayout_elevation;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AppBarLayout_expanded = global::HelloworldXamarin.Droid.Resource.Styleable.AppBarLayout_expanded;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AppBarLayout_Layout = global::HelloworldXamarin.Droid.Resource.Styleable.AppBarLayout_Layout;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AppBarLayout_Layout_layout_scrollFlags = global::HelloworldXamarin.Droid.Resource.Styleable.AppBarLayout_Layout_layout_scrollFlags;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AppBarLayout_Layout_layout_scrollInterpolator = global::HelloworldXamarin.Droid.Resource.Styleable.AppBarLayout_Layout_layout_scrollInterpolator;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AppBarLayout_liftOnScroll = global::HelloworldXamarin.Droid.Resource.Styleable.AppBarLayout_liftOnScroll;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AppCompatImageView = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatImageView;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AppCompatImageView_android_src = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatImageView_android_src;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AppCompatImageView_srcCompat = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatImageView_srcCompat;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AppCompatImageView_tint = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatImageView_tint;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AppCompatImageView_tintMode = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatImageView_tintMode;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AppCompatSeekBar = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatSeekBar;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AppCompatSeekBar_android_thumb = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatSeekBar_android_thumb;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AppCompatSeekBar_tickMark = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatSeekBar_tickMark;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AppCompatSeekBar_tickMarkTint = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatSeekBar_tickMarkTint;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AppCompatSeekBar_tickMarkTintMode = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatSeekBar_tickMarkTintMode;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AppCompatTextHelper = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTextHelper;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AppCompatTextHelper_android_drawableBottom = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTextHelper_android_drawableBottom;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AppCompatTextHelper_android_drawableEnd = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTextHelper_android_drawableEnd;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AppCompatTextHelper_android_drawableLeft = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTextHelper_android_drawableLeft;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AppCompatTextHelper_android_drawableRight = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTextHelper_android_drawableRight;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AppCompatTextHelper_android_drawableStart = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTextHelper_android_drawableStart;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AppCompatTextHelper_android_drawableTop = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTextHelper_android_drawableTop;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AppCompatTextHelper_android_textAppearance = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTextHelper_android_textAppearance;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AppCompatTextView = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTextView;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AppCompatTextView_android_textAppearance = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTextView_android_textAppearance;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AppCompatTextView_autoSizeMaxTextSize = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTextView_autoSizeMaxTextSize;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AppCompatTextView_autoSizeMinTextSize = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTextView_autoSizeMinTextSize;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AppCompatTextView_autoSizePresetSizes = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTextView_autoSizePresetSizes;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AppCompatTextView_autoSizeStepGranularity = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTextView_autoSizeStepGranularity;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AppCompatTextView_autoSizeTextType = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTextView_autoSizeTextType;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AppCompatTextView_firstBaselineToTopHeight = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTextView_firstBaselineToTopHeight;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AppCompatTextView_fontFamily = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTextView_fontFamily;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AppCompatTextView_lastBaselineToBottomHeight = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTextView_lastBaselineToBottomHeight;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AppCompatTextView_lineHeight = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTextView_lineHeight;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AppCompatTextView_textAllCaps = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTextView_textAllCaps;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AppCompatTheme = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AppCompatTheme_actionBarDivider = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_actionBarDivider;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AppCompatTheme_actionBarItemBackground = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_actionBarItemBackground;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AppCompatTheme_actionBarPopupTheme = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_actionBarPopupTheme;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AppCompatTheme_actionBarSize = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_actionBarSize;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AppCompatTheme_actionBarSplitStyle = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_actionBarSplitStyle;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AppCompatTheme_actionBarStyle = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_actionBarStyle;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AppCompatTheme_actionBarTabBarStyle = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_actionBarTabBarStyle;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AppCompatTheme_actionBarTabStyle = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_actionBarTabStyle;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AppCompatTheme_actionBarTabTextStyle = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_actionBarTabTextStyle;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AppCompatTheme_actionBarTheme = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_actionBarTheme;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AppCompatTheme_actionBarWidgetTheme = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_actionBarWidgetTheme;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AppCompatTheme_actionButtonStyle = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_actionButtonStyle;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AppCompatTheme_actionDropDownStyle = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_actionDropDownStyle;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AppCompatTheme_actionMenuTextAppearance = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_actionMenuTextAppearance;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AppCompatTheme_actionMenuTextColor = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_actionMenuTextColor;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AppCompatTheme_actionModeBackground = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_actionModeBackground;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AppCompatTheme_actionModeCloseButtonStyle = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_actionModeCloseButtonStyle;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AppCompatTheme_actionModeCloseDrawable = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_actionModeCloseDrawable;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AppCompatTheme_actionModeCopyDrawable = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_actionModeCopyDrawable;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AppCompatTheme_actionModeCutDrawable = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_actionModeCutDrawable;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AppCompatTheme_actionModeFindDrawable = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_actionModeFindDrawable;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AppCompatTheme_actionModePasteDrawable = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_actionModePasteDrawable;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AppCompatTheme_actionModePopupWindowStyle = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_actionModePopupWindowStyle;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AppCompatTheme_actionModeSelectAllDrawable = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_actionModeSelectAllDrawable;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AppCompatTheme_actionModeShareDrawable = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_actionModeShareDrawable;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AppCompatTheme_actionModeSplitBackground = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_actionModeSplitBackground;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AppCompatTheme_actionModeStyle = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_actionModeStyle;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AppCompatTheme_actionModeWebSearchDrawable = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_actionModeWebSearchDrawable;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AppCompatTheme_actionOverflowButtonStyle = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_actionOverflowButtonStyle;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AppCompatTheme_actionOverflowMenuStyle = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_actionOverflowMenuStyle;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AppCompatTheme_activityChooserViewStyle = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_activityChooserViewStyle;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AppCompatTheme_alertDialogButtonGroupStyle = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_alertDialogButtonGroupStyle;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AppCompatTheme_alertDialogCenterButtons = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_alertDialogCenterButtons;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AppCompatTheme_alertDialogStyle = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_alertDialogStyle;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AppCompatTheme_alertDialogTheme = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_alertDialogTheme;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AppCompatTheme_android_windowAnimationStyle = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_android_windowAnimationStyle;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AppCompatTheme_android_windowIsFloating = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_android_windowIsFloating;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AppCompatTheme_autoCompleteTextViewStyle = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_autoCompleteTextViewStyle;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AppCompatTheme_borderlessButtonStyle = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_borderlessButtonStyle;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AppCompatTheme_buttonBarButtonStyle = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_buttonBarButtonStyle;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AppCompatTheme_buttonBarNegativeButtonStyle = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_buttonBarNegativeButtonStyle;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AppCompatTheme_buttonBarNeutralButtonStyle = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_buttonBarNeutralButtonStyle;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AppCompatTheme_buttonBarPositiveButtonStyle = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_buttonBarPositiveButtonStyle;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AppCompatTheme_buttonBarStyle = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_buttonBarStyle;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AppCompatTheme_buttonStyle = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_buttonStyle;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AppCompatTheme_buttonStyleSmall = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_buttonStyleSmall;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AppCompatTheme_checkboxStyle = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_checkboxStyle;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AppCompatTheme_checkedTextViewStyle = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_checkedTextViewStyle;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AppCompatTheme_colorAccent = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_colorAccent;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AppCompatTheme_colorBackgroundFloating = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_colorBackgroundFloating;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AppCompatTheme_colorButtonNormal = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_colorButtonNormal;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AppCompatTheme_colorControlActivated = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_colorControlActivated;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AppCompatTheme_colorControlHighlight = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_colorControlHighlight;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AppCompatTheme_colorControlNormal = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_colorControlNormal;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AppCompatTheme_colorError = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_colorError;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AppCompatTheme_colorPrimary = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_colorPrimary;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AppCompatTheme_colorPrimaryDark = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_colorPrimaryDark;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AppCompatTheme_colorSwitchThumbNormal = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_colorSwitchThumbNormal;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AppCompatTheme_controlBackground = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_controlBackground;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AppCompatTheme_dialogCornerRadius = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_dialogCornerRadius;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AppCompatTheme_dialogPreferredPadding = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_dialogPreferredPadding;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AppCompatTheme_dialogTheme = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_dialogTheme;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AppCompatTheme_dividerHorizontal = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_dividerHorizontal;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AppCompatTheme_dividerVertical = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_dividerVertical;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AppCompatTheme_dropdownListPreferredItemHeight = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_dropdownListPreferredItemHeight;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AppCompatTheme_dropDownListViewStyle = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_dropDownListViewStyle;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AppCompatTheme_editTextBackground = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_editTextBackground;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AppCompatTheme_editTextColor = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_editTextColor;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AppCompatTheme_editTextStyle = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_editTextStyle;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AppCompatTheme_homeAsUpIndicator = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_homeAsUpIndicator;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AppCompatTheme_imageButtonStyle = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_imageButtonStyle;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AppCompatTheme_listChoiceBackgroundIndicator = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_listChoiceBackgroundIndicator;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AppCompatTheme_listDividerAlertDialog = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_listDividerAlertDialog;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AppCompatTheme_listMenuViewStyle = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_listMenuViewStyle;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AppCompatTheme_listPopupWindowStyle = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_listPopupWindowStyle;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AppCompatTheme_listPreferredItemHeight = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_listPreferredItemHeight;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AppCompatTheme_listPreferredItemHeightLarge = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_listPreferredItemHeightLarge;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AppCompatTheme_listPreferredItemHeightSmall = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_listPreferredItemHeightSmall;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AppCompatTheme_listPreferredItemPaddingLeft = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_listPreferredItemPaddingLeft;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AppCompatTheme_listPreferredItemPaddingRight = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_listPreferredItemPaddingRight;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AppCompatTheme_panelBackground = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_panelBackground;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AppCompatTheme_panelMenuListTheme = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_panelMenuListTheme;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AppCompatTheme_panelMenuListWidth = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_panelMenuListWidth;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AppCompatTheme_popupMenuStyle = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_popupMenuStyle;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AppCompatTheme_popupWindowStyle = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_popupWindowStyle;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AppCompatTheme_radioButtonStyle = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_radioButtonStyle;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AppCompatTheme_ratingBarStyle = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_ratingBarStyle;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AppCompatTheme_ratingBarStyleIndicator = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_ratingBarStyleIndicator;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AppCompatTheme_ratingBarStyleSmall = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_ratingBarStyleSmall;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AppCompatTheme_searchViewStyle = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_searchViewStyle;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AppCompatTheme_seekBarStyle = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_seekBarStyle;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AppCompatTheme_selectableItemBackground = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_selectableItemBackground;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AppCompatTheme_selectableItemBackgroundBorderless = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_selectableItemBackgroundBorderless;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AppCompatTheme_spinnerDropDownItemStyle = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_spinnerDropDownItemStyle;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AppCompatTheme_spinnerStyle = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_spinnerStyle;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AppCompatTheme_switchStyle = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_switchStyle;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AppCompatTheme_textAppearanceLargePopupMenu = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_textAppearanceLargePopupMenu;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AppCompatTheme_textAppearanceListItem = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_textAppearanceListItem;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AppCompatTheme_textAppearanceListItemSecondary = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_textAppearanceListItemSecondary;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AppCompatTheme_textAppearanceListItemSmall = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_textAppearanceListItemSmall;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AppCompatTheme_textAppearancePopupMenuHeader = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_textAppearancePopupMenuHeader;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AppCompatTheme_textAppearanceSearchResultSubtitle = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_textAppearanceSearchResultSubtitle;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AppCompatTheme_textAppearanceSearchResultTitle = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_textAppearanceSearchResultTitle;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AppCompatTheme_textAppearanceSmallPopupMenu = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_textAppearanceSmallPopupMenu;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AppCompatTheme_textColorAlertDialogListItem = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_textColorAlertDialogListItem;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AppCompatTheme_textColorSearchUrl = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_textColorSearchUrl;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AppCompatTheme_toolbarNavigationButtonStyle = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_toolbarNavigationButtonStyle;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AppCompatTheme_toolbarStyle = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_toolbarStyle;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AppCompatTheme_tooltipForegroundColor = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_tooltipForegroundColor;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AppCompatTheme_tooltipFrameBackground = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_tooltipFrameBackground;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AppCompatTheme_viewInflaterClass = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_viewInflaterClass;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AppCompatTheme_windowActionBar = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_windowActionBar;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AppCompatTheme_windowActionBarOverlay = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_windowActionBarOverlay;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AppCompatTheme_windowActionModeOverlay = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_windowActionModeOverlay;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AppCompatTheme_windowFixedHeightMajor = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_windowFixedHeightMajor;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AppCompatTheme_windowFixedHeightMinor = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_windowFixedHeightMinor;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AppCompatTheme_windowFixedWidthMajor = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_windowFixedWidthMajor;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AppCompatTheme_windowFixedWidthMinor = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_windowFixedWidthMinor;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AppCompatTheme_windowMinWidthMajor = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_windowMinWidthMajor;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AppCompatTheme_windowMinWidthMinor = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_windowMinWidthMinor;
+ global::Xamarin.Forms.Platform.Resource.Styleable.AppCompatTheme_windowNoTitle = global::HelloworldXamarin.Droid.Resource.Styleable.AppCompatTheme_windowNoTitle;
+ global::Xamarin.Forms.Platform.Resource.Styleable.BottomAppBar = global::HelloworldXamarin.Droid.Resource.Styleable.BottomAppBar;
+ global::Xamarin.Forms.Platform.Resource.Styleable.BottomAppBar_backgroundTint = global::HelloworldXamarin.Droid.Resource.Styleable.BottomAppBar_backgroundTint;
+ global::Xamarin.Forms.Platform.Resource.Styleable.BottomAppBar_fabAlignmentMode = global::HelloworldXamarin.Droid.Resource.Styleable.BottomAppBar_fabAlignmentMode;
+ global::Xamarin.Forms.Platform.Resource.Styleable.BottomAppBar_fabCradleMargin = global::HelloworldXamarin.Droid.Resource.Styleable.BottomAppBar_fabCradleMargin;
+ global::Xamarin.Forms.Platform.Resource.Styleable.BottomAppBar_fabCradleRoundedCornerRadius = global::HelloworldXamarin.Droid.Resource.Styleable.BottomAppBar_fabCradleRoundedCornerRadius;
+ global::Xamarin.Forms.Platform.Resource.Styleable.BottomAppBar_fabCradleVerticalOffset = global::HelloworldXamarin.Droid.Resource.Styleable.BottomAppBar_fabCradleVerticalOffset;
+ global::Xamarin.Forms.Platform.Resource.Styleable.BottomAppBar_hideOnScroll = global::HelloworldXamarin.Droid.Resource.Styleable.BottomAppBar_hideOnScroll;
+ global::Xamarin.Forms.Platform.Resource.Styleable.BottomNavigationView = global::HelloworldXamarin.Droid.Resource.Styleable.BottomNavigationView;
+ global::Xamarin.Forms.Platform.Resource.Styleable.BottomNavigationView_elevation = global::HelloworldXamarin.Droid.Resource.Styleable.BottomNavigationView_elevation;
+ global::Xamarin.Forms.Platform.Resource.Styleable.BottomNavigationView_itemBackground = global::HelloworldXamarin.Droid.Resource.Styleable.BottomNavigationView_itemBackground;
+ global::Xamarin.Forms.Platform.Resource.Styleable.BottomNavigationView_itemHorizontalTranslationEnabled = global::HelloworldXamarin.Droid.Resource.Styleable.BottomNavigationView_itemHorizontalTranslationEnabled;
+ global::Xamarin.Forms.Platform.Resource.Styleable.BottomNavigationView_itemIconSize = global::HelloworldXamarin.Droid.Resource.Styleable.BottomNavigationView_itemIconSize;
+ global::Xamarin.Forms.Platform.Resource.Styleable.BottomNavigationView_itemIconTint = global::HelloworldXamarin.Droid.Resource.Styleable.BottomNavigationView_itemIconTint;
+ global::Xamarin.Forms.Platform.Resource.Styleable.BottomNavigationView_itemTextAppearanceActive = global::HelloworldXamarin.Droid.Resource.Styleable.BottomNavigationView_itemTextAppearanceActive;
+ global::Xamarin.Forms.Platform.Resource.Styleable.BottomNavigationView_itemTextAppearanceInactive = global::HelloworldXamarin.Droid.Resource.Styleable.BottomNavigationView_itemTextAppearanceInactive;
+ global::Xamarin.Forms.Platform.Resource.Styleable.BottomNavigationView_itemTextColor = global::HelloworldXamarin.Droid.Resource.Styleable.BottomNavigationView_itemTextColor;
+ global::Xamarin.Forms.Platform.Resource.Styleable.BottomNavigationView_labelVisibilityMode = global::HelloworldXamarin.Droid.Resource.Styleable.BottomNavigationView_labelVisibilityMode;
+ global::Xamarin.Forms.Platform.Resource.Styleable.BottomNavigationView_menu = global::HelloworldXamarin.Droid.Resource.Styleable.BottomNavigationView_menu;
+ global::Xamarin.Forms.Platform.Resource.Styleable.BottomSheetBehavior_Layout = global::HelloworldXamarin.Droid.Resource.Styleable.BottomSheetBehavior_Layout;
+ global::Xamarin.Forms.Platform.Resource.Styleable.BottomSheetBehavior_Layout_behavior_fitToContents = global::HelloworldXamarin.Droid.Resource.Styleable.BottomSheetBehavior_Layout_behavior_fitToContents;
+ global::Xamarin.Forms.Platform.Resource.Styleable.BottomSheetBehavior_Layout_behavior_hideable = global::HelloworldXamarin.Droid.Resource.Styleable.BottomSheetBehavior_Layout_behavior_hideable;
+ global::Xamarin.Forms.Platform.Resource.Styleable.BottomSheetBehavior_Layout_behavior_peekHeight = global::HelloworldXamarin.Droid.Resource.Styleable.BottomSheetBehavior_Layout_behavior_peekHeight;
+ global::Xamarin.Forms.Platform.Resource.Styleable.BottomSheetBehavior_Layout_behavior_skipCollapsed = global::HelloworldXamarin.Droid.Resource.Styleable.BottomSheetBehavior_Layout_behavior_skipCollapsed;
+ global::Xamarin.Forms.Platform.Resource.Styleable.ButtonBarLayout = global::HelloworldXamarin.Droid.Resource.Styleable.ButtonBarLayout;
+ global::Xamarin.Forms.Platform.Resource.Styleable.ButtonBarLayout_allowStacking = global::HelloworldXamarin.Droid.Resource.Styleable.ButtonBarLayout_allowStacking;
+ global::Xamarin.Forms.Platform.Resource.Styleable.CardView = global::HelloworldXamarin.Droid.Resource.Styleable.CardView;
+ global::Xamarin.Forms.Platform.Resource.Styleable.CardView_android_minHeight = global::HelloworldXamarin.Droid.Resource.Styleable.CardView_android_minHeight;
+ global::Xamarin.Forms.Platform.Resource.Styleable.CardView_android_minWidth = global::HelloworldXamarin.Droid.Resource.Styleable.CardView_android_minWidth;
+ global::Xamarin.Forms.Platform.Resource.Styleable.CardView_cardBackgroundColor = global::HelloworldXamarin.Droid.Resource.Styleable.CardView_cardBackgroundColor;
+ global::Xamarin.Forms.Platform.Resource.Styleable.CardView_cardCornerRadius = global::HelloworldXamarin.Droid.Resource.Styleable.CardView_cardCornerRadius;
+ global::Xamarin.Forms.Platform.Resource.Styleable.CardView_cardElevation = global::HelloworldXamarin.Droid.Resource.Styleable.CardView_cardElevation;
+ global::Xamarin.Forms.Platform.Resource.Styleable.CardView_cardMaxElevation = global::HelloworldXamarin.Droid.Resource.Styleable.CardView_cardMaxElevation;
+ global::Xamarin.Forms.Platform.Resource.Styleable.CardView_cardPreventCornerOverlap = global::HelloworldXamarin.Droid.Resource.Styleable.CardView_cardPreventCornerOverlap;
+ global::Xamarin.Forms.Platform.Resource.Styleable.CardView_cardUseCompatPadding = global::HelloworldXamarin.Droid.Resource.Styleable.CardView_cardUseCompatPadding;
+ global::Xamarin.Forms.Platform.Resource.Styleable.CardView_contentPadding = global::HelloworldXamarin.Droid.Resource.Styleable.CardView_contentPadding;
+ global::Xamarin.Forms.Platform.Resource.Styleable.CardView_contentPaddingBottom = global::HelloworldXamarin.Droid.Resource.Styleable.CardView_contentPaddingBottom;
+ global::Xamarin.Forms.Platform.Resource.Styleable.CardView_contentPaddingLeft = global::HelloworldXamarin.Droid.Resource.Styleable.CardView_contentPaddingLeft;
+ global::Xamarin.Forms.Platform.Resource.Styleable.CardView_contentPaddingRight = global::HelloworldXamarin.Droid.Resource.Styleable.CardView_contentPaddingRight;
+ global::Xamarin.Forms.Platform.Resource.Styleable.CardView_contentPaddingTop = global::HelloworldXamarin.Droid.Resource.Styleable.CardView_contentPaddingTop;
+ global::Xamarin.Forms.Platform.Resource.Styleable.Chip = global::HelloworldXamarin.Droid.Resource.Styleable.Chip;
+ global::Xamarin.Forms.Platform.Resource.Styleable.ChipGroup = global::HelloworldXamarin.Droid.Resource.Styleable.ChipGroup;
+ global::Xamarin.Forms.Platform.Resource.Styleable.ChipGroup_checkedChip = global::HelloworldXamarin.Droid.Resource.Styleable.ChipGroup_checkedChip;
+ global::Xamarin.Forms.Platform.Resource.Styleable.ChipGroup_chipSpacing = global::HelloworldXamarin.Droid.Resource.Styleable.ChipGroup_chipSpacing;
+ global::Xamarin.Forms.Platform.Resource.Styleable.ChipGroup_chipSpacingHorizontal = global::HelloworldXamarin.Droid.Resource.Styleable.ChipGroup_chipSpacingHorizontal;
+ global::Xamarin.Forms.Platform.Resource.Styleable.ChipGroup_chipSpacingVertical = global::HelloworldXamarin.Droid.Resource.Styleable.ChipGroup_chipSpacingVertical;
+ global::Xamarin.Forms.Platform.Resource.Styleable.ChipGroup_singleLine = global::HelloworldXamarin.Droid.Resource.Styleable.ChipGroup_singleLine;
+ global::Xamarin.Forms.Platform.Resource.Styleable.ChipGroup_singleSelection = global::HelloworldXamarin.Droid.Resource.Styleable.ChipGroup_singleSelection;
+ global::Xamarin.Forms.Platform.Resource.Styleable.Chip_android_checkable = global::HelloworldXamarin.Droid.Resource.Styleable.Chip_android_checkable;
+ global::Xamarin.Forms.Platform.Resource.Styleable.Chip_android_ellipsize = global::HelloworldXamarin.Droid.Resource.Styleable.Chip_android_ellipsize;
+ global::Xamarin.Forms.Platform.Resource.Styleable.Chip_android_maxWidth = global::HelloworldXamarin.Droid.Resource.Styleable.Chip_android_maxWidth;
+ global::Xamarin.Forms.Platform.Resource.Styleable.Chip_android_text = global::HelloworldXamarin.Droid.Resource.Styleable.Chip_android_text;
+ global::Xamarin.Forms.Platform.Resource.Styleable.Chip_android_textAppearance = global::HelloworldXamarin.Droid.Resource.Styleable.Chip_android_textAppearance;
+ global::Xamarin.Forms.Platform.Resource.Styleable.Chip_checkedIcon = global::HelloworldXamarin.Droid.Resource.Styleable.Chip_checkedIcon;
+ global::Xamarin.Forms.Platform.Resource.Styleable.Chip_checkedIconEnabled = global::HelloworldXamarin.Droid.Resource.Styleable.Chip_checkedIconEnabled;
+ global::Xamarin.Forms.Platform.Resource.Styleable.Chip_checkedIconVisible = global::HelloworldXamarin.Droid.Resource.Styleable.Chip_checkedIconVisible;
+ global::Xamarin.Forms.Platform.Resource.Styleable.Chip_chipBackgroundColor = global::HelloworldXamarin.Droid.Resource.Styleable.Chip_chipBackgroundColor;
+ global::Xamarin.Forms.Platform.Resource.Styleable.Chip_chipCornerRadius = global::HelloworldXamarin.Droid.Resource.Styleable.Chip_chipCornerRadius;
+ global::Xamarin.Forms.Platform.Resource.Styleable.Chip_chipEndPadding = global::HelloworldXamarin.Droid.Resource.Styleable.Chip_chipEndPadding;
+ global::Xamarin.Forms.Platform.Resource.Styleable.Chip_chipIcon = global::HelloworldXamarin.Droid.Resource.Styleable.Chip_chipIcon;
+ global::Xamarin.Forms.Platform.Resource.Styleable.Chip_chipIconEnabled = global::HelloworldXamarin.Droid.Resource.Styleable.Chip_chipIconEnabled;
+ global::Xamarin.Forms.Platform.Resource.Styleable.Chip_chipIconSize = global::HelloworldXamarin.Droid.Resource.Styleable.Chip_chipIconSize;
+ global::Xamarin.Forms.Platform.Resource.Styleable.Chip_chipIconTint = global::HelloworldXamarin.Droid.Resource.Styleable.Chip_chipIconTint;
+ global::Xamarin.Forms.Platform.Resource.Styleable.Chip_chipIconVisible = global::HelloworldXamarin.Droid.Resource.Styleable.Chip_chipIconVisible;
+ global::Xamarin.Forms.Platform.Resource.Styleable.Chip_chipMinHeight = global::HelloworldXamarin.Droid.Resource.Styleable.Chip_chipMinHeight;
+ global::Xamarin.Forms.Platform.Resource.Styleable.Chip_chipStartPadding = global::HelloworldXamarin.Droid.Resource.Styleable.Chip_chipStartPadding;
+ global::Xamarin.Forms.Platform.Resource.Styleable.Chip_chipStrokeColor = global::HelloworldXamarin.Droid.Resource.Styleable.Chip_chipStrokeColor;
+ global::Xamarin.Forms.Platform.Resource.Styleable.Chip_chipStrokeWidth = global::HelloworldXamarin.Droid.Resource.Styleable.Chip_chipStrokeWidth;
+ global::Xamarin.Forms.Platform.Resource.Styleable.Chip_closeIcon = global::HelloworldXamarin.Droid.Resource.Styleable.Chip_closeIcon;
+ global::Xamarin.Forms.Platform.Resource.Styleable.Chip_closeIconEnabled = global::HelloworldXamarin.Droid.Resource.Styleable.Chip_closeIconEnabled;
+ global::Xamarin.Forms.Platform.Resource.Styleable.Chip_closeIconEndPadding = global::HelloworldXamarin.Droid.Resource.Styleable.Chip_closeIconEndPadding;
+ global::Xamarin.Forms.Platform.Resource.Styleable.Chip_closeIconSize = global::HelloworldXamarin.Droid.Resource.Styleable.Chip_closeIconSize;
+ global::Xamarin.Forms.Platform.Resource.Styleable.Chip_closeIconStartPadding = global::HelloworldXamarin.Droid.Resource.Styleable.Chip_closeIconStartPadding;
+ global::Xamarin.Forms.Platform.Resource.Styleable.Chip_closeIconTint = global::HelloworldXamarin.Droid.Resource.Styleable.Chip_closeIconTint;
+ global::Xamarin.Forms.Platform.Resource.Styleable.Chip_closeIconVisible = global::HelloworldXamarin.Droid.Resource.Styleable.Chip_closeIconVisible;
+ global::Xamarin.Forms.Platform.Resource.Styleable.Chip_hideMotionSpec = global::HelloworldXamarin.Droid.Resource.Styleable.Chip_hideMotionSpec;
+ global::Xamarin.Forms.Platform.Resource.Styleable.Chip_iconEndPadding = global::HelloworldXamarin.Droid.Resource.Styleable.Chip_iconEndPadding;
+ global::Xamarin.Forms.Platform.Resource.Styleable.Chip_iconStartPadding = global::HelloworldXamarin.Droid.Resource.Styleable.Chip_iconStartPadding;
+ global::Xamarin.Forms.Platform.Resource.Styleable.Chip_rippleColor = global::HelloworldXamarin.Droid.Resource.Styleable.Chip_rippleColor;
+ global::Xamarin.Forms.Platform.Resource.Styleable.Chip_showMotionSpec = global::HelloworldXamarin.Droid.Resource.Styleable.Chip_showMotionSpec;
+ global::Xamarin.Forms.Platform.Resource.Styleable.Chip_textEndPadding = global::HelloworldXamarin.Droid.Resource.Styleable.Chip_textEndPadding;
+ global::Xamarin.Forms.Platform.Resource.Styleable.Chip_textStartPadding = global::HelloworldXamarin.Droid.Resource.Styleable.Chip_textStartPadding;
+ global::Xamarin.Forms.Platform.Resource.Styleable.CollapsingToolbarLayout = global::HelloworldXamarin.Droid.Resource.Styleable.CollapsingToolbarLayout;
+ global::Xamarin.Forms.Platform.Resource.Styleable.CollapsingToolbarLayout_collapsedTitleGravity = global::HelloworldXamarin.Droid.Resource.Styleable.CollapsingToolbarLayout_collapsedTitleGravity;
+ global::Xamarin.Forms.Platform.Resource.Styleable.CollapsingToolbarLayout_collapsedTitleTextAppearance = global::HelloworldXamarin.Droid.Resource.Styleable.CollapsingToolbarLayout_collapsedTitleTextAppearance;
+ global::Xamarin.Forms.Platform.Resource.Styleable.CollapsingToolbarLayout_contentScrim = global::HelloworldXamarin.Droid.Resource.Styleable.CollapsingToolbarLayout_contentScrim;
+ global::Xamarin.Forms.Platform.Resource.Styleable.CollapsingToolbarLayout_expandedTitleGravity = global::HelloworldXamarin.Droid.Resource.Styleable.CollapsingToolbarLayout_expandedTitleGravity;
+ global::Xamarin.Forms.Platform.Resource.Styleable.CollapsingToolbarLayout_expandedTitleMargin = global::HelloworldXamarin.Droid.Resource.Styleable.CollapsingToolbarLayout_expandedTitleMargin;
+ global::Xamarin.Forms.Platform.Resource.Styleable.CollapsingToolbarLayout_expandedTitleMarginBottom = global::HelloworldXamarin.Droid.Resource.Styleable.CollapsingToolbarLayout_expandedTitleMarginBottom;
+ global::Xamarin.Forms.Platform.Resource.Styleable.CollapsingToolbarLayout_expandedTitleMarginEnd = global::HelloworldXamarin.Droid.Resource.Styleable.CollapsingToolbarLayout_expandedTitleMarginEnd;
+ global::Xamarin.Forms.Platform.Resource.Styleable.CollapsingToolbarLayout_expandedTitleMarginStart = global::HelloworldXamarin.Droid.Resource.Styleable.CollapsingToolbarLayout_expandedTitleMarginStart;
+ global::Xamarin.Forms.Platform.Resource.Styleable.CollapsingToolbarLayout_expandedTitleMarginTop = global::HelloworldXamarin.Droid.Resource.Styleable.CollapsingToolbarLayout_expandedTitleMarginTop;
+ global::Xamarin.Forms.Platform.Resource.Styleable.CollapsingToolbarLayout_expandedTitleTextAppearance = global::HelloworldXamarin.Droid.Resource.Styleable.CollapsingToolbarLayout_expandedTitleTextAppearance;
+ global::Xamarin.Forms.Platform.Resource.Styleable.CollapsingToolbarLayout_Layout = global::HelloworldXamarin.Droid.Resource.Styleable.CollapsingToolbarLayout_Layout;
+ global::Xamarin.Forms.Platform.Resource.Styleable.CollapsingToolbarLayout_Layout_layout_collapseMode = global::HelloworldXamarin.Droid.Resource.Styleable.CollapsingToolbarLayout_Layout_layout_collapseMode;
+ global::Xamarin.Forms.Platform.Resource.Styleable.CollapsingToolbarLayout_Layout_layout_collapseParallaxMultiplier = global::HelloworldXamarin.Droid.Resource.Styleable.CollapsingToolbarLayout_Layout_layout_collapseParallaxMultiplier;
+ global::Xamarin.Forms.Platform.Resource.Styleable.CollapsingToolbarLayout_scrimAnimationDuration = global::HelloworldXamarin.Droid.Resource.Styleable.CollapsingToolbarLayout_scrimAnimationDuration;
+ global::Xamarin.Forms.Platform.Resource.Styleable.CollapsingToolbarLayout_scrimVisibleHeightTrigger = global::HelloworldXamarin.Droid.Resource.Styleable.CollapsingToolbarLayout_scrimVisibleHeightTrigger;
+ global::Xamarin.Forms.Platform.Resource.Styleable.CollapsingToolbarLayout_statusBarScrim = global::HelloworldXamarin.Droid.Resource.Styleable.CollapsingToolbarLayout_statusBarScrim;
+ global::Xamarin.Forms.Platform.Resource.Styleable.CollapsingToolbarLayout_title = global::HelloworldXamarin.Droid.Resource.Styleable.CollapsingToolbarLayout_title;
+ global::Xamarin.Forms.Platform.Resource.Styleable.CollapsingToolbarLayout_titleEnabled = global::HelloworldXamarin.Droid.Resource.Styleable.CollapsingToolbarLayout_titleEnabled;
+ global::Xamarin.Forms.Platform.Resource.Styleable.CollapsingToolbarLayout_toolbarId = global::HelloworldXamarin.Droid.Resource.Styleable.CollapsingToolbarLayout_toolbarId;
+ global::Xamarin.Forms.Platform.Resource.Styleable.ColorStateListItem = global::HelloworldXamarin.Droid.Resource.Styleable.ColorStateListItem;
+ global::Xamarin.Forms.Platform.Resource.Styleable.ColorStateListItem_alpha = global::HelloworldXamarin.Droid.Resource.Styleable.ColorStateListItem_alpha;
+ global::Xamarin.Forms.Platform.Resource.Styleable.ColorStateListItem_android_alpha = global::HelloworldXamarin.Droid.Resource.Styleable.ColorStateListItem_android_alpha;
+ global::Xamarin.Forms.Platform.Resource.Styleable.ColorStateListItem_android_color = global::HelloworldXamarin.Droid.Resource.Styleable.ColorStateListItem_android_color;
+ global::Xamarin.Forms.Platform.Resource.Styleable.CompoundButton = global::HelloworldXamarin.Droid.Resource.Styleable.CompoundButton;
+ global::Xamarin.Forms.Platform.Resource.Styleable.CompoundButton_android_button = global::HelloworldXamarin.Droid.Resource.Styleable.CompoundButton_android_button;
+ global::Xamarin.Forms.Platform.Resource.Styleable.CompoundButton_buttonTint = global::HelloworldXamarin.Droid.Resource.Styleable.CompoundButton_buttonTint;
+ global::Xamarin.Forms.Platform.Resource.Styleable.CompoundButton_buttonTintMode = global::HelloworldXamarin.Droid.Resource.Styleable.CompoundButton_buttonTintMode;
+ global::Xamarin.Forms.Platform.Resource.Styleable.CoordinatorLayout = global::HelloworldXamarin.Droid.Resource.Styleable.CoordinatorLayout;
+ global::Xamarin.Forms.Platform.Resource.Styleable.CoordinatorLayout_keylines = global::HelloworldXamarin.Droid.Resource.Styleable.CoordinatorLayout_keylines;
+ global::Xamarin.Forms.Platform.Resource.Styleable.CoordinatorLayout_Layout = global::HelloworldXamarin.Droid.Resource.Styleable.CoordinatorLayout_Layout;
+ global::Xamarin.Forms.Platform.Resource.Styleable.CoordinatorLayout_Layout_android_layout_gravity = global::HelloworldXamarin.Droid.Resource.Styleable.CoordinatorLayout_Layout_android_layout_gravity;
+ global::Xamarin.Forms.Platform.Resource.Styleable.CoordinatorLayout_Layout_layout_anchor = global::HelloworldXamarin.Droid.Resource.Styleable.CoordinatorLayout_Layout_layout_anchor;
+ global::Xamarin.Forms.Platform.Resource.Styleable.CoordinatorLayout_Layout_layout_anchorGravity = global::HelloworldXamarin.Droid.Resource.Styleable.CoordinatorLayout_Layout_layout_anchorGravity;
+ global::Xamarin.Forms.Platform.Resource.Styleable.CoordinatorLayout_Layout_layout_behavior = global::HelloworldXamarin.Droid.Resource.Styleable.CoordinatorLayout_Layout_layout_behavior;
+ global::Xamarin.Forms.Platform.Resource.Styleable.CoordinatorLayout_Layout_layout_dodgeInsetEdges = global::HelloworldXamarin.Droid.Resource.Styleable.CoordinatorLayout_Layout_layout_dodgeInsetEdges;
+ global::Xamarin.Forms.Platform.Resource.Styleable.CoordinatorLayout_Layout_layout_insetEdge = global::HelloworldXamarin.Droid.Resource.Styleable.CoordinatorLayout_Layout_layout_insetEdge;
+ global::Xamarin.Forms.Platform.Resource.Styleable.CoordinatorLayout_Layout_layout_keyline = global::HelloworldXamarin.Droid.Resource.Styleable.CoordinatorLayout_Layout_layout_keyline;
+ global::Xamarin.Forms.Platform.Resource.Styleable.CoordinatorLayout_statusBarBackground = global::HelloworldXamarin.Droid.Resource.Styleable.CoordinatorLayout_statusBarBackground;
+ global::Xamarin.Forms.Platform.Resource.Styleable.DesignTheme = global::HelloworldXamarin.Droid.Resource.Styleable.DesignTheme;
+ global::Xamarin.Forms.Platform.Resource.Styleable.DesignTheme_bottomSheetDialogTheme = global::HelloworldXamarin.Droid.Resource.Styleable.DesignTheme_bottomSheetDialogTheme;
+ global::Xamarin.Forms.Platform.Resource.Styleable.DesignTheme_bottomSheetStyle = global::HelloworldXamarin.Droid.Resource.Styleable.DesignTheme_bottomSheetStyle;
+ global::Xamarin.Forms.Platform.Resource.Styleable.DrawerArrowToggle = global::HelloworldXamarin.Droid.Resource.Styleable.DrawerArrowToggle;
+ global::Xamarin.Forms.Platform.Resource.Styleable.DrawerArrowToggle_arrowHeadLength = global::HelloworldXamarin.Droid.Resource.Styleable.DrawerArrowToggle_arrowHeadLength;
+ global::Xamarin.Forms.Platform.Resource.Styleable.DrawerArrowToggle_arrowShaftLength = global::HelloworldXamarin.Droid.Resource.Styleable.DrawerArrowToggle_arrowShaftLength;
+ global::Xamarin.Forms.Platform.Resource.Styleable.DrawerArrowToggle_barLength = global::HelloworldXamarin.Droid.Resource.Styleable.DrawerArrowToggle_barLength;
+ global::Xamarin.Forms.Platform.Resource.Styleable.DrawerArrowToggle_color = global::HelloworldXamarin.Droid.Resource.Styleable.DrawerArrowToggle_color;
+ global::Xamarin.Forms.Platform.Resource.Styleable.DrawerArrowToggle_drawableSize = global::HelloworldXamarin.Droid.Resource.Styleable.DrawerArrowToggle_drawableSize;
+ global::Xamarin.Forms.Platform.Resource.Styleable.DrawerArrowToggle_gapBetweenBars = global::HelloworldXamarin.Droid.Resource.Styleable.DrawerArrowToggle_gapBetweenBars;
+ global::Xamarin.Forms.Platform.Resource.Styleable.DrawerArrowToggle_spinBars = global::HelloworldXamarin.Droid.Resource.Styleable.DrawerArrowToggle_spinBars;
+ global::Xamarin.Forms.Platform.Resource.Styleable.DrawerArrowToggle_thickness = global::HelloworldXamarin.Droid.Resource.Styleable.DrawerArrowToggle_thickness;
+ global::Xamarin.Forms.Platform.Resource.Styleable.FloatingActionButton = global::HelloworldXamarin.Droid.Resource.Styleable.FloatingActionButton;
+ global::Xamarin.Forms.Platform.Resource.Styleable.FloatingActionButton_backgroundTint = global::HelloworldXamarin.Droid.Resource.Styleable.FloatingActionButton_backgroundTint;
+ global::Xamarin.Forms.Platform.Resource.Styleable.FloatingActionButton_backgroundTintMode = global::HelloworldXamarin.Droid.Resource.Styleable.FloatingActionButton_backgroundTintMode;
+ global::Xamarin.Forms.Platform.Resource.Styleable.FloatingActionButton_Behavior_Layout = global::HelloworldXamarin.Droid.Resource.Styleable.FloatingActionButton_Behavior_Layout;
+ global::Xamarin.Forms.Platform.Resource.Styleable.FloatingActionButton_Behavior_Layout_behavior_autoHide = global::HelloworldXamarin.Droid.Resource.Styleable.FloatingActionButton_Behavior_Layout_behavior_autoHide;
+ global::Xamarin.Forms.Platform.Resource.Styleable.FloatingActionButton_borderWidth = global::HelloworldXamarin.Droid.Resource.Styleable.FloatingActionButton_borderWidth;
+ global::Xamarin.Forms.Platform.Resource.Styleable.FloatingActionButton_elevation = global::HelloworldXamarin.Droid.Resource.Styleable.FloatingActionButton_elevation;
+ global::Xamarin.Forms.Platform.Resource.Styleable.FloatingActionButton_fabCustomSize = global::HelloworldXamarin.Droid.Resource.Styleable.FloatingActionButton_fabCustomSize;
+ global::Xamarin.Forms.Platform.Resource.Styleable.FloatingActionButton_fabSize = global::HelloworldXamarin.Droid.Resource.Styleable.FloatingActionButton_fabSize;
+ global::Xamarin.Forms.Platform.Resource.Styleable.FloatingActionButton_hideMotionSpec = global::HelloworldXamarin.Droid.Resource.Styleable.FloatingActionButton_hideMotionSpec;
+ global::Xamarin.Forms.Platform.Resource.Styleable.FloatingActionButton_hoveredFocusedTranslationZ = global::HelloworldXamarin.Droid.Resource.Styleable.FloatingActionButton_hoveredFocusedTranslationZ;
+ global::Xamarin.Forms.Platform.Resource.Styleable.FloatingActionButton_maxImageSize = global::HelloworldXamarin.Droid.Resource.Styleable.FloatingActionButton_maxImageSize;
+ global::Xamarin.Forms.Platform.Resource.Styleable.FloatingActionButton_pressedTranslationZ = global::HelloworldXamarin.Droid.Resource.Styleable.FloatingActionButton_pressedTranslationZ;
+ global::Xamarin.Forms.Platform.Resource.Styleable.FloatingActionButton_rippleColor = global::HelloworldXamarin.Droid.Resource.Styleable.FloatingActionButton_rippleColor;
+ global::Xamarin.Forms.Platform.Resource.Styleable.FloatingActionButton_showMotionSpec = global::HelloworldXamarin.Droid.Resource.Styleable.FloatingActionButton_showMotionSpec;
+ global::Xamarin.Forms.Platform.Resource.Styleable.FloatingActionButton_useCompatPadding = global::HelloworldXamarin.Droid.Resource.Styleable.FloatingActionButton_useCompatPadding;
+ global::Xamarin.Forms.Platform.Resource.Styleable.FlowLayout = global::HelloworldXamarin.Droid.Resource.Styleable.FlowLayout;
+ global::Xamarin.Forms.Platform.Resource.Styleable.FlowLayout_itemSpacing = global::HelloworldXamarin.Droid.Resource.Styleable.FlowLayout_itemSpacing;
+ global::Xamarin.Forms.Platform.Resource.Styleable.FlowLayout_lineSpacing = global::HelloworldXamarin.Droid.Resource.Styleable.FlowLayout_lineSpacing;
+ global::Xamarin.Forms.Platform.Resource.Styleable.FontFamily = global::HelloworldXamarin.Droid.Resource.Styleable.FontFamily;
+ global::Xamarin.Forms.Platform.Resource.Styleable.FontFamilyFont = global::HelloworldXamarin.Droid.Resource.Styleable.FontFamilyFont;
+ global::Xamarin.Forms.Platform.Resource.Styleable.FontFamilyFont_android_font = global::HelloworldXamarin.Droid.Resource.Styleable.FontFamilyFont_android_font;
+ global::Xamarin.Forms.Platform.Resource.Styleable.FontFamilyFont_android_fontStyle = global::HelloworldXamarin.Droid.Resource.Styleable.FontFamilyFont_android_fontStyle;
+ global::Xamarin.Forms.Platform.Resource.Styleable.FontFamilyFont_android_fontVariationSettings = global::HelloworldXamarin.Droid.Resource.Styleable.FontFamilyFont_android_fontVariationSettings;
+ global::Xamarin.Forms.Platform.Resource.Styleable.FontFamilyFont_android_fontWeight = global::HelloworldXamarin.Droid.Resource.Styleable.FontFamilyFont_android_fontWeight;
+ global::Xamarin.Forms.Platform.Resource.Styleable.FontFamilyFont_android_ttcIndex = global::HelloworldXamarin.Droid.Resource.Styleable.FontFamilyFont_android_ttcIndex;
+ global::Xamarin.Forms.Platform.Resource.Styleable.FontFamilyFont_font = global::HelloworldXamarin.Droid.Resource.Styleable.FontFamilyFont_font;
+ global::Xamarin.Forms.Platform.Resource.Styleable.FontFamilyFont_fontStyle = global::HelloworldXamarin.Droid.Resource.Styleable.FontFamilyFont_fontStyle;
+ global::Xamarin.Forms.Platform.Resource.Styleable.FontFamilyFont_fontVariationSettings = global::HelloworldXamarin.Droid.Resource.Styleable.FontFamilyFont_fontVariationSettings;
+ global::Xamarin.Forms.Platform.Resource.Styleable.FontFamilyFont_fontWeight = global::HelloworldXamarin.Droid.Resource.Styleable.FontFamilyFont_fontWeight;
+ global::Xamarin.Forms.Platform.Resource.Styleable.FontFamilyFont_ttcIndex = global::HelloworldXamarin.Droid.Resource.Styleable.FontFamilyFont_ttcIndex;
+ global::Xamarin.Forms.Platform.Resource.Styleable.FontFamily_fontProviderAuthority = global::HelloworldXamarin.Droid.Resource.Styleable.FontFamily_fontProviderAuthority;
+ global::Xamarin.Forms.Platform.Resource.Styleable.FontFamily_fontProviderCerts = global::HelloworldXamarin.Droid.Resource.Styleable.FontFamily_fontProviderCerts;
+ global::Xamarin.Forms.Platform.Resource.Styleable.FontFamily_fontProviderFetchStrategy = global::HelloworldXamarin.Droid.Resource.Styleable.FontFamily_fontProviderFetchStrategy;
+ global::Xamarin.Forms.Platform.Resource.Styleable.FontFamily_fontProviderFetchTimeout = global::HelloworldXamarin.Droid.Resource.Styleable.FontFamily_fontProviderFetchTimeout;
+ global::Xamarin.Forms.Platform.Resource.Styleable.FontFamily_fontProviderPackage = global::HelloworldXamarin.Droid.Resource.Styleable.FontFamily_fontProviderPackage;
+ global::Xamarin.Forms.Platform.Resource.Styleable.FontFamily_fontProviderQuery = global::HelloworldXamarin.Droid.Resource.Styleable.FontFamily_fontProviderQuery;
+ global::Xamarin.Forms.Platform.Resource.Styleable.ForegroundLinearLayout = global::HelloworldXamarin.Droid.Resource.Styleable.ForegroundLinearLayout;
+ global::Xamarin.Forms.Platform.Resource.Styleable.ForegroundLinearLayout_android_foreground = global::HelloworldXamarin.Droid.Resource.Styleable.ForegroundLinearLayout_android_foreground;
+ global::Xamarin.Forms.Platform.Resource.Styleable.ForegroundLinearLayout_android_foregroundGravity = global::HelloworldXamarin.Droid.Resource.Styleable.ForegroundLinearLayout_android_foregroundGravity;
+ global::Xamarin.Forms.Platform.Resource.Styleable.ForegroundLinearLayout_foregroundInsidePadding = global::HelloworldXamarin.Droid.Resource.Styleable.ForegroundLinearLayout_foregroundInsidePadding;
+ global::Xamarin.Forms.Platform.Resource.Styleable.GradientColor = global::HelloworldXamarin.Droid.Resource.Styleable.GradientColor;
+ global::Xamarin.Forms.Platform.Resource.Styleable.GradientColorItem = global::HelloworldXamarin.Droid.Resource.Styleable.GradientColorItem;
+ global::Xamarin.Forms.Platform.Resource.Styleable.GradientColorItem_android_color = global::HelloworldXamarin.Droid.Resource.Styleable.GradientColorItem_android_color;
+ global::Xamarin.Forms.Platform.Resource.Styleable.GradientColorItem_android_offset = global::HelloworldXamarin.Droid.Resource.Styleable.GradientColorItem_android_offset;
+ global::Xamarin.Forms.Platform.Resource.Styleable.GradientColor_android_centerColor = global::HelloworldXamarin.Droid.Resource.Styleable.GradientColor_android_centerColor;
+ global::Xamarin.Forms.Platform.Resource.Styleable.GradientColor_android_centerX = global::HelloworldXamarin.Droid.Resource.Styleable.GradientColor_android_centerX;
+ global::Xamarin.Forms.Platform.Resource.Styleable.GradientColor_android_centerY = global::HelloworldXamarin.Droid.Resource.Styleable.GradientColor_android_centerY;
+ global::Xamarin.Forms.Platform.Resource.Styleable.GradientColor_android_endColor = global::HelloworldXamarin.Droid.Resource.Styleable.GradientColor_android_endColor;
+ global::Xamarin.Forms.Platform.Resource.Styleable.GradientColor_android_endX = global::HelloworldXamarin.Droid.Resource.Styleable.GradientColor_android_endX;
+ global::Xamarin.Forms.Platform.Resource.Styleable.GradientColor_android_endY = global::HelloworldXamarin.Droid.Resource.Styleable.GradientColor_android_endY;
+ global::Xamarin.Forms.Platform.Resource.Styleable.GradientColor_android_gradientRadius = global::HelloworldXamarin.Droid.Resource.Styleable.GradientColor_android_gradientRadius;
+ global::Xamarin.Forms.Platform.Resource.Styleable.GradientColor_android_startColor = global::HelloworldXamarin.Droid.Resource.Styleable.GradientColor_android_startColor;
+ global::Xamarin.Forms.Platform.Resource.Styleable.GradientColor_android_startX = global::HelloworldXamarin.Droid.Resource.Styleable.GradientColor_android_startX;
+ global::Xamarin.Forms.Platform.Resource.Styleable.GradientColor_android_startY = global::HelloworldXamarin.Droid.Resource.Styleable.GradientColor_android_startY;
+ global::Xamarin.Forms.Platform.Resource.Styleable.GradientColor_android_tileMode = global::HelloworldXamarin.Droid.Resource.Styleable.GradientColor_android_tileMode;
+ global::Xamarin.Forms.Platform.Resource.Styleable.GradientColor_android_type = global::HelloworldXamarin.Droid.Resource.Styleable.GradientColor_android_type;
+ global::Xamarin.Forms.Platform.Resource.Styleable.LinearLayoutCompat = global::HelloworldXamarin.Droid.Resource.Styleable.LinearLayoutCompat;
+ global::Xamarin.Forms.Platform.Resource.Styleable.LinearLayoutCompat_android_baselineAligned = global::HelloworldXamarin.Droid.Resource.Styleable.LinearLayoutCompat_android_baselineAligned;
+ global::Xamarin.Forms.Platform.Resource.Styleable.LinearLayoutCompat_android_baselineAlignedChildIndex = global::HelloworldXamarin.Droid.Resource.Styleable.LinearLayoutCompat_android_baselineAlignedChildIndex;
+ global::Xamarin.Forms.Platform.Resource.Styleable.LinearLayoutCompat_android_gravity = global::HelloworldXamarin.Droid.Resource.Styleable.LinearLayoutCompat_android_gravity;
+ global::Xamarin.Forms.Platform.Resource.Styleable.LinearLayoutCompat_android_orientation = global::HelloworldXamarin.Droid.Resource.Styleable.LinearLayoutCompat_android_orientation;
+ global::Xamarin.Forms.Platform.Resource.Styleable.LinearLayoutCompat_android_weightSum = global::HelloworldXamarin.Droid.Resource.Styleable.LinearLayoutCompat_android_weightSum;
+ global::Xamarin.Forms.Platform.Resource.Styleable.LinearLayoutCompat_divider = global::HelloworldXamarin.Droid.Resource.Styleable.LinearLayoutCompat_divider;
+ global::Xamarin.Forms.Platform.Resource.Styleable.LinearLayoutCompat_dividerPadding = global::HelloworldXamarin.Droid.Resource.Styleable.LinearLayoutCompat_dividerPadding;
+ global::Xamarin.Forms.Platform.Resource.Styleable.LinearLayoutCompat_Layout = global::HelloworldXamarin.Droid.Resource.Styleable.LinearLayoutCompat_Layout;
+ global::Xamarin.Forms.Platform.Resource.Styleable.LinearLayoutCompat_Layout_android_layout_gravity = global::HelloworldXamarin.Droid.Resource.Styleable.LinearLayoutCompat_Layout_android_layout_gravity;
+ global::Xamarin.Forms.Platform.Resource.Styleable.LinearLayoutCompat_Layout_android_layout_height = global::HelloworldXamarin.Droid.Resource.Styleable.LinearLayoutCompat_Layout_android_layout_height;
+ global::Xamarin.Forms.Platform.Resource.Styleable.LinearLayoutCompat_Layout_android_layout_weight = global::HelloworldXamarin.Droid.Resource.Styleable.LinearLayoutCompat_Layout_android_layout_weight;
+ global::Xamarin.Forms.Platform.Resource.Styleable.LinearLayoutCompat_Layout_android_layout_width = global::HelloworldXamarin.Droid.Resource.Styleable.LinearLayoutCompat_Layout_android_layout_width;
+ global::Xamarin.Forms.Platform.Resource.Styleable.LinearLayoutCompat_measureWithLargestChild = global::HelloworldXamarin.Droid.Resource.Styleable.LinearLayoutCompat_measureWithLargestChild;
+ global::Xamarin.Forms.Platform.Resource.Styleable.LinearLayoutCompat_showDividers = global::HelloworldXamarin.Droid.Resource.Styleable.LinearLayoutCompat_showDividers;
+ global::Xamarin.Forms.Platform.Resource.Styleable.ListPopupWindow = global::HelloworldXamarin.Droid.Resource.Styleable.ListPopupWindow;
+ global::Xamarin.Forms.Platform.Resource.Styleable.ListPopupWindow_android_dropDownHorizontalOffset = global::HelloworldXamarin.Droid.Resource.Styleable.ListPopupWindow_android_dropDownHorizontalOffset;
+ global::Xamarin.Forms.Platform.Resource.Styleable.ListPopupWindow_android_dropDownVerticalOffset = global::HelloworldXamarin.Droid.Resource.Styleable.ListPopupWindow_android_dropDownVerticalOffset;
+ global::Xamarin.Forms.Platform.Resource.Styleable.MaterialButton = global::HelloworldXamarin.Droid.Resource.Styleable.MaterialButton;
+ global::Xamarin.Forms.Platform.Resource.Styleable.MaterialButton_android_insetBottom = global::HelloworldXamarin.Droid.Resource.Styleable.MaterialButton_android_insetBottom;
+ global::Xamarin.Forms.Platform.Resource.Styleable.MaterialButton_android_insetLeft = global::HelloworldXamarin.Droid.Resource.Styleable.MaterialButton_android_insetLeft;
+ global::Xamarin.Forms.Platform.Resource.Styleable.MaterialButton_android_insetRight = global::HelloworldXamarin.Droid.Resource.Styleable.MaterialButton_android_insetRight;
+ global::Xamarin.Forms.Platform.Resource.Styleable.MaterialButton_android_insetTop = global::HelloworldXamarin.Droid.Resource.Styleable.MaterialButton_android_insetTop;
+ global::Xamarin.Forms.Platform.Resource.Styleable.MaterialButton_backgroundTint = global::HelloworldXamarin.Droid.Resource.Styleable.MaterialButton_backgroundTint;
+ global::Xamarin.Forms.Platform.Resource.Styleable.MaterialButton_backgroundTintMode = global::HelloworldXamarin.Droid.Resource.Styleable.MaterialButton_backgroundTintMode;
+ global::Xamarin.Forms.Platform.Resource.Styleable.MaterialButton_cornerRadius = global::HelloworldXamarin.Droid.Resource.Styleable.MaterialButton_cornerRadius;
+ global::Xamarin.Forms.Platform.Resource.Styleable.MaterialButton_icon = global::HelloworldXamarin.Droid.Resource.Styleable.MaterialButton_icon;
+ global::Xamarin.Forms.Platform.Resource.Styleable.MaterialButton_iconGravity = global::HelloworldXamarin.Droid.Resource.Styleable.MaterialButton_iconGravity;
+ global::Xamarin.Forms.Platform.Resource.Styleable.MaterialButton_iconPadding = global::HelloworldXamarin.Droid.Resource.Styleable.MaterialButton_iconPadding;
+ global::Xamarin.Forms.Platform.Resource.Styleable.MaterialButton_iconSize = global::HelloworldXamarin.Droid.Resource.Styleable.MaterialButton_iconSize;
+ global::Xamarin.Forms.Platform.Resource.Styleable.MaterialButton_iconTint = global::HelloworldXamarin.Droid.Resource.Styleable.MaterialButton_iconTint;
+ global::Xamarin.Forms.Platform.Resource.Styleable.MaterialButton_iconTintMode = global::HelloworldXamarin.Droid.Resource.Styleable.MaterialButton_iconTintMode;
+ global::Xamarin.Forms.Platform.Resource.Styleable.MaterialButton_rippleColor = global::HelloworldXamarin.Droid.Resource.Styleable.MaterialButton_rippleColor;
+ global::Xamarin.Forms.Platform.Resource.Styleable.MaterialButton_strokeColor = global::HelloworldXamarin.Droid.Resource.Styleable.MaterialButton_strokeColor;
+ global::Xamarin.Forms.Platform.Resource.Styleable.MaterialButton_strokeWidth = global::HelloworldXamarin.Droid.Resource.Styleable.MaterialButton_strokeWidth;
+ global::Xamarin.Forms.Platform.Resource.Styleable.MaterialCardView = global::HelloworldXamarin.Droid.Resource.Styleable.MaterialCardView;
+ global::Xamarin.Forms.Platform.Resource.Styleable.MaterialCardView_strokeColor = global::HelloworldXamarin.Droid.Resource.Styleable.MaterialCardView_strokeColor;
+ global::Xamarin.Forms.Platform.Resource.Styleable.MaterialCardView_strokeWidth = global::HelloworldXamarin.Droid.Resource.Styleable.MaterialCardView_strokeWidth;
+ global::Xamarin.Forms.Platform.Resource.Styleable.MaterialComponentsTheme = global::HelloworldXamarin.Droid.Resource.Styleable.MaterialComponentsTheme;
+ global::Xamarin.Forms.Platform.Resource.Styleable.MaterialComponentsTheme_bottomSheetDialogTheme = global::HelloworldXamarin.Droid.Resource.Styleable.MaterialComponentsTheme_bottomSheetDialogTheme;
+ global::Xamarin.Forms.Platform.Resource.Styleable.MaterialComponentsTheme_bottomSheetStyle = global::HelloworldXamarin.Droid.Resource.Styleable.MaterialComponentsTheme_bottomSheetStyle;
+ global::Xamarin.Forms.Platform.Resource.Styleable.MaterialComponentsTheme_chipGroupStyle = global::HelloworldXamarin.Droid.Resource.Styleable.MaterialComponentsTheme_chipGroupStyle;
+ global::Xamarin.Forms.Platform.Resource.Styleable.MaterialComponentsTheme_chipStandaloneStyle = global::HelloworldXamarin.Droid.Resource.Styleable.MaterialComponentsTheme_chipStandaloneStyle;
+ global::Xamarin.Forms.Platform.Resource.Styleable.MaterialComponentsTheme_chipStyle = global::HelloworldXamarin.Droid.Resource.Styleable.MaterialComponentsTheme_chipStyle;
+ global::Xamarin.Forms.Platform.Resource.Styleable.MaterialComponentsTheme_colorAccent = global::HelloworldXamarin.Droid.Resource.Styleable.MaterialComponentsTheme_colorAccent;
+ global::Xamarin.Forms.Platform.Resource.Styleable.MaterialComponentsTheme_colorBackgroundFloating = global::HelloworldXamarin.Droid.Resource.Styleable.MaterialComponentsTheme_colorBackgroundFloating;
+ global::Xamarin.Forms.Platform.Resource.Styleable.MaterialComponentsTheme_colorPrimary = global::HelloworldXamarin.Droid.Resource.Styleable.MaterialComponentsTheme_colorPrimary;
+ global::Xamarin.Forms.Platform.Resource.Styleable.MaterialComponentsTheme_colorPrimaryDark = global::HelloworldXamarin.Droid.Resource.Styleable.MaterialComponentsTheme_colorPrimaryDark;
+ global::Xamarin.Forms.Platform.Resource.Styleable.MaterialComponentsTheme_colorSecondary = global::HelloworldXamarin.Droid.Resource.Styleable.MaterialComponentsTheme_colorSecondary;
+ global::Xamarin.Forms.Platform.Resource.Styleable.MaterialComponentsTheme_editTextStyle = global::HelloworldXamarin.Droid.Resource.Styleable.MaterialComponentsTheme_editTextStyle;
+ global::Xamarin.Forms.Platform.Resource.Styleable.MaterialComponentsTheme_floatingActionButtonStyle = global::HelloworldXamarin.Droid.Resource.Styleable.MaterialComponentsTheme_floatingActionButtonStyle;
+ global::Xamarin.Forms.Platform.Resource.Styleable.MaterialComponentsTheme_materialButtonStyle = global::HelloworldXamarin.Droid.Resource.Styleable.MaterialComponentsTheme_materialButtonStyle;
+ global::Xamarin.Forms.Platform.Resource.Styleable.MaterialComponentsTheme_materialCardViewStyle = global::HelloworldXamarin.Droid.Resource.Styleable.MaterialComponentsTheme_materialCardViewStyle;
+ global::Xamarin.Forms.Platform.Resource.Styleable.MaterialComponentsTheme_navigationViewStyle = global::HelloworldXamarin.Droid.Resource.Styleable.MaterialComponentsTheme_navigationViewStyle;
+ global::Xamarin.Forms.Platform.Resource.Styleable.MaterialComponentsTheme_scrimBackground = global::HelloworldXamarin.Droid.Resource.Styleable.MaterialComponentsTheme_scrimBackground;
+ global::Xamarin.Forms.Platform.Resource.Styleable.MaterialComponentsTheme_snackbarButtonStyle = global::HelloworldXamarin.Droid.Resource.Styleable.MaterialComponentsTheme_snackbarButtonStyle;
+ global::Xamarin.Forms.Platform.Resource.Styleable.MaterialComponentsTheme_tabStyle = global::HelloworldXamarin.Droid.Resource.Styleable.MaterialComponentsTheme_tabStyle;
+ global::Xamarin.Forms.Platform.Resource.Styleable.MaterialComponentsTheme_textAppearanceBody1 = global::HelloworldXamarin.Droid.Resource.Styleable.MaterialComponentsTheme_textAppearanceBody1;
+ global::Xamarin.Forms.Platform.Resource.Styleable.MaterialComponentsTheme_textAppearanceBody2 = global::HelloworldXamarin.Droid.Resource.Styleable.MaterialComponentsTheme_textAppearanceBody2;
+ global::Xamarin.Forms.Platform.Resource.Styleable.MaterialComponentsTheme_textAppearanceButton = global::HelloworldXamarin.Droid.Resource.Styleable.MaterialComponentsTheme_textAppearanceButton;
+ global::Xamarin.Forms.Platform.Resource.Styleable.MaterialComponentsTheme_textAppearanceCaption = global::HelloworldXamarin.Droid.Resource.Styleable.MaterialComponentsTheme_textAppearanceCaption;
+ global::Xamarin.Forms.Platform.Resource.Styleable.MaterialComponentsTheme_textAppearanceHeadline1 = global::HelloworldXamarin.Droid.Resource.Styleable.MaterialComponentsTheme_textAppearanceHeadline1;
+ global::Xamarin.Forms.Platform.Resource.Styleable.MaterialComponentsTheme_textAppearanceHeadline2 = global::HelloworldXamarin.Droid.Resource.Styleable.MaterialComponentsTheme_textAppearanceHeadline2;
+ global::Xamarin.Forms.Platform.Resource.Styleable.MaterialComponentsTheme_textAppearanceHeadline3 = global::HelloworldXamarin.Droid.Resource.Styleable.MaterialComponentsTheme_textAppearanceHeadline3;
+ global::Xamarin.Forms.Platform.Resource.Styleable.MaterialComponentsTheme_textAppearanceHeadline4 = global::HelloworldXamarin.Droid.Resource.Styleable.MaterialComponentsTheme_textAppearanceHeadline4;
+ global::Xamarin.Forms.Platform.Resource.Styleable.MaterialComponentsTheme_textAppearanceHeadline5 = global::HelloworldXamarin.Droid.Resource.Styleable.MaterialComponentsTheme_textAppearanceHeadline5;
+ global::Xamarin.Forms.Platform.Resource.Styleable.MaterialComponentsTheme_textAppearanceHeadline6 = global::HelloworldXamarin.Droid.Resource.Styleable.MaterialComponentsTheme_textAppearanceHeadline6;
+ global::Xamarin.Forms.Platform.Resource.Styleable.MaterialComponentsTheme_textAppearanceOverline = global::HelloworldXamarin.Droid.Resource.Styleable.MaterialComponentsTheme_textAppearanceOverline;
+ global::Xamarin.Forms.Platform.Resource.Styleable.MaterialComponentsTheme_textAppearanceSubtitle1 = global::HelloworldXamarin.Droid.Resource.Styleable.MaterialComponentsTheme_textAppearanceSubtitle1;
+ global::Xamarin.Forms.Platform.Resource.Styleable.MaterialComponentsTheme_textAppearanceSubtitle2 = global::HelloworldXamarin.Droid.Resource.Styleable.MaterialComponentsTheme_textAppearanceSubtitle2;
+ global::Xamarin.Forms.Platform.Resource.Styleable.MaterialComponentsTheme_textInputStyle = global::HelloworldXamarin.Droid.Resource.Styleable.MaterialComponentsTheme_textInputStyle;
+ global::Xamarin.Forms.Platform.Resource.Styleable.MenuGroup = global::HelloworldXamarin.Droid.Resource.Styleable.MenuGroup;
+ global::Xamarin.Forms.Platform.Resource.Styleable.MenuGroup_android_checkableBehavior = global::HelloworldXamarin.Droid.Resource.Styleable.MenuGroup_android_checkableBehavior;
+ global::Xamarin.Forms.Platform.Resource.Styleable.MenuGroup_android_enabled = global::HelloworldXamarin.Droid.Resource.Styleable.MenuGroup_android_enabled;
+ global::Xamarin.Forms.Platform.Resource.Styleable.MenuGroup_android_id = global::HelloworldXamarin.Droid.Resource.Styleable.MenuGroup_android_id;
+ global::Xamarin.Forms.Platform.Resource.Styleable.MenuGroup_android_menuCategory = global::HelloworldXamarin.Droid.Resource.Styleable.MenuGroup_android_menuCategory;
+ global::Xamarin.Forms.Platform.Resource.Styleable.MenuGroup_android_orderInCategory = global::HelloworldXamarin.Droid.Resource.Styleable.MenuGroup_android_orderInCategory;
+ global::Xamarin.Forms.Platform.Resource.Styleable.MenuGroup_android_visible = global::HelloworldXamarin.Droid.Resource.Styleable.MenuGroup_android_visible;
+ global::Xamarin.Forms.Platform.Resource.Styleable.MenuItem = global::HelloworldXamarin.Droid.Resource.Styleable.MenuItem;
+ global::Xamarin.Forms.Platform.Resource.Styleable.MenuItem_actionLayout = global::HelloworldXamarin.Droid.Resource.Styleable.MenuItem_actionLayout;
+ global::Xamarin.Forms.Platform.Resource.Styleable.MenuItem_actionProviderClass = global::HelloworldXamarin.Droid.Resource.Styleable.MenuItem_actionProviderClass;
+ global::Xamarin.Forms.Platform.Resource.Styleable.MenuItem_actionViewClass = global::HelloworldXamarin.Droid.Resource.Styleable.MenuItem_actionViewClass;
+ global::Xamarin.Forms.Platform.Resource.Styleable.MenuItem_alphabeticModifiers = global::HelloworldXamarin.Droid.Resource.Styleable.MenuItem_alphabeticModifiers;
+ global::Xamarin.Forms.Platform.Resource.Styleable.MenuItem_android_alphabeticShortcut = global::HelloworldXamarin.Droid.Resource.Styleable.MenuItem_android_alphabeticShortcut;
+ global::Xamarin.Forms.Platform.Resource.Styleable.MenuItem_android_checkable = global::HelloworldXamarin.Droid.Resource.Styleable.MenuItem_android_checkable;
+ global::Xamarin.Forms.Platform.Resource.Styleable.MenuItem_android_checked = global::HelloworldXamarin.Droid.Resource.Styleable.MenuItem_android_checked;
+ global::Xamarin.Forms.Platform.Resource.Styleable.MenuItem_android_enabled = global::HelloworldXamarin.Droid.Resource.Styleable.MenuItem_android_enabled;
+ global::Xamarin.Forms.Platform.Resource.Styleable.MenuItem_android_icon = global::HelloworldXamarin.Droid.Resource.Styleable.MenuItem_android_icon;
+ global::Xamarin.Forms.Platform.Resource.Styleable.MenuItem_android_id = global::HelloworldXamarin.Droid.Resource.Styleable.MenuItem_android_id;
+ global::Xamarin.Forms.Platform.Resource.Styleable.MenuItem_android_menuCategory = global::HelloworldXamarin.Droid.Resource.Styleable.MenuItem_android_menuCategory;
+ global::Xamarin.Forms.Platform.Resource.Styleable.MenuItem_android_numericShortcut = global::HelloworldXamarin.Droid.Resource.Styleable.MenuItem_android_numericShortcut;
+ global::Xamarin.Forms.Platform.Resource.Styleable.MenuItem_android_onClick = global::HelloworldXamarin.Droid.Resource.Styleable.MenuItem_android_onClick;
+ global::Xamarin.Forms.Platform.Resource.Styleable.MenuItem_android_orderInCategory = global::HelloworldXamarin.Droid.Resource.Styleable.MenuItem_android_orderInCategory;
+ global::Xamarin.Forms.Platform.Resource.Styleable.MenuItem_android_title = global::HelloworldXamarin.Droid.Resource.Styleable.MenuItem_android_title;
+ global::Xamarin.Forms.Platform.Resource.Styleable.MenuItem_android_titleCondensed = global::HelloworldXamarin.Droid.Resource.Styleable.MenuItem_android_titleCondensed;
+ global::Xamarin.Forms.Platform.Resource.Styleable.MenuItem_android_visible = global::HelloworldXamarin.Droid.Resource.Styleable.MenuItem_android_visible;
+ global::Xamarin.Forms.Platform.Resource.Styleable.MenuItem_contentDescription = global::HelloworldXamarin.Droid.Resource.Styleable.MenuItem_contentDescription;
+ global::Xamarin.Forms.Platform.Resource.Styleable.MenuItem_iconTint = global::HelloworldXamarin.Droid.Resource.Styleable.MenuItem_iconTint;
+ global::Xamarin.Forms.Platform.Resource.Styleable.MenuItem_iconTintMode = global::HelloworldXamarin.Droid.Resource.Styleable.MenuItem_iconTintMode;
+ global::Xamarin.Forms.Platform.Resource.Styleable.MenuItem_numericModifiers = global::HelloworldXamarin.Droid.Resource.Styleable.MenuItem_numericModifiers;
+ global::Xamarin.Forms.Platform.Resource.Styleable.MenuItem_showAsAction = global::HelloworldXamarin.Droid.Resource.Styleable.MenuItem_showAsAction;
+ global::Xamarin.Forms.Platform.Resource.Styleable.MenuItem_tooltipText = global::HelloworldXamarin.Droid.Resource.Styleable.MenuItem_tooltipText;
+ global::Xamarin.Forms.Platform.Resource.Styleable.MenuView = global::HelloworldXamarin.Droid.Resource.Styleable.MenuView;
+ global::Xamarin.Forms.Platform.Resource.Styleable.MenuView_android_headerBackground = global::HelloworldXamarin.Droid.Resource.Styleable.MenuView_android_headerBackground;
+ global::Xamarin.Forms.Platform.Resource.Styleable.MenuView_android_horizontalDivider = global::HelloworldXamarin.Droid.Resource.Styleable.MenuView_android_horizontalDivider;
+ global::Xamarin.Forms.Platform.Resource.Styleable.MenuView_android_itemBackground = global::HelloworldXamarin.Droid.Resource.Styleable.MenuView_android_itemBackground;
+ global::Xamarin.Forms.Platform.Resource.Styleable.MenuView_android_itemIconDisabledAlpha = global::HelloworldXamarin.Droid.Resource.Styleable.MenuView_android_itemIconDisabledAlpha;
+ global::Xamarin.Forms.Platform.Resource.Styleable.MenuView_android_itemTextAppearance = global::HelloworldXamarin.Droid.Resource.Styleable.MenuView_android_itemTextAppearance;
+ global::Xamarin.Forms.Platform.Resource.Styleable.MenuView_android_verticalDivider = global::HelloworldXamarin.Droid.Resource.Styleable.MenuView_android_verticalDivider;
+ global::Xamarin.Forms.Platform.Resource.Styleable.MenuView_android_windowAnimationStyle = global::HelloworldXamarin.Droid.Resource.Styleable.MenuView_android_windowAnimationStyle;
+ global::Xamarin.Forms.Platform.Resource.Styleable.MenuView_preserveIconSpacing = global::HelloworldXamarin.Droid.Resource.Styleable.MenuView_preserveIconSpacing;
+ global::Xamarin.Forms.Platform.Resource.Styleable.MenuView_subMenuArrow = global::HelloworldXamarin.Droid.Resource.Styleable.MenuView_subMenuArrow;
+ global::Xamarin.Forms.Platform.Resource.Styleable.NavigationView = global::HelloworldXamarin.Droid.Resource.Styleable.NavigationView;
+ global::Xamarin.Forms.Platform.Resource.Styleable.NavigationView_android_background = global::HelloworldXamarin.Droid.Resource.Styleable.NavigationView_android_background;
+ global::Xamarin.Forms.Platform.Resource.Styleable.NavigationView_android_fitsSystemWindows = global::HelloworldXamarin.Droid.Resource.Styleable.NavigationView_android_fitsSystemWindows;
+ global::Xamarin.Forms.Platform.Resource.Styleable.NavigationView_android_maxWidth = global::HelloworldXamarin.Droid.Resource.Styleable.NavigationView_android_maxWidth;
+ global::Xamarin.Forms.Platform.Resource.Styleable.NavigationView_elevation = global::HelloworldXamarin.Droid.Resource.Styleable.NavigationView_elevation;
+ global::Xamarin.Forms.Platform.Resource.Styleable.NavigationView_headerLayout = global::HelloworldXamarin.Droid.Resource.Styleable.NavigationView_headerLayout;
+ global::Xamarin.Forms.Platform.Resource.Styleable.NavigationView_itemBackground = global::HelloworldXamarin.Droid.Resource.Styleable.NavigationView_itemBackground;
+ global::Xamarin.Forms.Platform.Resource.Styleable.NavigationView_itemHorizontalPadding = global::HelloworldXamarin.Droid.Resource.Styleable.NavigationView_itemHorizontalPadding;
+ global::Xamarin.Forms.Platform.Resource.Styleable.NavigationView_itemIconPadding = global::HelloworldXamarin.Droid.Resource.Styleable.NavigationView_itemIconPadding;
+ global::Xamarin.Forms.Platform.Resource.Styleable.NavigationView_itemIconTint = global::HelloworldXamarin.Droid.Resource.Styleable.NavigationView_itemIconTint;
+ global::Xamarin.Forms.Platform.Resource.Styleable.NavigationView_itemTextAppearance = global::HelloworldXamarin.Droid.Resource.Styleable.NavigationView_itemTextAppearance;
+ global::Xamarin.Forms.Platform.Resource.Styleable.NavigationView_itemTextColor = global::HelloworldXamarin.Droid.Resource.Styleable.NavigationView_itemTextColor;
+ global::Xamarin.Forms.Platform.Resource.Styleable.NavigationView_menu = global::HelloworldXamarin.Droid.Resource.Styleable.NavigationView_menu;
+ global::Xamarin.Forms.Platform.Resource.Styleable.PopupWindow = global::HelloworldXamarin.Droid.Resource.Styleable.PopupWindow;
+ global::Xamarin.Forms.Platform.Resource.Styleable.PopupWindowBackgroundState = global::HelloworldXamarin.Droid.Resource.Styleable.PopupWindowBackgroundState;
+ global::Xamarin.Forms.Platform.Resource.Styleable.PopupWindowBackgroundState_state_above_anchor = global::HelloworldXamarin.Droid.Resource.Styleable.PopupWindowBackgroundState_state_above_anchor;
+ global::Xamarin.Forms.Platform.Resource.Styleable.PopupWindow_android_popupAnimationStyle = global::HelloworldXamarin.Droid.Resource.Styleable.PopupWindow_android_popupAnimationStyle;
+ global::Xamarin.Forms.Platform.Resource.Styleable.PopupWindow_android_popupBackground = global::HelloworldXamarin.Droid.Resource.Styleable.PopupWindow_android_popupBackground;
+ global::Xamarin.Forms.Platform.Resource.Styleable.PopupWindow_overlapAnchor = global::HelloworldXamarin.Droid.Resource.Styleable.PopupWindow_overlapAnchor;
+ global::Xamarin.Forms.Platform.Resource.Styleable.RecycleListView = global::HelloworldXamarin.Droid.Resource.Styleable.RecycleListView;
+ global::Xamarin.Forms.Platform.Resource.Styleable.RecycleListView_paddingBottomNoButtons = global::HelloworldXamarin.Droid.Resource.Styleable.RecycleListView_paddingBottomNoButtons;
+ global::Xamarin.Forms.Platform.Resource.Styleable.RecycleListView_paddingTopNoTitle = global::HelloworldXamarin.Droid.Resource.Styleable.RecycleListView_paddingTopNoTitle;
+ global::Xamarin.Forms.Platform.Resource.Styleable.RecyclerView = global::HelloworldXamarin.Droid.Resource.Styleable.RecyclerView;
+ global::Xamarin.Forms.Platform.Resource.Styleable.RecyclerView_android_descendantFocusability = global::HelloworldXamarin.Droid.Resource.Styleable.RecyclerView_android_descendantFocusability;
+ global::Xamarin.Forms.Platform.Resource.Styleable.RecyclerView_android_orientation = global::HelloworldXamarin.Droid.Resource.Styleable.RecyclerView_android_orientation;
+ global::Xamarin.Forms.Platform.Resource.Styleable.RecyclerView_fastScrollEnabled = global::HelloworldXamarin.Droid.Resource.Styleable.RecyclerView_fastScrollEnabled;
+ global::Xamarin.Forms.Platform.Resource.Styleable.RecyclerView_fastScrollHorizontalThumbDrawable = global::HelloworldXamarin.Droid.Resource.Styleable.RecyclerView_fastScrollHorizontalThumbDrawable;
+ global::Xamarin.Forms.Platform.Resource.Styleable.RecyclerView_fastScrollHorizontalTrackDrawable = global::HelloworldXamarin.Droid.Resource.Styleable.RecyclerView_fastScrollHorizontalTrackDrawable;
+ global::Xamarin.Forms.Platform.Resource.Styleable.RecyclerView_fastScrollVerticalThumbDrawable = global::HelloworldXamarin.Droid.Resource.Styleable.RecyclerView_fastScrollVerticalThumbDrawable;
+ global::Xamarin.Forms.Platform.Resource.Styleable.RecyclerView_fastScrollVerticalTrackDrawable = global::HelloworldXamarin.Droid.Resource.Styleable.RecyclerView_fastScrollVerticalTrackDrawable;
+ global::Xamarin.Forms.Platform.Resource.Styleable.RecyclerView_layoutManager = global::HelloworldXamarin.Droid.Resource.Styleable.RecyclerView_layoutManager;
+ global::Xamarin.Forms.Platform.Resource.Styleable.RecyclerView_reverseLayout = global::HelloworldXamarin.Droid.Resource.Styleable.RecyclerView_reverseLayout;
+ global::Xamarin.Forms.Platform.Resource.Styleable.RecyclerView_spanCount = global::HelloworldXamarin.Droid.Resource.Styleable.RecyclerView_spanCount;
+ global::Xamarin.Forms.Platform.Resource.Styleable.RecyclerView_stackFromEnd = global::HelloworldXamarin.Droid.Resource.Styleable.RecyclerView_stackFromEnd;
+ global::Xamarin.Forms.Platform.Resource.Styleable.ScrimInsetsFrameLayout = global::HelloworldXamarin.Droid.Resource.Styleable.ScrimInsetsFrameLayout;
+ global::Xamarin.Forms.Platform.Resource.Styleable.ScrimInsetsFrameLayout_insetForeground = global::HelloworldXamarin.Droid.Resource.Styleable.ScrimInsetsFrameLayout_insetForeground;
+ global::Xamarin.Forms.Platform.Resource.Styleable.ScrollingViewBehavior_Layout = global::HelloworldXamarin.Droid.Resource.Styleable.ScrollingViewBehavior_Layout;
+ global::Xamarin.Forms.Platform.Resource.Styleable.ScrollingViewBehavior_Layout_behavior_overlapTop = global::HelloworldXamarin.Droid.Resource.Styleable.ScrollingViewBehavior_Layout_behavior_overlapTop;
+ global::Xamarin.Forms.Platform.Resource.Styleable.SearchView = global::HelloworldXamarin.Droid.Resource.Styleable.SearchView;
+ global::Xamarin.Forms.Platform.Resource.Styleable.SearchView_android_focusable = global::HelloworldXamarin.Droid.Resource.Styleable.SearchView_android_focusable;
+ global::Xamarin.Forms.Platform.Resource.Styleable.SearchView_android_imeOptions = global::HelloworldXamarin.Droid.Resource.Styleable.SearchView_android_imeOptions;
+ global::Xamarin.Forms.Platform.Resource.Styleable.SearchView_android_inputType = global::HelloworldXamarin.Droid.Resource.Styleable.SearchView_android_inputType;
+ global::Xamarin.Forms.Platform.Resource.Styleable.SearchView_android_maxWidth = global::HelloworldXamarin.Droid.Resource.Styleable.SearchView_android_maxWidth;
+ global::Xamarin.Forms.Platform.Resource.Styleable.SearchView_closeIcon = global::HelloworldXamarin.Droid.Resource.Styleable.SearchView_closeIcon;
+ global::Xamarin.Forms.Platform.Resource.Styleable.SearchView_commitIcon = global::HelloworldXamarin.Droid.Resource.Styleable.SearchView_commitIcon;
+ global::Xamarin.Forms.Platform.Resource.Styleable.SearchView_defaultQueryHint = global::HelloworldXamarin.Droid.Resource.Styleable.SearchView_defaultQueryHint;
+ global::Xamarin.Forms.Platform.Resource.Styleable.SearchView_goIcon = global::HelloworldXamarin.Droid.Resource.Styleable.SearchView_goIcon;
+ global::Xamarin.Forms.Platform.Resource.Styleable.SearchView_iconifiedByDefault = global::HelloworldXamarin.Droid.Resource.Styleable.SearchView_iconifiedByDefault;
+ global::Xamarin.Forms.Platform.Resource.Styleable.SearchView_layout = global::HelloworldXamarin.Droid.Resource.Styleable.SearchView_layout;
+ global::Xamarin.Forms.Platform.Resource.Styleable.SearchView_queryBackground = global::HelloworldXamarin.Droid.Resource.Styleable.SearchView_queryBackground;
+ global::Xamarin.Forms.Platform.Resource.Styleable.SearchView_queryHint = global::HelloworldXamarin.Droid.Resource.Styleable.SearchView_queryHint;
+ global::Xamarin.Forms.Platform.Resource.Styleable.SearchView_searchHintIcon = global::HelloworldXamarin.Droid.Resource.Styleable.SearchView_searchHintIcon;
+ global::Xamarin.Forms.Platform.Resource.Styleable.SearchView_searchIcon = global::HelloworldXamarin.Droid.Resource.Styleable.SearchView_searchIcon;
+ global::Xamarin.Forms.Platform.Resource.Styleable.SearchView_submitBackground = global::HelloworldXamarin.Droid.Resource.Styleable.SearchView_submitBackground;
+ global::Xamarin.Forms.Platform.Resource.Styleable.SearchView_suggestionRowLayout = global::HelloworldXamarin.Droid.Resource.Styleable.SearchView_suggestionRowLayout;
+ global::Xamarin.Forms.Platform.Resource.Styleable.SearchView_voiceIcon = global::HelloworldXamarin.Droid.Resource.Styleable.SearchView_voiceIcon;
+ global::Xamarin.Forms.Platform.Resource.Styleable.Snackbar = global::HelloworldXamarin.Droid.Resource.Styleable.Snackbar;
+ global::Xamarin.Forms.Platform.Resource.Styleable.SnackbarLayout = global::HelloworldXamarin.Droid.Resource.Styleable.SnackbarLayout;
+ global::Xamarin.Forms.Platform.Resource.Styleable.SnackbarLayout_android_maxWidth = global::HelloworldXamarin.Droid.Resource.Styleable.SnackbarLayout_android_maxWidth;
+ global::Xamarin.Forms.Platform.Resource.Styleable.SnackbarLayout_elevation = global::HelloworldXamarin.Droid.Resource.Styleable.SnackbarLayout_elevation;
+ global::Xamarin.Forms.Platform.Resource.Styleable.SnackbarLayout_maxActionInlineWidth = global::HelloworldXamarin.Droid.Resource.Styleable.SnackbarLayout_maxActionInlineWidth;
+ global::Xamarin.Forms.Platform.Resource.Styleable.Snackbar_snackbarButtonStyle = global::HelloworldXamarin.Droid.Resource.Styleable.Snackbar_snackbarButtonStyle;
+ global::Xamarin.Forms.Platform.Resource.Styleable.Snackbar_snackbarStyle = global::HelloworldXamarin.Droid.Resource.Styleable.Snackbar_snackbarStyle;
+ global::Xamarin.Forms.Platform.Resource.Styleable.Spinner = global::HelloworldXamarin.Droid.Resource.Styleable.Spinner;
+ global::Xamarin.Forms.Platform.Resource.Styleable.Spinner_android_dropDownWidth = global::HelloworldXamarin.Droid.Resource.Styleable.Spinner_android_dropDownWidth;
+ global::Xamarin.Forms.Platform.Resource.Styleable.Spinner_android_entries = global::HelloworldXamarin.Droid.Resource.Styleable.Spinner_android_entries;
+ global::Xamarin.Forms.Platform.Resource.Styleable.Spinner_android_popupBackground = global::HelloworldXamarin.Droid.Resource.Styleable.Spinner_android_popupBackground;
+ global::Xamarin.Forms.Platform.Resource.Styleable.Spinner_android_prompt = global::HelloworldXamarin.Droid.Resource.Styleable.Spinner_android_prompt;
+ global::Xamarin.Forms.Platform.Resource.Styleable.Spinner_popupTheme = global::HelloworldXamarin.Droid.Resource.Styleable.Spinner_popupTheme;
+ global::Xamarin.Forms.Platform.Resource.Styleable.StateListDrawable = global::HelloworldXamarin.Droid.Resource.Styleable.StateListDrawable;
+ global::Xamarin.Forms.Platform.Resource.Styleable.StateListDrawableItem = global::HelloworldXamarin.Droid.Resource.Styleable.StateListDrawableItem;
+ global::Xamarin.Forms.Platform.Resource.Styleable.StateListDrawableItem_android_drawable = global::HelloworldXamarin.Droid.Resource.Styleable.StateListDrawableItem_android_drawable;
+ global::Xamarin.Forms.Platform.Resource.Styleable.StateListDrawable_android_constantSize = global::HelloworldXamarin.Droid.Resource.Styleable.StateListDrawable_android_constantSize;
+ global::Xamarin.Forms.Platform.Resource.Styleable.StateListDrawable_android_dither = global::HelloworldXamarin.Droid.Resource.Styleable.StateListDrawable_android_dither;
+ global::Xamarin.Forms.Platform.Resource.Styleable.StateListDrawable_android_enterFadeDuration = global::HelloworldXamarin.Droid.Resource.Styleable.StateListDrawable_android_enterFadeDuration;
+ global::Xamarin.Forms.Platform.Resource.Styleable.StateListDrawable_android_exitFadeDuration = global::HelloworldXamarin.Droid.Resource.Styleable.StateListDrawable_android_exitFadeDuration;
+ global::Xamarin.Forms.Platform.Resource.Styleable.StateListDrawable_android_variablePadding = global::HelloworldXamarin.Droid.Resource.Styleable.StateListDrawable_android_variablePadding;
+ global::Xamarin.Forms.Platform.Resource.Styleable.StateListDrawable_android_visible = global::HelloworldXamarin.Droid.Resource.Styleable.StateListDrawable_android_visible;
+ global::Xamarin.Forms.Platform.Resource.Styleable.SwitchCompat = global::HelloworldXamarin.Droid.Resource.Styleable.SwitchCompat;
+ global::Xamarin.Forms.Platform.Resource.Styleable.SwitchCompat_android_textOff = global::HelloworldXamarin.Droid.Resource.Styleable.SwitchCompat_android_textOff;
+ global::Xamarin.Forms.Platform.Resource.Styleable.SwitchCompat_android_textOn = global::HelloworldXamarin.Droid.Resource.Styleable.SwitchCompat_android_textOn;
+ global::Xamarin.Forms.Platform.Resource.Styleable.SwitchCompat_android_thumb = global::HelloworldXamarin.Droid.Resource.Styleable.SwitchCompat_android_thumb;
+ global::Xamarin.Forms.Platform.Resource.Styleable.SwitchCompat_showText = global::HelloworldXamarin.Droid.Resource.Styleable.SwitchCompat_showText;
+ global::Xamarin.Forms.Platform.Resource.Styleable.SwitchCompat_splitTrack = global::HelloworldXamarin.Droid.Resource.Styleable.SwitchCompat_splitTrack;
+ global::Xamarin.Forms.Platform.Resource.Styleable.SwitchCompat_switchMinWidth = global::HelloworldXamarin.Droid.Resource.Styleable.SwitchCompat_switchMinWidth;
+ global::Xamarin.Forms.Platform.Resource.Styleable.SwitchCompat_switchPadding = global::HelloworldXamarin.Droid.Resource.Styleable.SwitchCompat_switchPadding;
+ global::Xamarin.Forms.Platform.Resource.Styleable.SwitchCompat_switchTextAppearance = global::HelloworldXamarin.Droid.Resource.Styleable.SwitchCompat_switchTextAppearance;
+ global::Xamarin.Forms.Platform.Resource.Styleable.SwitchCompat_thumbTextPadding = global::HelloworldXamarin.Droid.Resource.Styleable.SwitchCompat_thumbTextPadding;
+ global::Xamarin.Forms.Platform.Resource.Styleable.SwitchCompat_thumbTint = global::HelloworldXamarin.Droid.Resource.Styleable.SwitchCompat_thumbTint;
+ global::Xamarin.Forms.Platform.Resource.Styleable.SwitchCompat_thumbTintMode = global::HelloworldXamarin.Droid.Resource.Styleable.SwitchCompat_thumbTintMode;
+ global::Xamarin.Forms.Platform.Resource.Styleable.SwitchCompat_track = global::HelloworldXamarin.Droid.Resource.Styleable.SwitchCompat_track;
+ global::Xamarin.Forms.Platform.Resource.Styleable.SwitchCompat_trackTint = global::HelloworldXamarin.Droid.Resource.Styleable.SwitchCompat_trackTint;
+ global::Xamarin.Forms.Platform.Resource.Styleable.SwitchCompat_trackTintMode = global::HelloworldXamarin.Droid.Resource.Styleable.SwitchCompat_trackTintMode;
+ global::Xamarin.Forms.Platform.Resource.Styleable.TabItem = global::HelloworldXamarin.Droid.Resource.Styleable.TabItem;
+ global::Xamarin.Forms.Platform.Resource.Styleable.TabItem_android_icon = global::HelloworldXamarin.Droid.Resource.Styleable.TabItem_android_icon;
+ global::Xamarin.Forms.Platform.Resource.Styleable.TabItem_android_layout = global::HelloworldXamarin.Droid.Resource.Styleable.TabItem_android_layout;
+ global::Xamarin.Forms.Platform.Resource.Styleable.TabItem_android_text = global::HelloworldXamarin.Droid.Resource.Styleable.TabItem_android_text;
+ global::Xamarin.Forms.Platform.Resource.Styleable.TabLayout = global::HelloworldXamarin.Droid.Resource.Styleable.TabLayout;
+ global::Xamarin.Forms.Platform.Resource.Styleable.TabLayout_tabBackground = global::HelloworldXamarin.Droid.Resource.Styleable.TabLayout_tabBackground;
+ global::Xamarin.Forms.Platform.Resource.Styleable.TabLayout_tabContentStart = global::HelloworldXamarin.Droid.Resource.Styleable.TabLayout_tabContentStart;
+ global::Xamarin.Forms.Platform.Resource.Styleable.TabLayout_tabGravity = global::HelloworldXamarin.Droid.Resource.Styleable.TabLayout_tabGravity;
+ global::Xamarin.Forms.Platform.Resource.Styleable.TabLayout_tabIconTint = global::HelloworldXamarin.Droid.Resource.Styleable.TabLayout_tabIconTint;
+ global::Xamarin.Forms.Platform.Resource.Styleable.TabLayout_tabIconTintMode = global::HelloworldXamarin.Droid.Resource.Styleable.TabLayout_tabIconTintMode;
+ global::Xamarin.Forms.Platform.Resource.Styleable.TabLayout_tabIndicator = global::HelloworldXamarin.Droid.Resource.Styleable.TabLayout_tabIndicator;
+ global::Xamarin.Forms.Platform.Resource.Styleable.TabLayout_tabIndicatorAnimationDuration = global::HelloworldXamarin.Droid.Resource.Styleable.TabLayout_tabIndicatorAnimationDuration;
+ global::Xamarin.Forms.Platform.Resource.Styleable.TabLayout_tabIndicatorColor = global::HelloworldXamarin.Droid.Resource.Styleable.TabLayout_tabIndicatorColor;
+ global::Xamarin.Forms.Platform.Resource.Styleable.TabLayout_tabIndicatorFullWidth = global::HelloworldXamarin.Droid.Resource.Styleable.TabLayout_tabIndicatorFullWidth;
+ global::Xamarin.Forms.Platform.Resource.Styleable.TabLayout_tabIndicatorGravity = global::HelloworldXamarin.Droid.Resource.Styleable.TabLayout_tabIndicatorGravity;
+ global::Xamarin.Forms.Platform.Resource.Styleable.TabLayout_tabIndicatorHeight = global::HelloworldXamarin.Droid.Resource.Styleable.TabLayout_tabIndicatorHeight;
+ global::Xamarin.Forms.Platform.Resource.Styleable.TabLayout_tabInlineLabel = global::HelloworldXamarin.Droid.Resource.Styleable.TabLayout_tabInlineLabel;
+ global::Xamarin.Forms.Platform.Resource.Styleable.TabLayout_tabMaxWidth = global::HelloworldXamarin.Droid.Resource.Styleable.TabLayout_tabMaxWidth;
+ global::Xamarin.Forms.Platform.Resource.Styleable.TabLayout_tabMinWidth = global::HelloworldXamarin.Droid.Resource.Styleable.TabLayout_tabMinWidth;
+ global::Xamarin.Forms.Platform.Resource.Styleable.TabLayout_tabMode = global::HelloworldXamarin.Droid.Resource.Styleable.TabLayout_tabMode;
+ global::Xamarin.Forms.Platform.Resource.Styleable.TabLayout_tabPadding = global::HelloworldXamarin.Droid.Resource.Styleable.TabLayout_tabPadding;
+ global::Xamarin.Forms.Platform.Resource.Styleable.TabLayout_tabPaddingBottom = global::HelloworldXamarin.Droid.Resource.Styleable.TabLayout_tabPaddingBottom;
+ global::Xamarin.Forms.Platform.Resource.Styleable.TabLayout_tabPaddingEnd = global::HelloworldXamarin.Droid.Resource.Styleable.TabLayout_tabPaddingEnd;
+ global::Xamarin.Forms.Platform.Resource.Styleable.TabLayout_tabPaddingStart = global::HelloworldXamarin.Droid.Resource.Styleable.TabLayout_tabPaddingStart;
+ global::Xamarin.Forms.Platform.Resource.Styleable.TabLayout_tabPaddingTop = global::HelloworldXamarin.Droid.Resource.Styleable.TabLayout_tabPaddingTop;
+ global::Xamarin.Forms.Platform.Resource.Styleable.TabLayout_tabRippleColor = global::HelloworldXamarin.Droid.Resource.Styleable.TabLayout_tabRippleColor;
+ global::Xamarin.Forms.Platform.Resource.Styleable.TabLayout_tabSelectedTextColor = global::HelloworldXamarin.Droid.Resource.Styleable.TabLayout_tabSelectedTextColor;
+ global::Xamarin.Forms.Platform.Resource.Styleable.TabLayout_tabTextAppearance = global::HelloworldXamarin.Droid.Resource.Styleable.TabLayout_tabTextAppearance;
+ global::Xamarin.Forms.Platform.Resource.Styleable.TabLayout_tabTextColor = global::HelloworldXamarin.Droid.Resource.Styleable.TabLayout_tabTextColor;
+ global::Xamarin.Forms.Platform.Resource.Styleable.TabLayout_tabUnboundedRipple = global::HelloworldXamarin.Droid.Resource.Styleable.TabLayout_tabUnboundedRipple;
+ global::Xamarin.Forms.Platform.Resource.Styleable.TextAppearance = global::HelloworldXamarin.Droid.Resource.Styleable.TextAppearance;
+ global::Xamarin.Forms.Platform.Resource.Styleable.TextAppearance_android_fontFamily = global::HelloworldXamarin.Droid.Resource.Styleable.TextAppearance_android_fontFamily;
+ global::Xamarin.Forms.Platform.Resource.Styleable.TextAppearance_android_shadowColor = global::HelloworldXamarin.Droid.Resource.Styleable.TextAppearance_android_shadowColor;
+ global::Xamarin.Forms.Platform.Resource.Styleable.TextAppearance_android_shadowDx = global::HelloworldXamarin.Droid.Resource.Styleable.TextAppearance_android_shadowDx;
+ global::Xamarin.Forms.Platform.Resource.Styleable.TextAppearance_android_shadowDy = global::HelloworldXamarin.Droid.Resource.Styleable.TextAppearance_android_shadowDy;
+ global::Xamarin.Forms.Platform.Resource.Styleable.TextAppearance_android_shadowRadius = global::HelloworldXamarin.Droid.Resource.Styleable.TextAppearance_android_shadowRadius;
+ global::Xamarin.Forms.Platform.Resource.Styleable.TextAppearance_android_textColor = global::HelloworldXamarin.Droid.Resource.Styleable.TextAppearance_android_textColor;
+ global::Xamarin.Forms.Platform.Resource.Styleable.TextAppearance_android_textColorHint = global::HelloworldXamarin.Droid.Resource.Styleable.TextAppearance_android_textColorHint;
+ global::Xamarin.Forms.Platform.Resource.Styleable.TextAppearance_android_textColorLink = global::HelloworldXamarin.Droid.Resource.Styleable.TextAppearance_android_textColorLink;
+ global::Xamarin.Forms.Platform.Resource.Styleable.TextAppearance_android_textSize = global::HelloworldXamarin.Droid.Resource.Styleable.TextAppearance_android_textSize;
+ global::Xamarin.Forms.Platform.Resource.Styleable.TextAppearance_android_textStyle = global::HelloworldXamarin.Droid.Resource.Styleable.TextAppearance_android_textStyle;
+ global::Xamarin.Forms.Platform.Resource.Styleable.TextAppearance_android_typeface = global::HelloworldXamarin.Droid.Resource.Styleable.TextAppearance_android_typeface;
+ global::Xamarin.Forms.Platform.Resource.Styleable.TextAppearance_fontFamily = global::HelloworldXamarin.Droid.Resource.Styleable.TextAppearance_fontFamily;
+ global::Xamarin.Forms.Platform.Resource.Styleable.TextAppearance_textAllCaps = global::HelloworldXamarin.Droid.Resource.Styleable.TextAppearance_textAllCaps;
+ global::Xamarin.Forms.Platform.Resource.Styleable.TextInputLayout = global::HelloworldXamarin.Droid.Resource.Styleable.TextInputLayout;
+ global::Xamarin.Forms.Platform.Resource.Styleable.TextInputLayout_android_hint = global::HelloworldXamarin.Droid.Resource.Styleable.TextInputLayout_android_hint;
+ global::Xamarin.Forms.Platform.Resource.Styleable.TextInputLayout_android_textColorHint = global::HelloworldXamarin.Droid.Resource.Styleable.TextInputLayout_android_textColorHint;
+ global::Xamarin.Forms.Platform.Resource.Styleable.TextInputLayout_boxBackgroundColor = global::HelloworldXamarin.Droid.Resource.Styleable.TextInputLayout_boxBackgroundColor;
+ global::Xamarin.Forms.Platform.Resource.Styleable.TextInputLayout_boxBackgroundMode = global::HelloworldXamarin.Droid.Resource.Styleable.TextInputLayout_boxBackgroundMode;
+ global::Xamarin.Forms.Platform.Resource.Styleable.TextInputLayout_boxCollapsedPaddingTop = global::HelloworldXamarin.Droid.Resource.Styleable.TextInputLayout_boxCollapsedPaddingTop;
+ global::Xamarin.Forms.Platform.Resource.Styleable.TextInputLayout_boxCornerRadiusBottomEnd = global::HelloworldXamarin.Droid.Resource.Styleable.TextInputLayout_boxCornerRadiusBottomEnd;
+ global::Xamarin.Forms.Platform.Resource.Styleable.TextInputLayout_boxCornerRadiusBottomStart = global::HelloworldXamarin.Droid.Resource.Styleable.TextInputLayout_boxCornerRadiusBottomStart;
+ global::Xamarin.Forms.Platform.Resource.Styleable.TextInputLayout_boxCornerRadiusTopEnd = global::HelloworldXamarin.Droid.Resource.Styleable.TextInputLayout_boxCornerRadiusTopEnd;
+ global::Xamarin.Forms.Platform.Resource.Styleable.TextInputLayout_boxCornerRadiusTopStart = global::HelloworldXamarin.Droid.Resource.Styleable.TextInputLayout_boxCornerRadiusTopStart;
+ global::Xamarin.Forms.Platform.Resource.Styleable.TextInputLayout_boxStrokeColor = global::HelloworldXamarin.Droid.Resource.Styleable.TextInputLayout_boxStrokeColor;
+ global::Xamarin.Forms.Platform.Resource.Styleable.TextInputLayout_boxStrokeWidth = global::HelloworldXamarin.Droid.Resource.Styleable.TextInputLayout_boxStrokeWidth;
+ global::Xamarin.Forms.Platform.Resource.Styleable.TextInputLayout_counterEnabled = global::HelloworldXamarin.Droid.Resource.Styleable.TextInputLayout_counterEnabled;
+ global::Xamarin.Forms.Platform.Resource.Styleable.TextInputLayout_counterMaxLength = global::HelloworldXamarin.Droid.Resource.Styleable.TextInputLayout_counterMaxLength;
+ global::Xamarin.Forms.Platform.Resource.Styleable.TextInputLayout_counterOverflowTextAppearance = global::HelloworldXamarin.Droid.Resource.Styleable.TextInputLayout_counterOverflowTextAppearance;
+ global::Xamarin.Forms.Platform.Resource.Styleable.TextInputLayout_counterTextAppearance = global::HelloworldXamarin.Droid.Resource.Styleable.TextInputLayout_counterTextAppearance;
+ global::Xamarin.Forms.Platform.Resource.Styleable.TextInputLayout_errorEnabled = global::HelloworldXamarin.Droid.Resource.Styleable.TextInputLayout_errorEnabled;
+ global::Xamarin.Forms.Platform.Resource.Styleable.TextInputLayout_errorTextAppearance = global::HelloworldXamarin.Droid.Resource.Styleable.TextInputLayout_errorTextAppearance;
+ global::Xamarin.Forms.Platform.Resource.Styleable.TextInputLayout_helperText = global::HelloworldXamarin.Droid.Resource.Styleable.TextInputLayout_helperText;
+ global::Xamarin.Forms.Platform.Resource.Styleable.TextInputLayout_helperTextEnabled = global::HelloworldXamarin.Droid.Resource.Styleable.TextInputLayout_helperTextEnabled;
+ global::Xamarin.Forms.Platform.Resource.Styleable.TextInputLayout_helperTextTextAppearance = global::HelloworldXamarin.Droid.Resource.Styleable.TextInputLayout_helperTextTextAppearance;
+ global::Xamarin.Forms.Platform.Resource.Styleable.TextInputLayout_hintAnimationEnabled = global::HelloworldXamarin.Droid.Resource.Styleable.TextInputLayout_hintAnimationEnabled;
+ global::Xamarin.Forms.Platform.Resource.Styleable.TextInputLayout_hintEnabled = global::HelloworldXamarin.Droid.Resource.Styleable.TextInputLayout_hintEnabled;
+ global::Xamarin.Forms.Platform.Resource.Styleable.TextInputLayout_hintTextAppearance = global::HelloworldXamarin.Droid.Resource.Styleable.TextInputLayout_hintTextAppearance;
+ global::Xamarin.Forms.Platform.Resource.Styleable.TextInputLayout_passwordToggleContentDescription = global::HelloworldXamarin.Droid.Resource.Styleable.TextInputLayout_passwordToggleContentDescription;
+ global::Xamarin.Forms.Platform.Resource.Styleable.TextInputLayout_passwordToggleDrawable = global::HelloworldXamarin.Droid.Resource.Styleable.TextInputLayout_passwordToggleDrawable;
+ global::Xamarin.Forms.Platform.Resource.Styleable.TextInputLayout_passwordToggleEnabled = global::HelloworldXamarin.Droid.Resource.Styleable.TextInputLayout_passwordToggleEnabled;
+ global::Xamarin.Forms.Platform.Resource.Styleable.TextInputLayout_passwordToggleTint = global::HelloworldXamarin.Droid.Resource.Styleable.TextInputLayout_passwordToggleTint;
+ global::Xamarin.Forms.Platform.Resource.Styleable.TextInputLayout_passwordToggleTintMode = global::HelloworldXamarin.Droid.Resource.Styleable.TextInputLayout_passwordToggleTintMode;
+ global::Xamarin.Forms.Platform.Resource.Styleable.ThemeEnforcement = global::HelloworldXamarin.Droid.Resource.Styleable.ThemeEnforcement;
+ global::Xamarin.Forms.Platform.Resource.Styleable.ThemeEnforcement_android_textAppearance = global::HelloworldXamarin.Droid.Resource.Styleable.ThemeEnforcement_android_textAppearance;
+ global::Xamarin.Forms.Platform.Resource.Styleable.ThemeEnforcement_enforceMaterialTheme = global::HelloworldXamarin.Droid.Resource.Styleable.ThemeEnforcement_enforceMaterialTheme;
+ global::Xamarin.Forms.Platform.Resource.Styleable.ThemeEnforcement_enforceTextAppearance = global::HelloworldXamarin.Droid.Resource.Styleable.ThemeEnforcement_enforceTextAppearance;
+ global::Xamarin.Forms.Platform.Resource.Styleable.Toolbar = global::HelloworldXamarin.Droid.Resource.Styleable.Toolbar;
+ global::Xamarin.Forms.Platform.Resource.Styleable.Toolbar_android_gravity = global::HelloworldXamarin.Droid.Resource.Styleable.Toolbar_android_gravity;
+ global::Xamarin.Forms.Platform.Resource.Styleable.Toolbar_android_minHeight = global::HelloworldXamarin.Droid.Resource.Styleable.Toolbar_android_minHeight;
+ global::Xamarin.Forms.Platform.Resource.Styleable.Toolbar_buttonGravity = global::HelloworldXamarin.Droid.Resource.Styleable.Toolbar_buttonGravity;
+ global::Xamarin.Forms.Platform.Resource.Styleable.Toolbar_collapseContentDescription = global::HelloworldXamarin.Droid.Resource.Styleable.Toolbar_collapseContentDescription;
+ global::Xamarin.Forms.Platform.Resource.Styleable.Toolbar_collapseIcon = global::HelloworldXamarin.Droid.Resource.Styleable.Toolbar_collapseIcon;
+ global::Xamarin.Forms.Platform.Resource.Styleable.Toolbar_contentInsetEnd = global::HelloworldXamarin.Droid.Resource.Styleable.Toolbar_contentInsetEnd;
+ global::Xamarin.Forms.Platform.Resource.Styleable.Toolbar_contentInsetEndWithActions = global::HelloworldXamarin.Droid.Resource.Styleable.Toolbar_contentInsetEndWithActions;
+ global::Xamarin.Forms.Platform.Resource.Styleable.Toolbar_contentInsetLeft = global::HelloworldXamarin.Droid.Resource.Styleable.Toolbar_contentInsetLeft;
+ global::Xamarin.Forms.Platform.Resource.Styleable.Toolbar_contentInsetRight = global::HelloworldXamarin.Droid.Resource.Styleable.Toolbar_contentInsetRight;
+ global::Xamarin.Forms.Platform.Resource.Styleable.Toolbar_contentInsetStart = global::HelloworldXamarin.Droid.Resource.Styleable.Toolbar_contentInsetStart;
+ global::Xamarin.Forms.Platform.Resource.Styleable.Toolbar_contentInsetStartWithNavigation = global::HelloworldXamarin.Droid.Resource.Styleable.Toolbar_contentInsetStartWithNavigation;
+ global::Xamarin.Forms.Platform.Resource.Styleable.Toolbar_logo = global::HelloworldXamarin.Droid.Resource.Styleable.Toolbar_logo;
+ global::Xamarin.Forms.Platform.Resource.Styleable.Toolbar_logoDescription = global::HelloworldXamarin.Droid.Resource.Styleable.Toolbar_logoDescription;
+ global::Xamarin.Forms.Platform.Resource.Styleable.Toolbar_maxButtonHeight = global::HelloworldXamarin.Droid.Resource.Styleable.Toolbar_maxButtonHeight;
+ global::Xamarin.Forms.Platform.Resource.Styleable.Toolbar_navigationContentDescription = global::HelloworldXamarin.Droid.Resource.Styleable.Toolbar_navigationContentDescription;
+ global::Xamarin.Forms.Platform.Resource.Styleable.Toolbar_navigationIcon = global::HelloworldXamarin.Droid.Resource.Styleable.Toolbar_navigationIcon;
+ global::Xamarin.Forms.Platform.Resource.Styleable.Toolbar_popupTheme = global::HelloworldXamarin.Droid.Resource.Styleable.Toolbar_popupTheme;
+ global::Xamarin.Forms.Platform.Resource.Styleable.Toolbar_subtitle = global::HelloworldXamarin.Droid.Resource.Styleable.Toolbar_subtitle;
+ global::Xamarin.Forms.Platform.Resource.Styleable.Toolbar_subtitleTextAppearance = global::HelloworldXamarin.Droid.Resource.Styleable.Toolbar_subtitleTextAppearance;
+ global::Xamarin.Forms.Platform.Resource.Styleable.Toolbar_subtitleTextColor = global::HelloworldXamarin.Droid.Resource.Styleable.Toolbar_subtitleTextColor;
+ global::Xamarin.Forms.Platform.Resource.Styleable.Toolbar_title = global::HelloworldXamarin.Droid.Resource.Styleable.Toolbar_title;
+ global::Xamarin.Forms.Platform.Resource.Styleable.Toolbar_titleMargin = global::HelloworldXamarin.Droid.Resource.Styleable.Toolbar_titleMargin;
+ global::Xamarin.Forms.Platform.Resource.Styleable.Toolbar_titleMarginBottom = global::HelloworldXamarin.Droid.Resource.Styleable.Toolbar_titleMarginBottom;
+ global::Xamarin.Forms.Platform.Resource.Styleable.Toolbar_titleMarginEnd = global::HelloworldXamarin.Droid.Resource.Styleable.Toolbar_titleMarginEnd;
+ global::Xamarin.Forms.Platform.Resource.Styleable.Toolbar_titleMargins = global::HelloworldXamarin.Droid.Resource.Styleable.Toolbar_titleMargins;
+ global::Xamarin.Forms.Platform.Resource.Styleable.Toolbar_titleMarginStart = global::HelloworldXamarin.Droid.Resource.Styleable.Toolbar_titleMarginStart;
+ global::Xamarin.Forms.Platform.Resource.Styleable.Toolbar_titleMarginTop = global::HelloworldXamarin.Droid.Resource.Styleable.Toolbar_titleMarginTop;
+ global::Xamarin.Forms.Platform.Resource.Styleable.Toolbar_titleTextAppearance = global::HelloworldXamarin.Droid.Resource.Styleable.Toolbar_titleTextAppearance;
+ global::Xamarin.Forms.Platform.Resource.Styleable.Toolbar_titleTextColor = global::HelloworldXamarin.Droid.Resource.Styleable.Toolbar_titleTextColor;
+ global::Xamarin.Forms.Platform.Resource.Styleable.View = global::HelloworldXamarin.Droid.Resource.Styleable.View;
+ global::Xamarin.Forms.Platform.Resource.Styleable.ViewBackgroundHelper = global::HelloworldXamarin.Droid.Resource.Styleable.ViewBackgroundHelper;
+ global::Xamarin.Forms.Platform.Resource.Styleable.ViewBackgroundHelper_android_background = global::HelloworldXamarin.Droid.Resource.Styleable.ViewBackgroundHelper_android_background;
+ global::Xamarin.Forms.Platform.Resource.Styleable.ViewBackgroundHelper_backgroundTint = global::HelloworldXamarin.Droid.Resource.Styleable.ViewBackgroundHelper_backgroundTint;
+ global::Xamarin.Forms.Platform.Resource.Styleable.ViewBackgroundHelper_backgroundTintMode = global::HelloworldXamarin.Droid.Resource.Styleable.ViewBackgroundHelper_backgroundTintMode;
+ global::Xamarin.Forms.Platform.Resource.Styleable.ViewStubCompat = global::HelloworldXamarin.Droid.Resource.Styleable.ViewStubCompat;
+ global::Xamarin.Forms.Platform.Resource.Styleable.ViewStubCompat_android_id = global::HelloworldXamarin.Droid.Resource.Styleable.ViewStubCompat_android_id;
+ global::Xamarin.Forms.Platform.Resource.Styleable.ViewStubCompat_android_inflatedId = global::HelloworldXamarin.Droid.Resource.Styleable.ViewStubCompat_android_inflatedId;
+ global::Xamarin.Forms.Platform.Resource.Styleable.ViewStubCompat_android_layout = global::HelloworldXamarin.Droid.Resource.Styleable.ViewStubCompat_android_layout;
+ global::Xamarin.Forms.Platform.Resource.Styleable.View_android_focusable = global::HelloworldXamarin.Droid.Resource.Styleable.View_android_focusable;
+ global::Xamarin.Forms.Platform.Resource.Styleable.View_android_theme = global::HelloworldXamarin.Droid.Resource.Styleable.View_android_theme;
+ global::Xamarin.Forms.Platform.Resource.Styleable.View_paddingEnd = global::HelloworldXamarin.Droid.Resource.Styleable.View_paddingEnd;
+ global::Xamarin.Forms.Platform.Resource.Styleable.View_paddingStart = global::HelloworldXamarin.Droid.Resource.Styleable.View_paddingStart;
+ global::Xamarin.Forms.Platform.Resource.Styleable.View_theme = global::HelloworldXamarin.Droid.Resource.Styleable.View_theme;
+ }
+
+ public partial class Animation
+ {
+
+ // aapt resource value: 0x7F010000
+ public const int abc_fade_in = 2130771968;
+
+ // aapt resource value: 0x7F010001
+ public const int abc_fade_out = 2130771969;
+
+ // aapt resource value: 0x7F010002
+ public const int abc_grow_fade_in_from_bottom = 2130771970;
+
+ // aapt resource value: 0x7F010003
+ public const int abc_popup_enter = 2130771971;
+
+ // aapt resource value: 0x7F010004
+ public const int abc_popup_exit = 2130771972;
+
+ // aapt resource value: 0x7F010005
+ public const int abc_shrink_fade_out_from_bottom = 2130771973;
+
+ // aapt resource value: 0x7F010006
+ public const int abc_slide_in_bottom = 2130771974;
+
+ // aapt resource value: 0x7F010007
+ public const int abc_slide_in_top = 2130771975;
+
+ // aapt resource value: 0x7F010008
+ public const int abc_slide_out_bottom = 2130771976;
+
+ // aapt resource value: 0x7F010009
+ public const int abc_slide_out_top = 2130771977;
+
+ // aapt resource value: 0x7F01000A
+ public const int abc_tooltip_enter = 2130771978;
+
+ // aapt resource value: 0x7F01000B
+ public const int abc_tooltip_exit = 2130771979;
+
+ // aapt resource value: 0x7F01000C
+ public const int design_bottom_sheet_slide_in = 2130771980;
+
+ // aapt resource value: 0x7F01000D
+ public const int design_bottom_sheet_slide_out = 2130771981;
+
+ // aapt resource value: 0x7F01000E
+ public const int design_snackbar_in = 2130771982;
+
+ // aapt resource value: 0x7F01000F
+ public const int design_snackbar_out = 2130771983;
+
+ // aapt resource value: 0x7F010010
+ public const int EnterFromLeft = 2130771984;
+
+ // aapt resource value: 0x7F010011
+ public const int EnterFromRight = 2130771985;
+
+ // aapt resource value: 0x7F010012
+ public const int ExitToLeft = 2130771986;
+
+ // aapt resource value: 0x7F010013
+ public const int ExitToRight = 2130771987;
+
+ static Animation()
+ {
+ global::Android.Runtime.ResourceIdManager.UpdateIdValues();
+ }
+
+ private Animation()
+ {
+ }
+ }
+
+ public partial class Animator
+ {
+
+ // aapt resource value: 0x7F020000
+ public const int design_appbar_state_list_animator = 2130837504;
+
+ // aapt resource value: 0x7F020001
+ public const int design_fab_hide_motion_spec = 2130837505;
+
+ // aapt resource value: 0x7F020002
+ public const int design_fab_show_motion_spec = 2130837506;
+
+ // aapt resource value: 0x7F020003
+ public const int mtrl_btn_state_list_anim = 2130837507;
+
+ // aapt resource value: 0x7F020004
+ public const int mtrl_btn_unelevated_state_list_anim = 2130837508;
+
+ // aapt resource value: 0x7F020005
+ public const int mtrl_chip_state_list_anim = 2130837509;
+
+ // aapt resource value: 0x7F020006
+ public const int mtrl_fab_hide_motion_spec = 2130837510;
+
+ // aapt resource value: 0x7F020007
+ public const int mtrl_fab_show_motion_spec = 2130837511;
+
+ // aapt resource value: 0x7F020008
+ public const int mtrl_fab_transformation_sheet_collapse_spec = 2130837512;
+
+ // aapt resource value: 0x7F020009
+ public const int mtrl_fab_transformation_sheet_expand_spec = 2130837513;
+
+ static Animator()
+ {
+ global::Android.Runtime.ResourceIdManager.UpdateIdValues();
+ }
+
+ private Animator()
+ {
+ }
+ }
+
+ public partial class Attribute
+ {
+
+ // aapt resource value: 0x7F030000
+ public const int actionBarDivider = 2130903040;
+
+ // aapt resource value: 0x7F030001
+ public const int actionBarItemBackground = 2130903041;
+
+ // aapt resource value: 0x7F030002
+ public const int actionBarPopupTheme = 2130903042;
+
+ // aapt resource value: 0x7F030003
+ public const int actionBarSize = 2130903043;
+
+ // aapt resource value: 0x7F030004
+ public const int actionBarSplitStyle = 2130903044;
+
+ // aapt resource value: 0x7F030005
+ public const int actionBarStyle = 2130903045;
+
+ // aapt resource value: 0x7F030006
+ public const int actionBarTabBarStyle = 2130903046;
+
+ // aapt resource value: 0x7F030007
+ public const int actionBarTabStyle = 2130903047;
+
+ // aapt resource value: 0x7F030008
+ public const int actionBarTabTextStyle = 2130903048;
+
+ // aapt resource value: 0x7F030009
+ public const int actionBarTheme = 2130903049;
+
+ // aapt resource value: 0x7F03000A
+ public const int actionBarWidgetTheme = 2130903050;
+
+ // aapt resource value: 0x7F03000B
+ public const int actionButtonStyle = 2130903051;
+
+ // aapt resource value: 0x7F03000C
+ public const int actionDropDownStyle = 2130903052;
+
+ // aapt resource value: 0x7F03000D
+ public const int actionLayout = 2130903053;
+
+ // aapt resource value: 0x7F03000E
+ public const int actionMenuTextAppearance = 2130903054;
+
+ // aapt resource value: 0x7F03000F
+ public const int actionMenuTextColor = 2130903055;
+
+ // aapt resource value: 0x7F030010
+ public const int actionModeBackground = 2130903056;
+
+ // aapt resource value: 0x7F030011
+ public const int actionModeCloseButtonStyle = 2130903057;
+
+ // aapt resource value: 0x7F030012
+ public const int actionModeCloseDrawable = 2130903058;
+
+ // aapt resource value: 0x7F030013
+ public const int actionModeCopyDrawable = 2130903059;
+
+ // aapt resource value: 0x7F030014
+ public const int actionModeCutDrawable = 2130903060;
+
+ // aapt resource value: 0x7F030015
+ public const int actionModeFindDrawable = 2130903061;
+
+ // aapt resource value: 0x7F030016
+ public const int actionModePasteDrawable = 2130903062;
+
+ // aapt resource value: 0x7F030017
+ public const int actionModePopupWindowStyle = 2130903063;
+
+ // aapt resource value: 0x7F030018
+ public const int actionModeSelectAllDrawable = 2130903064;
+
+ // aapt resource value: 0x7F030019
+ public const int actionModeShareDrawable = 2130903065;
+
+ // aapt resource value: 0x7F03001A
+ public const int actionModeSplitBackground = 2130903066;
+
+ // aapt resource value: 0x7F03001B
+ public const int actionModeStyle = 2130903067;
+
+ // aapt resource value: 0x7F03001C
+ public const int actionModeWebSearchDrawable = 2130903068;
+
+ // aapt resource value: 0x7F03001D
+ public const int actionOverflowButtonStyle = 2130903069;
+
+ // aapt resource value: 0x7F03001E
+ public const int actionOverflowMenuStyle = 2130903070;
+
+ // aapt resource value: 0x7F03001F
+ public const int actionProviderClass = 2130903071;
+
+ // aapt resource value: 0x7F030020
+ public const int actionViewClass = 2130903072;
+
+ // aapt resource value: 0x7F030021
+ public const int activityChooserViewStyle = 2130903073;
+
+ // aapt resource value: 0x7F030022
+ public const int alertDialogButtonGroupStyle = 2130903074;
+
+ // aapt resource value: 0x7F030023
+ public const int alertDialogCenterButtons = 2130903075;
+
+ // aapt resource value: 0x7F030024
+ public const int alertDialogStyle = 2130903076;
+
+ // aapt resource value: 0x7F030025
+ public const int alertDialogTheme = 2130903077;
+
+ // aapt resource value: 0x7F030026
+ public const int allowStacking = 2130903078;
+
+ // aapt resource value: 0x7F030027
+ public const int alpha = 2130903079;
+
+ // aapt resource value: 0x7F030028
+ public const int alphabeticModifiers = 2130903080;
+
+ // aapt resource value: 0x7F030029
+ public const int arrowHeadLength = 2130903081;
+
+ // aapt resource value: 0x7F03002A
+ public const int arrowShaftLength = 2130903082;
+
+ // aapt resource value: 0x7F03002B
+ public const int autoCompleteTextViewStyle = 2130903083;
+
+ // aapt resource value: 0x7F03002C
+ public const int autoSizeMaxTextSize = 2130903084;
+
+ // aapt resource value: 0x7F03002D
+ public const int autoSizeMinTextSize = 2130903085;
+
+ // aapt resource value: 0x7F03002E
+ public const int autoSizePresetSizes = 2130903086;
+
+ // aapt resource value: 0x7F03002F
+ public const int autoSizeStepGranularity = 2130903087;
+
+ // aapt resource value: 0x7F030030
+ public const int autoSizeTextType = 2130903088;
+
+ // aapt resource value: 0x7F030031
+ public const int background = 2130903089;
+
+ // aapt resource value: 0x7F030032
+ public const int backgroundSplit = 2130903090;
+
+ // aapt resource value: 0x7F030033
+ public const int backgroundStacked = 2130903091;
+
+ // aapt resource value: 0x7F030034
+ public const int backgroundTint = 2130903092;
+
+ // aapt resource value: 0x7F030035
+ public const int backgroundTintMode = 2130903093;
+
+ // aapt resource value: 0x7F030036
+ public const int barLength = 2130903094;
+
+ // aapt resource value: 0x7F030037
+ public const int behavior_autoHide = 2130903095;
+
+ // aapt resource value: 0x7F030038
+ public const int behavior_fitToContents = 2130903096;
+
+ // aapt resource value: 0x7F030039
+ public const int behavior_hideable = 2130903097;
+
+ // aapt resource value: 0x7F03003A
+ public const int behavior_overlapTop = 2130903098;
+
+ // aapt resource value: 0x7F03003B
+ public const int behavior_peekHeight = 2130903099;
+
+ // aapt resource value: 0x7F03003C
+ public const int behavior_skipCollapsed = 2130903100;
+
+ // aapt resource value: 0x7F03003E
+ public const int borderlessButtonStyle = 2130903102;
+
+ // aapt resource value: 0x7F03003D
+ public const int borderWidth = 2130903101;
+
+ // aapt resource value: 0x7F03003F
+ public const int bottomAppBarStyle = 2130903103;
+
+ // aapt resource value: 0x7F030040
+ public const int bottomNavigationStyle = 2130903104;
+
+ // aapt resource value: 0x7F030041
+ public const int bottomSheetDialogTheme = 2130903105;
+
+ // aapt resource value: 0x7F030042
+ public const int bottomSheetStyle = 2130903106;
+
+ // aapt resource value: 0x7F030043
+ public const int boxBackgroundColor = 2130903107;
+
+ // aapt resource value: 0x7F030044
+ public const int boxBackgroundMode = 2130903108;
+
+ // aapt resource value: 0x7F030045
+ public const int boxCollapsedPaddingTop = 2130903109;
+
+ // aapt resource value: 0x7F030046
+ public const int boxCornerRadiusBottomEnd = 2130903110;
+
+ // aapt resource value: 0x7F030047
+ public const int boxCornerRadiusBottomStart = 2130903111;
+
+ // aapt resource value: 0x7F030048
+ public const int boxCornerRadiusTopEnd = 2130903112;
+
+ // aapt resource value: 0x7F030049
+ public const int boxCornerRadiusTopStart = 2130903113;
+
+ // aapt resource value: 0x7F03004A
+ public const int boxStrokeColor = 2130903114;
+
+ // aapt resource value: 0x7F03004B
+ public const int boxStrokeWidth = 2130903115;
+
+ // aapt resource value: 0x7F03004C
+ public const int buttonBarButtonStyle = 2130903116;
+
+ // aapt resource value: 0x7F03004D
+ public const int buttonBarNegativeButtonStyle = 2130903117;
+
+ // aapt resource value: 0x7F03004E
+ public const int buttonBarNeutralButtonStyle = 2130903118;
+
+ // aapt resource value: 0x7F03004F
+ public const int buttonBarPositiveButtonStyle = 2130903119;
+
+ // aapt resource value: 0x7F030050
+ public const int buttonBarStyle = 2130903120;
+
+ // aapt resource value: 0x7F030051
+ public const int buttonGravity = 2130903121;
+
+ // aapt resource value: 0x7F030052
+ public const int buttonIconDimen = 2130903122;
+
+ // aapt resource value: 0x7F030053
+ public const int buttonPanelSideLayout = 2130903123;
+
+ // aapt resource value: 0x7F030054
+ public const int buttonStyle = 2130903124;
+
+ // aapt resource value: 0x7F030055
+ public const int buttonStyleSmall = 2130903125;
+
+ // aapt resource value: 0x7F030056
+ public const int buttonTint = 2130903126;
+
+ // aapt resource value: 0x7F030057
+ public const int buttonTintMode = 2130903127;
+
+ // aapt resource value: 0x7F030058
+ public const int cardBackgroundColor = 2130903128;
+
+ // aapt resource value: 0x7F030059
+ public const int cardCornerRadius = 2130903129;
+
+ // aapt resource value: 0x7F03005A
+ public const int cardElevation = 2130903130;
+
+ // aapt resource value: 0x7F03005B
+ public const int cardMaxElevation = 2130903131;
+
+ // aapt resource value: 0x7F03005C
+ public const int cardPreventCornerOverlap = 2130903132;
+
+ // aapt resource value: 0x7F03005D
+ public const int cardUseCompatPadding = 2130903133;
+
+ // aapt resource value: 0x7F03005E
+ public const int cardViewStyle = 2130903134;
+
+ // aapt resource value: 0x7F03005F
+ public const int checkboxStyle = 2130903135;
+
+ // aapt resource value: 0x7F030060
+ public const int checkedChip = 2130903136;
+
+ // aapt resource value: 0x7F030061
+ public const int checkedIcon = 2130903137;
+
+ // aapt resource value: 0x7F030062
+ public const int checkedIconEnabled = 2130903138;
+
+ // aapt resource value: 0x7F030063
+ public const int checkedIconVisible = 2130903139;
+
+ // aapt resource value: 0x7F030064
+ public const int checkedTextViewStyle = 2130903140;
+
+ // aapt resource value: 0x7F030065
+ public const int chipBackgroundColor = 2130903141;
+
+ // aapt resource value: 0x7F030066
+ public const int chipCornerRadius = 2130903142;
+
+ // aapt resource value: 0x7F030067
+ public const int chipEndPadding = 2130903143;
+
+ // aapt resource value: 0x7F030068
+ public const int chipGroupStyle = 2130903144;
+
+ // aapt resource value: 0x7F030069
+ public const int chipIcon = 2130903145;
+
+ // aapt resource value: 0x7F03006A
+ public const int chipIconEnabled = 2130903146;
+
+ // aapt resource value: 0x7F03006B
+ public const int chipIconSize = 2130903147;
+
+ // aapt resource value: 0x7F03006C
+ public const int chipIconTint = 2130903148;
+
+ // aapt resource value: 0x7F03006D
+ public const int chipIconVisible = 2130903149;
+
+ // aapt resource value: 0x7F03006E
+ public const int chipMinHeight = 2130903150;
+
+ // aapt resource value: 0x7F03006F
+ public const int chipSpacing = 2130903151;
+
+ // aapt resource value: 0x7F030070
+ public const int chipSpacingHorizontal = 2130903152;
+
+ // aapt resource value: 0x7F030071
+ public const int chipSpacingVertical = 2130903153;
+
+ // aapt resource value: 0x7F030072
+ public const int chipStandaloneStyle = 2130903154;
+
+ // aapt resource value: 0x7F030073
+ public const int chipStartPadding = 2130903155;
+
+ // aapt resource value: 0x7F030074
+ public const int chipStrokeColor = 2130903156;
+
+ // aapt resource value: 0x7F030075
+ public const int chipStrokeWidth = 2130903157;
+
+ // aapt resource value: 0x7F030076
+ public const int chipStyle = 2130903158;
+
+ // aapt resource value: 0x7F030077
+ public const int closeIcon = 2130903159;
+
+ // aapt resource value: 0x7F030078
+ public const int closeIconEnabled = 2130903160;
+
+ // aapt resource value: 0x7F030079
+ public const int closeIconEndPadding = 2130903161;
+
+ // aapt resource value: 0x7F03007A
+ public const int closeIconSize = 2130903162;
+
+ // aapt resource value: 0x7F03007B
+ public const int closeIconStartPadding = 2130903163;
+
+ // aapt resource value: 0x7F03007C
+ public const int closeIconTint = 2130903164;
+
+ // aapt resource value: 0x7F03007D
+ public const int closeIconVisible = 2130903165;
+
+ // aapt resource value: 0x7F03007E
+ public const int closeItemLayout = 2130903166;
+
+ // aapt resource value: 0x7F03007F
+ public const int collapseContentDescription = 2130903167;
+
+ // aapt resource value: 0x7F030081
+ public const int collapsedTitleGravity = 2130903169;
+
+ // aapt resource value: 0x7F030082
+ public const int collapsedTitleTextAppearance = 2130903170;
+
+ // aapt resource value: 0x7F030080
+ public const int collapseIcon = 2130903168;
+
+ // aapt resource value: 0x7F030083
+ public const int color = 2130903171;
+
+ // aapt resource value: 0x7F030084
+ public const int colorAccent = 2130903172;
+
+ // aapt resource value: 0x7F030085
+ public const int colorBackgroundFloating = 2130903173;
+
+ // aapt resource value: 0x7F030086
+ public const int colorButtonNormal = 2130903174;
+
+ // aapt resource value: 0x7F030087
+ public const int colorControlActivated = 2130903175;
+
+ // aapt resource value: 0x7F030088
+ public const int colorControlHighlight = 2130903176;
+
+ // aapt resource value: 0x7F030089
+ public const int colorControlNormal = 2130903177;
+
+ // aapt resource value: 0x7F03008A
+ public const int colorError = 2130903178;
+
+ // aapt resource value: 0x7F03008B
+ public const int colorPrimary = 2130903179;
+
+ // aapt resource value: 0x7F03008C
+ public const int colorPrimaryDark = 2130903180;
+
+ // aapt resource value: 0x7F03008D
+ public const int colorSecondary = 2130903181;
+
+ // aapt resource value: 0x7F03008E
+ public const int colorSwitchThumbNormal = 2130903182;
+
+ // aapt resource value: 0x7F03008F
+ public const int commitIcon = 2130903183;
+
+ // aapt resource value: 0x7F030090
+ public const int contentDescription = 2130903184;
+
+ // aapt resource value: 0x7F030091
+ public const int contentInsetEnd = 2130903185;
+
+ // aapt resource value: 0x7F030092
+ public const int contentInsetEndWithActions = 2130903186;
+
+ // aapt resource value: 0x7F030093
+ public const int contentInsetLeft = 2130903187;
+
+ // aapt resource value: 0x7F030094
+ public const int contentInsetRight = 2130903188;
+
+ // aapt resource value: 0x7F030095
+ public const int contentInsetStart = 2130903189;
+
+ // aapt resource value: 0x7F030096
+ public const int contentInsetStartWithNavigation = 2130903190;
+
+ // aapt resource value: 0x7F030097
+ public const int contentPadding = 2130903191;
+
+ // aapt resource value: 0x7F030098
+ public const int contentPaddingBottom = 2130903192;
+
+ // aapt resource value: 0x7F030099
+ public const int contentPaddingLeft = 2130903193;
+
+ // aapt resource value: 0x7F03009A
+ public const int contentPaddingRight = 2130903194;
+
+ // aapt resource value: 0x7F03009B
+ public const int contentPaddingTop = 2130903195;
+
+ // aapt resource value: 0x7F03009C
+ public const int contentScrim = 2130903196;
+
+ // aapt resource value: 0x7F03009D
+ public const int controlBackground = 2130903197;
+
+ // aapt resource value: 0x7F03009E
+ public const int coordinatorLayoutStyle = 2130903198;
+
+ // aapt resource value: 0x7F03009F
+ public const int cornerRadius = 2130903199;
+
+ // aapt resource value: 0x7F0300A0
+ public const int counterEnabled = 2130903200;
+
+ // aapt resource value: 0x7F0300A1
+ public const int counterMaxLength = 2130903201;
+
+ // aapt resource value: 0x7F0300A2
+ public const int counterOverflowTextAppearance = 2130903202;
+
+ // aapt resource value: 0x7F0300A3
+ public const int counterTextAppearance = 2130903203;
+
+ // aapt resource value: 0x7F0300A4
+ public const int customNavigationLayout = 2130903204;
+
+ // aapt resource value: 0x7F0300A5
+ public const int defaultQueryHint = 2130903205;
+
+ // aapt resource value: 0x7F0300A6
+ public const int dialogCornerRadius = 2130903206;
+
+ // aapt resource value: 0x7F0300A7
+ public const int dialogPreferredPadding = 2130903207;
+
+ // aapt resource value: 0x7F0300A8
+ public const int dialogTheme = 2130903208;
+
+ // aapt resource value: 0x7F0300A9
+ public const int displayOptions = 2130903209;
+
+ // aapt resource value: 0x7F0300AA
+ public const int divider = 2130903210;
+
+ // aapt resource value: 0x7F0300AB
+ public const int dividerHorizontal = 2130903211;
+
+ // aapt resource value: 0x7F0300AC
+ public const int dividerPadding = 2130903212;
+
+ // aapt resource value: 0x7F0300AD
+ public const int dividerVertical = 2130903213;
+
+ // aapt resource value: 0x7F0300AE
+ public const int drawableSize = 2130903214;
+
+ // aapt resource value: 0x7F0300AF
+ public const int drawerArrowStyle = 2130903215;
+
+ // aapt resource value: 0x7F0300B1
+ public const int dropdownListPreferredItemHeight = 2130903217;
+
+ // aapt resource value: 0x7F0300B0
+ public const int dropDownListViewStyle = 2130903216;
+
+ // aapt resource value: 0x7F0300B2
+ public const int editTextBackground = 2130903218;
+
+ // aapt resource value: 0x7F0300B3
+ public const int editTextColor = 2130903219;
+
+ // aapt resource value: 0x7F0300B4
+ public const int editTextStyle = 2130903220;
+
+ // aapt resource value: 0x7F0300B5
+ public const int elevation = 2130903221;
+
+ // aapt resource value: 0x7F0300B6
+ public const int enforceMaterialTheme = 2130903222;
+
+ // aapt resource value: 0x7F0300B7
+ public const int enforceTextAppearance = 2130903223;
+
+ // aapt resource value: 0x7F0300B8
+ public const int errorEnabled = 2130903224;
+
+ // aapt resource value: 0x7F0300B9
+ public const int errorTextAppearance = 2130903225;
+
+ // aapt resource value: 0x7F0300BA
+ public const int expandActivityOverflowButtonDrawable = 2130903226;
+
+ // aapt resource value: 0x7F0300BB
+ public const int expanded = 2130903227;
+
+ // aapt resource value: 0x7F0300BC
+ public const int expandedTitleGravity = 2130903228;
+
+ // aapt resource value: 0x7F0300BD
+ public const int expandedTitleMargin = 2130903229;
+
+ // aapt resource value: 0x7F0300BE
+ public const int expandedTitleMarginBottom = 2130903230;
+
+ // aapt resource value: 0x7F0300BF
+ public const int expandedTitleMarginEnd = 2130903231;
+
+ // aapt resource value: 0x7F0300C0
+ public const int expandedTitleMarginStart = 2130903232;
+
+ // aapt resource value: 0x7F0300C1
+ public const int expandedTitleMarginTop = 2130903233;
+
+ // aapt resource value: 0x7F0300C2
+ public const int expandedTitleTextAppearance = 2130903234;
+
+ // aapt resource value: 0x7F0300C3
+ public const int fabAlignmentMode = 2130903235;
+
+ // aapt resource value: 0x7F0300C4
+ public const int fabCradleMargin = 2130903236;
+
+ // aapt resource value: 0x7F0300C5
+ public const int fabCradleRoundedCornerRadius = 2130903237;
+
+ // aapt resource value: 0x7F0300C6
+ public const int fabCradleVerticalOffset = 2130903238;
+
+ // aapt resource value: 0x7F0300C7
+ public const int fabCustomSize = 2130903239;
+
+ // aapt resource value: 0x7F0300C8
+ public const int fabSize = 2130903240;
+
+ // aapt resource value: 0x7F0300C9
+ public const int fastScrollEnabled = 2130903241;
+
+ // aapt resource value: 0x7F0300CA
+ public const int fastScrollHorizontalThumbDrawable = 2130903242;
+
+ // aapt resource value: 0x7F0300CB
+ public const int fastScrollHorizontalTrackDrawable = 2130903243;
+
+ // aapt resource value: 0x7F0300CC
+ public const int fastScrollVerticalThumbDrawable = 2130903244;
+
+ // aapt resource value: 0x7F0300CD
+ public const int fastScrollVerticalTrackDrawable = 2130903245;
+
+ // aapt resource value: 0x7F0300CE
+ public const int firstBaselineToTopHeight = 2130903246;
+
+ // aapt resource value: 0x7F0300CF
+ public const int floatingActionButtonStyle = 2130903247;
+
+ // aapt resource value: 0x7F0300D0
+ public const int font = 2130903248;
+
+ // aapt resource value: 0x7F0300D1
+ public const int fontFamily = 2130903249;
+
+ // aapt resource value: 0x7F0300D2
+ public const int fontProviderAuthority = 2130903250;
+
+ // aapt resource value: 0x7F0300D3
+ public const int fontProviderCerts = 2130903251;
+
+ // aapt resource value: 0x7F0300D4
+ public const int fontProviderFetchStrategy = 2130903252;
+
+ // aapt resource value: 0x7F0300D5
+ public const int fontProviderFetchTimeout = 2130903253;
+
+ // aapt resource value: 0x7F0300D6
+ public const int fontProviderPackage = 2130903254;
+
+ // aapt resource value: 0x7F0300D7
+ public const int fontProviderQuery = 2130903255;
+
+ // aapt resource value: 0x7F0300D8
+ public const int fontStyle = 2130903256;
+
+ // aapt resource value: 0x7F0300D9
+ public const int fontVariationSettings = 2130903257;
+
+ // aapt resource value: 0x7F0300DA
+ public const int fontWeight = 2130903258;
+
+ // aapt resource value: 0x7F0300DB
+ public const int foregroundInsidePadding = 2130903259;
+
+ // aapt resource value: 0x7F0300DC
+ public const int gapBetweenBars = 2130903260;
+
+ // aapt resource value: 0x7F0300DD
+ public const int goIcon = 2130903261;
+
+ // aapt resource value: 0x7F0300DE
+ public const int headerLayout = 2130903262;
+
+ // aapt resource value: 0x7F0300DF
+ public const int height = 2130903263;
+
+ // aapt resource value: 0x7F0300E0
+ public const int helperText = 2130903264;
+
+ // aapt resource value: 0x7F0300E1
+ public const int helperTextEnabled = 2130903265;
+
+ // aapt resource value: 0x7F0300E2
+ public const int helperTextTextAppearance = 2130903266;
+
+ // aapt resource value: 0x7F0300E3
+ public const int hideMotionSpec = 2130903267;
+
+ // aapt resource value: 0x7F0300E4
+ public const int hideOnContentScroll = 2130903268;
+
+ // aapt resource value: 0x7F0300E5
+ public const int hideOnScroll = 2130903269;
+
+ // aapt resource value: 0x7F0300E6
+ public const int hintAnimationEnabled = 2130903270;
+
+ // aapt resource value: 0x7F0300E7
+ public const int hintEnabled = 2130903271;
+
+ // aapt resource value: 0x7F0300E8
+ public const int hintTextAppearance = 2130903272;
+
+ // aapt resource value: 0x7F0300E9
+ public const int homeAsUpIndicator = 2130903273;
+
+ // aapt resource value: 0x7F0300EA
+ public const int homeLayout = 2130903274;
+
+ // aapt resource value: 0x7F0300EB
+ public const int hoveredFocusedTranslationZ = 2130903275;
+
+ // aapt resource value: 0x7F0300EC
+ public const int icon = 2130903276;
+
+ // aapt resource value: 0x7F0300ED
+ public const int iconEndPadding = 2130903277;
+
+ // aapt resource value: 0x7F0300EE
+ public const int iconGravity = 2130903278;
+
+ // aapt resource value: 0x7F0300F4
+ public const int iconifiedByDefault = 2130903284;
+
+ // aapt resource value: 0x7F0300EF
+ public const int iconPadding = 2130903279;
+
+ // aapt resource value: 0x7F0300F0
+ public const int iconSize = 2130903280;
+
+ // aapt resource value: 0x7F0300F1
+ public const int iconStartPadding = 2130903281;
+
+ // aapt resource value: 0x7F0300F2
+ public const int iconTint = 2130903282;
+
+ // aapt resource value: 0x7F0300F3
+ public const int iconTintMode = 2130903283;
+
+ // aapt resource value: 0x7F0300F5
+ public const int imageButtonStyle = 2130903285;
+
+ // aapt resource value: 0x7F0300F6
+ public const int indeterminateProgressStyle = 2130903286;
+
+ // aapt resource value: 0x7F0300F7
+ public const int initialActivityCount = 2130903287;
+
+ // aapt resource value: 0x7F0300F8
+ public const int insetForeground = 2130903288;
+
+ // aapt resource value: 0x7F0300F9
+ public const int isLightTheme = 2130903289;
+
+ // aapt resource value: 0x7F0300FA
+ public const int itemBackground = 2130903290;
+
+ // aapt resource value: 0x7F0300FB
+ public const int itemHorizontalPadding = 2130903291;
+
+ // aapt resource value: 0x7F0300FC
+ public const int itemHorizontalTranslationEnabled = 2130903292;
+
+ // aapt resource value: 0x7F0300FD
+ public const int itemIconPadding = 2130903293;
+
+ // aapt resource value: 0x7F0300FE
+ public const int itemIconSize = 2130903294;
+
+ // aapt resource value: 0x7F0300FF
+ public const int itemIconTint = 2130903295;
+
+ // aapt resource value: 0x7F030100
+ public const int itemPadding = 2130903296;
+
+ // aapt resource value: 0x7F030101
+ public const int itemSpacing = 2130903297;
+
+ // aapt resource value: 0x7F030102
+ public const int itemTextAppearance = 2130903298;
+
+ // aapt resource value: 0x7F030103
+ public const int itemTextAppearanceActive = 2130903299;
+
+ // aapt resource value: 0x7F030104
+ public const int itemTextAppearanceInactive = 2130903300;
+
+ // aapt resource value: 0x7F030105
+ public const int itemTextColor = 2130903301;
+
+ // aapt resource value: 0x7F030106
+ public const int keylines = 2130903302;
+
+ // aapt resource value: 0x7F030107
+ public const int labelVisibilityMode = 2130903303;
+
+ // aapt resource value: 0x7F030108
+ public const int lastBaselineToBottomHeight = 2130903304;
+
+ // aapt resource value: 0x7F030109
+ public const int layout = 2130903305;
+
+ // aapt resource value: 0x7F03010A
+ public const int layoutManager = 2130903306;
+
+ // aapt resource value: 0x7F03010B
+ public const int layout_anchor = 2130903307;
+
+ // aapt resource value: 0x7F03010C
+ public const int layout_anchorGravity = 2130903308;
+
+ // aapt resource value: 0x7F03010D
+ public const int layout_behavior = 2130903309;
+
+ // aapt resource value: 0x7F03010E
+ public const int layout_collapseMode = 2130903310;
+
+ // aapt resource value: 0x7F03010F
+ public const int layout_collapseParallaxMultiplier = 2130903311;
+
+ // aapt resource value: 0x7F030110
+ public const int layout_dodgeInsetEdges = 2130903312;
+
+ // aapt resource value: 0x7F030111
+ public const int layout_insetEdge = 2130903313;
+
+ // aapt resource value: 0x7F030112
+ public const int layout_keyline = 2130903314;
+
+ // aapt resource value: 0x7F030113
+ public const int layout_scrollFlags = 2130903315;
+
+ // aapt resource value: 0x7F030114
+ public const int layout_scrollInterpolator = 2130903316;
+
+ // aapt resource value: 0x7F030115
+ public const int liftOnScroll = 2130903317;
+
+ // aapt resource value: 0x7F030116
+ public const int lineHeight = 2130903318;
+
+ // aapt resource value: 0x7F030117
+ public const int lineSpacing = 2130903319;
+
+ // aapt resource value: 0x7F030118
+ public const int listChoiceBackgroundIndicator = 2130903320;
+
+ // aapt resource value: 0x7F030119
+ public const int listDividerAlertDialog = 2130903321;
+
+ // aapt resource value: 0x7F03011A
+ public const int listItemLayout = 2130903322;
+
+ // aapt resource value: 0x7F03011B
+ public const int listLayout = 2130903323;
+
+ // aapt resource value: 0x7F03011C
+ public const int listMenuViewStyle = 2130903324;
+
+ // aapt resource value: 0x7F03011D
+ public const int listPopupWindowStyle = 2130903325;
+
+ // aapt resource value: 0x7F03011E
+ public const int listPreferredItemHeight = 2130903326;
+
+ // aapt resource value: 0x7F03011F
+ public const int listPreferredItemHeightLarge = 2130903327;
+
+ // aapt resource value: 0x7F030120
+ public const int listPreferredItemHeightSmall = 2130903328;
+
+ // aapt resource value: 0x7F030121
+ public const int listPreferredItemPaddingLeft = 2130903329;
+
+ // aapt resource value: 0x7F030122
+ public const int listPreferredItemPaddingRight = 2130903330;
+
+ // aapt resource value: 0x7F030123
+ public const int logo = 2130903331;
+
+ // aapt resource value: 0x7F030124
+ public const int logoDescription = 2130903332;
+
+ // aapt resource value: 0x7F030125
+ public const int materialButtonStyle = 2130903333;
+
+ // aapt resource value: 0x7F030126
+ public const int materialCardViewStyle = 2130903334;
+
+ // aapt resource value: 0x7F030127
+ public const int maxActionInlineWidth = 2130903335;
+
+ // aapt resource value: 0x7F030128
+ public const int maxButtonHeight = 2130903336;
+
+ // aapt resource value: 0x7F030129
+ public const int maxImageSize = 2130903337;
+
+ // aapt resource value: 0x7F03012A
+ public const int measureWithLargestChild = 2130903338;
+
+ // aapt resource value: 0x7F03012B
+ public const int menu = 2130903339;
+
+ // aapt resource value: 0x7F03012C
+ public const int multiChoiceItemLayout = 2130903340;
+
+ // aapt resource value: 0x7F03012D
+ public const int navigationContentDescription = 2130903341;
+
+ // aapt resource value: 0x7F03012E
+ public const int navigationIcon = 2130903342;
+
+ // aapt resource value: 0x7F03012F
+ public const int navigationMode = 2130903343;
+
+ // aapt resource value: 0x7F030130
+ public const int navigationViewStyle = 2130903344;
+
+ // aapt resource value: 0x7F030131
+ public const int numericModifiers = 2130903345;
+
+ // aapt resource value: 0x7F030132
+ public const int overlapAnchor = 2130903346;
+
+ // aapt resource value: 0x7F030133
+ public const int paddingBottomNoButtons = 2130903347;
+
+ // aapt resource value: 0x7F030134
+ public const int paddingEnd = 2130903348;
+
+ // aapt resource value: 0x7F030135
+ public const int paddingStart = 2130903349;
+
+ // aapt resource value: 0x7F030136
+ public const int paddingTopNoTitle = 2130903350;
+
+ // aapt resource value: 0x7F030137
+ public const int panelBackground = 2130903351;
+
+ // aapt resource value: 0x7F030138
+ public const int panelMenuListTheme = 2130903352;
+
+ // aapt resource value: 0x7F030139
+ public const int panelMenuListWidth = 2130903353;
+
+ // aapt resource value: 0x7F03013A
+ public const int passwordToggleContentDescription = 2130903354;
+
+ // aapt resource value: 0x7F03013B
+ public const int passwordToggleDrawable = 2130903355;
+
+ // aapt resource value: 0x7F03013C
+ public const int passwordToggleEnabled = 2130903356;
+
+ // aapt resource value: 0x7F03013D
+ public const int passwordToggleTint = 2130903357;
+
+ // aapt resource value: 0x7F03013E
+ public const int passwordToggleTintMode = 2130903358;
+
+ // aapt resource value: 0x7F03013F
+ public const int popupMenuStyle = 2130903359;
+
+ // aapt resource value: 0x7F030140
+ public const int popupTheme = 2130903360;
+
+ // aapt resource value: 0x7F030141
+ public const int popupWindowStyle = 2130903361;
+
+ // aapt resource value: 0x7F030142
+ public const int preserveIconSpacing = 2130903362;
+
+ // aapt resource value: 0x7F030143
+ public const int pressedTranslationZ = 2130903363;
+
+ // aapt resource value: 0x7F030144
+ public const int progressBarPadding = 2130903364;
+
+ // aapt resource value: 0x7F030145
+ public const int progressBarStyle = 2130903365;
+
+ // aapt resource value: 0x7F030146
+ public const int queryBackground = 2130903366;
+
+ // aapt resource value: 0x7F030147
+ public const int queryHint = 2130903367;
+
+ // aapt resource value: 0x7F030148
+ public const int radioButtonStyle = 2130903368;
+
+ // aapt resource value: 0x7F030149
+ public const int ratingBarStyle = 2130903369;
+
+ // aapt resource value: 0x7F03014A
+ public const int ratingBarStyleIndicator = 2130903370;
+
+ // aapt resource value: 0x7F03014B
+ public const int ratingBarStyleSmall = 2130903371;
+
+ // aapt resource value: 0x7F03014C
+ public const int reverseLayout = 2130903372;
+
+ // aapt resource value: 0x7F03014D
+ public const int rippleColor = 2130903373;
+
+ // aapt resource value: 0x7F03014E
+ public const int scrimAnimationDuration = 2130903374;
+
+ // aapt resource value: 0x7F03014F
+ public const int scrimBackground = 2130903375;
+
+ // aapt resource value: 0x7F030150
+ public const int scrimVisibleHeightTrigger = 2130903376;
+
+ // aapt resource value: 0x7F030151
+ public const int searchHintIcon = 2130903377;
+
+ // aapt resource value: 0x7F030152
+ public const int searchIcon = 2130903378;
+
+ // aapt resource value: 0x7F030153
+ public const int searchViewStyle = 2130903379;
+
+ // aapt resource value: 0x7F030154
+ public const int seekBarStyle = 2130903380;
+
+ // aapt resource value: 0x7F030155
+ public const int selectableItemBackground = 2130903381;
+
+ // aapt resource value: 0x7F030156
+ public const int selectableItemBackgroundBorderless = 2130903382;
+
+ // aapt resource value: 0x7F030157
+ public const int showAsAction = 2130903383;
+
+ // aapt resource value: 0x7F030158
+ public const int showDividers = 2130903384;
+
+ // aapt resource value: 0x7F030159
+ public const int showMotionSpec = 2130903385;
+
+ // aapt resource value: 0x7F03015A
+ public const int showText = 2130903386;
+
+ // aapt resource value: 0x7F03015B
+ public const int showTitle = 2130903387;
+
+ // aapt resource value: 0x7F03015C
+ public const int singleChoiceItemLayout = 2130903388;
+
+ // aapt resource value: 0x7F03015D
+ public const int singleLine = 2130903389;
+
+ // aapt resource value: 0x7F03015E
+ public const int singleSelection = 2130903390;
+
+ // aapt resource value: 0x7F03015F
+ public const int snackbarButtonStyle = 2130903391;
+
+ // aapt resource value: 0x7F030160
+ public const int snackbarStyle = 2130903392;
+
+ // aapt resource value: 0x7F030161
+ public const int spanCount = 2130903393;
+
+ // aapt resource value: 0x7F030162
+ public const int spinBars = 2130903394;
+
+ // aapt resource value: 0x7F030163
+ public const int spinnerDropDownItemStyle = 2130903395;
+
+ // aapt resource value: 0x7F030164
+ public const int spinnerStyle = 2130903396;
+
+ // aapt resource value: 0x7F030165
+ public const int splitTrack = 2130903397;
+
+ // aapt resource value: 0x7F030166
+ public const int srcCompat = 2130903398;
+
+ // aapt resource value: 0x7F030167
+ public const int stackFromEnd = 2130903399;
+
+ // aapt resource value: 0x7F030168
+ public const int state_above_anchor = 2130903400;
+
+ // aapt resource value: 0x7F030169
+ public const int state_collapsed = 2130903401;
+
+ // aapt resource value: 0x7F03016A
+ public const int state_collapsible = 2130903402;
+
+ // aapt resource value: 0x7F03016B
+ public const int state_liftable = 2130903403;
+
+ // aapt resource value: 0x7F03016C
+ public const int state_lifted = 2130903404;
+
+ // aapt resource value: 0x7F03016D
+ public const int statusBarBackground = 2130903405;
+
+ // aapt resource value: 0x7F03016E
+ public const int statusBarScrim = 2130903406;
+
+ // aapt resource value: 0x7F03016F
+ public const int strokeColor = 2130903407;
+
+ // aapt resource value: 0x7F030170
+ public const int strokeWidth = 2130903408;
+
+ // aapt resource value: 0x7F030171
+ public const int subMenuArrow = 2130903409;
+
+ // aapt resource value: 0x7F030172
+ public const int submitBackground = 2130903410;
+
+ // aapt resource value: 0x7F030173
+ public const int subtitle = 2130903411;
+
+ // aapt resource value: 0x7F030174
+ public const int subtitleTextAppearance = 2130903412;
+
+ // aapt resource value: 0x7F030175
+ public const int subtitleTextColor = 2130903413;
+
+ // aapt resource value: 0x7F030176
+ public const int subtitleTextStyle = 2130903414;
+
+ // aapt resource value: 0x7F030177
+ public const int suggestionRowLayout = 2130903415;
+
+ // aapt resource value: 0x7F030178
+ public const int switchMinWidth = 2130903416;
+
+ // aapt resource value: 0x7F030179
+ public const int switchPadding = 2130903417;
+
+ // aapt resource value: 0x7F03017A
+ public const int switchStyle = 2130903418;
+
+ // aapt resource value: 0x7F03017B
+ public const int switchTextAppearance = 2130903419;
+
+ // aapt resource value: 0x7F03017C
+ public const int tabBackground = 2130903420;
+
+ // aapt resource value: 0x7F03017D
+ public const int tabContentStart = 2130903421;
+
+ // aapt resource value: 0x7F03017E
+ public const int tabGravity = 2130903422;
+
+ // aapt resource value: 0x7F03017F
+ public const int tabIconTint = 2130903423;
+
+ // aapt resource value: 0x7F030180
+ public const int tabIconTintMode = 2130903424;
+
+ // aapt resource value: 0x7F030181
+ public const int tabIndicator = 2130903425;
+
+ // aapt resource value: 0x7F030182
+ public const int tabIndicatorAnimationDuration = 2130903426;
+
+ // aapt resource value: 0x7F030183
+ public const int tabIndicatorColor = 2130903427;
+
+ // aapt resource value: 0x7F030184
+ public const int tabIndicatorFullWidth = 2130903428;
+
+ // aapt resource value: 0x7F030185
+ public const int tabIndicatorGravity = 2130903429;
+
+ // aapt resource value: 0x7F030186
+ public const int tabIndicatorHeight = 2130903430;
+
+ // aapt resource value: 0x7F030187
+ public const int tabInlineLabel = 2130903431;
+
+ // aapt resource value: 0x7F030188
+ public const int tabMaxWidth = 2130903432;
+
+ // aapt resource value: 0x7F030189
+ public const int tabMinWidth = 2130903433;
+
+ // aapt resource value: 0x7F03018A
+ public const int tabMode = 2130903434;
+
+ // aapt resource value: 0x7F03018B
+ public const int tabPadding = 2130903435;
+
+ // aapt resource value: 0x7F03018C
+ public const int tabPaddingBottom = 2130903436;
+
+ // aapt resource value: 0x7F03018D
+ public const int tabPaddingEnd = 2130903437;
+
+ // aapt resource value: 0x7F03018E
+ public const int tabPaddingStart = 2130903438;
+
+ // aapt resource value: 0x7F03018F
+ public const int tabPaddingTop = 2130903439;
+
+ // aapt resource value: 0x7F030190
+ public const int tabRippleColor = 2130903440;
+
+ // aapt resource value: 0x7F030191
+ public const int tabSelectedTextColor = 2130903441;
+
+ // aapt resource value: 0x7F030192
+ public const int tabStyle = 2130903442;
+
+ // aapt resource value: 0x7F030193
+ public const int tabTextAppearance = 2130903443;
+
+ // aapt resource value: 0x7F030194
+ public const int tabTextColor = 2130903444;
+
+ // aapt resource value: 0x7F030195
+ public const int tabUnboundedRipple = 2130903445;
+
+ // aapt resource value: 0x7F030196
+ public const int textAllCaps = 2130903446;
+
+ // aapt resource value: 0x7F030197
+ public const int textAppearanceBody1 = 2130903447;
+
+ // aapt resource value: 0x7F030198
+ public const int textAppearanceBody2 = 2130903448;
+
+ // aapt resource value: 0x7F030199
+ public const int textAppearanceButton = 2130903449;
+
+ // aapt resource value: 0x7F03019A
+ public const int textAppearanceCaption = 2130903450;
+
+ // aapt resource value: 0x7F03019B
+ public const int textAppearanceHeadline1 = 2130903451;
+
+ // aapt resource value: 0x7F03019C
+ public const int textAppearanceHeadline2 = 2130903452;
+
+ // aapt resource value: 0x7F03019D
+ public const int textAppearanceHeadline3 = 2130903453;
+
+ // aapt resource value: 0x7F03019E
+ public const int textAppearanceHeadline4 = 2130903454;
+
+ // aapt resource value: 0x7F03019F
+ public const int textAppearanceHeadline5 = 2130903455;
+
+ // aapt resource value: 0x7F0301A0
+ public const int textAppearanceHeadline6 = 2130903456;
+
+ // aapt resource value: 0x7F0301A1
+ public const int textAppearanceLargePopupMenu = 2130903457;
+
+ // aapt resource value: 0x7F0301A2
+ public const int textAppearanceListItem = 2130903458;
+
+ // aapt resource value: 0x7F0301A3
+ public const int textAppearanceListItemSecondary = 2130903459;
+
+ // aapt resource value: 0x7F0301A4
+ public const int textAppearanceListItemSmall = 2130903460;
+
+ // aapt resource value: 0x7F0301A5
+ public const int textAppearanceOverline = 2130903461;
+
+ // aapt resource value: 0x7F0301A6
+ public const int textAppearancePopupMenuHeader = 2130903462;
+
+ // aapt resource value: 0x7F0301A7
+ public const int textAppearanceSearchResultSubtitle = 2130903463;
+
+ // aapt resource value: 0x7F0301A8
+ public const int textAppearanceSearchResultTitle = 2130903464;
+
+ // aapt resource value: 0x7F0301A9
+ public const int textAppearanceSmallPopupMenu = 2130903465;
+
+ // aapt resource value: 0x7F0301AA
+ public const int textAppearanceSubtitle1 = 2130903466;
+
+ // aapt resource value: 0x7F0301AB
+ public const int textAppearanceSubtitle2 = 2130903467;
+
+ // aapt resource value: 0x7F0301AC
+ public const int textColorAlertDialogListItem = 2130903468;
+
+ // aapt resource value: 0x7F0301AD
+ public const int textColorSearchUrl = 2130903469;
+
+ // aapt resource value: 0x7F0301AE
+ public const int textEndPadding = 2130903470;
+
+ // aapt resource value: 0x7F0301AF
+ public const int textInputStyle = 2130903471;
+
+ // aapt resource value: 0x7F0301B0
+ public const int textStartPadding = 2130903472;
+
+ // aapt resource value: 0x7F0301B1
+ public const int theme = 2130903473;
+
+ // aapt resource value: 0x7F0301B2
+ public const int thickness = 2130903474;
+
+ // aapt resource value: 0x7F0301B3
+ public const int thumbTextPadding = 2130903475;
+
+ // aapt resource value: 0x7F0301B4
+ public const int thumbTint = 2130903476;
+
+ // aapt resource value: 0x7F0301B5
+ public const int thumbTintMode = 2130903477;
+
+ // aapt resource value: 0x7F0301B6
+ public const int tickMark = 2130903478;
+
+ // aapt resource value: 0x7F0301B7
+ public const int tickMarkTint = 2130903479;
+
+ // aapt resource value: 0x7F0301B8
+ public const int tickMarkTintMode = 2130903480;
+
+ // aapt resource value: 0x7F0301B9
+ public const int tint = 2130903481;
+
+ // aapt resource value: 0x7F0301BA
+ public const int tintMode = 2130903482;
+
+ // aapt resource value: 0x7F0301BB
+ public const int title = 2130903483;
+
+ // aapt resource value: 0x7F0301BC
+ public const int titleEnabled = 2130903484;
+
+ // aapt resource value: 0x7F0301BD
+ public const int titleMargin = 2130903485;
+
+ // aapt resource value: 0x7F0301BE
+ public const int titleMarginBottom = 2130903486;
+
+ // aapt resource value: 0x7F0301BF
+ public const int titleMarginEnd = 2130903487;
+
+ // aapt resource value: 0x7F0301C2
+ public const int titleMargins = 2130903490;
+
+ // aapt resource value: 0x7F0301C0
+ public const int titleMarginStart = 2130903488;
+
+ // aapt resource value: 0x7F0301C1
+ public const int titleMarginTop = 2130903489;
+
+ // aapt resource value: 0x7F0301C3
+ public const int titleTextAppearance = 2130903491;
+
+ // aapt resource value: 0x7F0301C4
+ public const int titleTextColor = 2130903492;
+
+ // aapt resource value: 0x7F0301C5
+ public const int titleTextStyle = 2130903493;
+
+ // aapt resource value: 0x7F0301C6
+ public const int toolbarId = 2130903494;
+
+ // aapt resource value: 0x7F0301C7
+ public const int toolbarNavigationButtonStyle = 2130903495;
+
+ // aapt resource value: 0x7F0301C8
+ public const int toolbarStyle = 2130903496;
+
+ // aapt resource value: 0x7F0301C9
+ public const int tooltipForegroundColor = 2130903497;
+
+ // aapt resource value: 0x7F0301CA
+ public const int tooltipFrameBackground = 2130903498;
+
+ // aapt resource value: 0x7F0301CB
+ public const int tooltipText = 2130903499;
+
+ // aapt resource value: 0x7F0301CC
+ public const int track = 2130903500;
+
+ // aapt resource value: 0x7F0301CD
+ public const int trackTint = 2130903501;
+
+ // aapt resource value: 0x7F0301CE
+ public const int trackTintMode = 2130903502;
+
+ // aapt resource value: 0x7F0301CF
+ public const int ttcIndex = 2130903503;
+
+ // aapt resource value: 0x7F0301D0
+ public const int useCompatPadding = 2130903504;
+
+ // aapt resource value: 0x7F0301D1
+ public const int viewInflaterClass = 2130903505;
+
+ // aapt resource value: 0x7F0301D2
+ public const int voiceIcon = 2130903506;
+
+ // aapt resource value: 0x7F0301D3
+ public const int windowActionBar = 2130903507;
+
+ // aapt resource value: 0x7F0301D4
+ public const int windowActionBarOverlay = 2130903508;
+
+ // aapt resource value: 0x7F0301D5
+ public const int windowActionModeOverlay = 2130903509;
+
+ // aapt resource value: 0x7F0301D6
+ public const int windowFixedHeightMajor = 2130903510;
+
+ // aapt resource value: 0x7F0301D7
+ public const int windowFixedHeightMinor = 2130903511;
+
+ // aapt resource value: 0x7F0301D8
+ public const int windowFixedWidthMajor = 2130903512;
+
+ // aapt resource value: 0x7F0301D9
+ public const int windowFixedWidthMinor = 2130903513;
+
+ // aapt resource value: 0x7F0301DA
+ public const int windowMinWidthMajor = 2130903514;
+
+ // aapt resource value: 0x7F0301DB
+ public const int windowMinWidthMinor = 2130903515;
+
+ // aapt resource value: 0x7F0301DC
+ public const int windowNoTitle = 2130903516;
+
+ static Attribute()
+ {
+ global::Android.Runtime.ResourceIdManager.UpdateIdValues();
+ }
+
+ private Attribute()
+ {
+ }
+ }
+
+ public partial class Boolean
+ {
+
+ // aapt resource value: 0x7F040000
+ public const int abc_action_bar_embed_tabs = 2130968576;
+
+ // aapt resource value: 0x7F040001
+ public const int abc_allow_stacked_button_bar = 2130968577;
+
+ // aapt resource value: 0x7F040002
+ public const int abc_config_actionMenuItemAllCaps = 2130968578;
+
+ // aapt resource value: 0x7F040003
+ public const int mtrl_btn_textappearance_all_caps = 2130968579;
+
+ static Boolean()
+ {
+ global::Android.Runtime.ResourceIdManager.UpdateIdValues();
+ }
+
+ private Boolean()
+ {
+ }
+ }
+
+ public partial class Color
+ {
+
+ // aapt resource value: 0x7F050000
+ public const int abc_background_cache_hint_selector_material_dark = 2131034112;
+
+ // aapt resource value: 0x7F050001
+ public const int abc_background_cache_hint_selector_material_light = 2131034113;
+
+ // aapt resource value: 0x7F050002
+ public const int abc_btn_colored_borderless_text_material = 2131034114;
+
+ // aapt resource value: 0x7F050003
+ public const int abc_btn_colored_text_material = 2131034115;
+
+ // aapt resource value: 0x7F050004
+ public const int abc_color_highlight_material = 2131034116;
+
+ // aapt resource value: 0x7F050005
+ public const int abc_hint_foreground_material_dark = 2131034117;
+
+ // aapt resource value: 0x7F050006
+ public const int abc_hint_foreground_material_light = 2131034118;
+
+ // aapt resource value: 0x7F050007
+ public const int abc_input_method_navigation_guard = 2131034119;
+
+ // aapt resource value: 0x7F050008
+ public const int abc_primary_text_disable_only_material_dark = 2131034120;
+
+ // aapt resource value: 0x7F050009
+ public const int abc_primary_text_disable_only_material_light = 2131034121;
+
+ // aapt resource value: 0x7F05000A
+ public const int abc_primary_text_material_dark = 2131034122;
+
+ // aapt resource value: 0x7F05000B
+ public const int abc_primary_text_material_light = 2131034123;
+
+ // aapt resource value: 0x7F05000C
+ public const int abc_search_url_text = 2131034124;
+
+ // aapt resource value: 0x7F05000D
+ public const int abc_search_url_text_normal = 2131034125;
+
+ // aapt resource value: 0x7F05000E
+ public const int abc_search_url_text_pressed = 2131034126;
+
+ // aapt resource value: 0x7F05000F
+ public const int abc_search_url_text_selected = 2131034127;
+
+ // aapt resource value: 0x7F050010
+ public const int abc_secondary_text_material_dark = 2131034128;
+
+ // aapt resource value: 0x7F050011
+ public const int abc_secondary_text_material_light = 2131034129;
+
+ // aapt resource value: 0x7F050012
+ public const int abc_tint_btn_checkable = 2131034130;
+
+ // aapt resource value: 0x7F050013
+ public const int abc_tint_default = 2131034131;
+
+ // aapt resource value: 0x7F050014
+ public const int abc_tint_edittext = 2131034132;
+
+ // aapt resource value: 0x7F050015
+ public const int abc_tint_seek_thumb = 2131034133;
+
+ // aapt resource value: 0x7F050016
+ public const int abc_tint_spinner = 2131034134;
+
+ // aapt resource value: 0x7F050017
+ public const int abc_tint_switch_track = 2131034135;
+
+ // aapt resource value: 0x7F050018
+ public const int accent_material_dark = 2131034136;
+
+ // aapt resource value: 0x7F050019
+ public const int accent_material_light = 2131034137;
+
+ // aapt resource value: 0x7F05001A
+ public const int background_floating_material_dark = 2131034138;
+
+ // aapt resource value: 0x7F05001B
+ public const int background_floating_material_light = 2131034139;
+
+ // aapt resource value: 0x7F05001C
+ public const int background_material_dark = 2131034140;
+
+ // aapt resource value: 0x7F05001D
+ public const int background_material_light = 2131034141;
+
+ // aapt resource value: 0x7F05001E
+ public const int bright_foreground_disabled_material_dark = 2131034142;
+
+ // aapt resource value: 0x7F05001F
+ public const int bright_foreground_disabled_material_light = 2131034143;
+
+ // aapt resource value: 0x7F050020
+ public const int bright_foreground_inverse_material_dark = 2131034144;
+
+ // aapt resource value: 0x7F050021
+ public const int bright_foreground_inverse_material_light = 2131034145;
+
+ // aapt resource value: 0x7F050022
+ public const int bright_foreground_material_dark = 2131034146;
+
+ // aapt resource value: 0x7F050023
+ public const int bright_foreground_material_light = 2131034147;
+
+ // aapt resource value: 0x7F050024
+ public const int browser_actions_bg_grey = 2131034148;
+
+ // aapt resource value: 0x7F050025
+ public const int browser_actions_divider_color = 2131034149;
+
+ // aapt resource value: 0x7F050026
+ public const int browser_actions_text_color = 2131034150;
+
+ // aapt resource value: 0x7F050027
+ public const int browser_actions_title_color = 2131034151;
+
+ // aapt resource value: 0x7F050028
+ public const int button_material_dark = 2131034152;
+
+ // aapt resource value: 0x7F050029
+ public const int button_material_light = 2131034153;
+
+ // aapt resource value: 0x7F05002A
+ public const int cardview_dark_background = 2131034154;
+
+ // aapt resource value: 0x7F05002B
+ public const int cardview_light_background = 2131034155;
+
+ // aapt resource value: 0x7F05002C
+ public const int cardview_shadow_end_color = 2131034156;
+
+ // aapt resource value: 0x7F05002D
+ public const int cardview_shadow_start_color = 2131034157;
+
+ // aapt resource value: 0x7F05002E
+ public const int colorAccent = 2131034158;
+
+ // aapt resource value: 0x7F05002F
+ public const int colorPrimary = 2131034159;
+
+ // aapt resource value: 0x7F050030
+ public const int colorPrimaryDark = 2131034160;
+
+ // aapt resource value: 0x7F050031
+ public const int design_bottom_navigation_shadow_color = 2131034161;
+
+ // aapt resource value: 0x7F050032
+ public const int design_default_color_primary = 2131034162;
+
+ // aapt resource value: 0x7F050033
+ public const int design_default_color_primary_dark = 2131034163;
+
+ // aapt resource value: 0x7F050034
+ public const int design_error = 2131034164;
+
+ // aapt resource value: 0x7F050035
+ public const int design_fab_shadow_end_color = 2131034165;
+
+ // aapt resource value: 0x7F050036
+ public const int design_fab_shadow_mid_color = 2131034166;
+
+ // aapt resource value: 0x7F050037
+ public const int design_fab_shadow_start_color = 2131034167;
+
+ // aapt resource value: 0x7F050038
+ public const int design_fab_stroke_end_inner_color = 2131034168;
+
+ // aapt resource value: 0x7F050039
+ public const int design_fab_stroke_end_outer_color = 2131034169;
+
+ // aapt resource value: 0x7F05003A
+ public const int design_fab_stroke_top_inner_color = 2131034170;
+
+ // aapt resource value: 0x7F05003B
+ public const int design_fab_stroke_top_outer_color = 2131034171;
+
+ // aapt resource value: 0x7F05003C
+ public const int design_snackbar_background_color = 2131034172;
+
+ // aapt resource value: 0x7F05003D
+ public const int design_tint_password_toggle = 2131034173;
+
+ // aapt resource value: 0x7F05003E
+ public const int dim_foreground_disabled_material_dark = 2131034174;
+
+ // aapt resource value: 0x7F05003F
+ public const int dim_foreground_disabled_material_light = 2131034175;
+
+ // aapt resource value: 0x7F050040
+ public const int dim_foreground_material_dark = 2131034176;
+
+ // aapt resource value: 0x7F050041
+ public const int dim_foreground_material_light = 2131034177;
+
+ // aapt resource value: 0x7F050042
+ public const int error_color_material_dark = 2131034178;
+
+ // aapt resource value: 0x7F050043
+ public const int error_color_material_light = 2131034179;
+
+ // aapt resource value: 0x7F050044
+ public const int foreground_material_dark = 2131034180;
+
+ // aapt resource value: 0x7F050045
+ public const int foreground_material_light = 2131034181;
+
+ // aapt resource value: 0x7F050046
+ public const int highlighted_text_material_dark = 2131034182;
+
+ // aapt resource value: 0x7F050047
+ public const int highlighted_text_material_light = 2131034183;
+
+ // aapt resource value: 0x7F050048
+ public const int launcher_background = 2131034184;
+
+ // aapt resource value: 0x7F050049
+ public const int material_blue_grey_800 = 2131034185;
+
+ // aapt resource value: 0x7F05004A
+ public const int material_blue_grey_900 = 2131034186;
+
+ // aapt resource value: 0x7F05004B
+ public const int material_blue_grey_950 = 2131034187;
+
+ // aapt resource value: 0x7F05004C
+ public const int material_deep_teal_200 = 2131034188;
+
+ // aapt resource value: 0x7F05004D
+ public const int material_deep_teal_500 = 2131034189;
+
+ // aapt resource value: 0x7F05004E
+ public const int material_grey_100 = 2131034190;
+
+ // aapt resource value: 0x7F05004F
+ public const int material_grey_300 = 2131034191;
+
+ // aapt resource value: 0x7F050050
+ public const int material_grey_50 = 2131034192;
+
+ // aapt resource value: 0x7F050051
+ public const int material_grey_600 = 2131034193;
+
+ // aapt resource value: 0x7F050052
+ public const int material_grey_800 = 2131034194;
+
+ // aapt resource value: 0x7F050053
+ public const int material_grey_850 = 2131034195;
+
+ // aapt resource value: 0x7F050054
+ public const int material_grey_900 = 2131034196;
+
+ // aapt resource value: 0x7F050055
+ public const int mtrl_bottom_nav_colored_item_tint = 2131034197;
+
+ // aapt resource value: 0x7F050056
+ public const int mtrl_bottom_nav_item_tint = 2131034198;
+
+ // aapt resource value: 0x7F050057
+ public const int mtrl_btn_bg_color_disabled = 2131034199;
+
+ // aapt resource value: 0x7F050058
+ public const int mtrl_btn_bg_color_selector = 2131034200;
+
+ // aapt resource value: 0x7F050059
+ public const int mtrl_btn_ripple_color = 2131034201;
+
+ // aapt resource value: 0x7F05005A
+ public const int mtrl_btn_stroke_color_selector = 2131034202;
+
+ // aapt resource value: 0x7F05005B
+ public const int mtrl_btn_text_btn_ripple_color = 2131034203;
+
+ // aapt resource value: 0x7F05005C
+ public const int mtrl_btn_text_color_disabled = 2131034204;
+
+ // aapt resource value: 0x7F05005D
+ public const int mtrl_btn_text_color_selector = 2131034205;
+
+ // aapt resource value: 0x7F05005E
+ public const int mtrl_btn_transparent_bg_color = 2131034206;
+
+ // aapt resource value: 0x7F05005F
+ public const int mtrl_chip_background_color = 2131034207;
+
+ // aapt resource value: 0x7F050060
+ public const int mtrl_chip_close_icon_tint = 2131034208;
+
+ // aapt resource value: 0x7F050061
+ public const int mtrl_chip_ripple_color = 2131034209;
+
+ // aapt resource value: 0x7F050062
+ public const int mtrl_chip_text_color = 2131034210;
+
+ // aapt resource value: 0x7F050063
+ public const int mtrl_fab_ripple_color = 2131034211;
+
+ // aapt resource value: 0x7F050064
+ public const int mtrl_scrim_color = 2131034212;
+
+ // aapt resource value: 0x7F050065
+ public const int mtrl_tabs_colored_ripple_color = 2131034213;
+
+ // aapt resource value: 0x7F050066
+ public const int mtrl_tabs_icon_color_selector = 2131034214;
+
+ // aapt resource value: 0x7F050067
+ public const int mtrl_tabs_icon_color_selector_colored = 2131034215;
+
+ // aapt resource value: 0x7F050068
+ public const int mtrl_tabs_legacy_text_color_selector = 2131034216;
+
+ // aapt resource value: 0x7F050069
+ public const int mtrl_tabs_ripple_color = 2131034217;
+
+ // aapt resource value: 0x7F05006B
+ public const int mtrl_textinput_default_box_stroke_color = 2131034219;
+
+ // aapt resource value: 0x7F05006C
+ public const int mtrl_textinput_disabled_color = 2131034220;
+
+ // aapt resource value: 0x7F05006D
+ public const int mtrl_textinput_filled_box_default_background_color = 2131034221;
+
+ // aapt resource value: 0x7F05006E
+ public const int mtrl_textinput_hovered_box_stroke_color = 2131034222;
+
+ // aapt resource value: 0x7F05006A
+ public const int mtrl_text_btn_text_color_selector = 2131034218;
+
+ // aapt resource value: 0x7F05006F
+ public const int notification_action_color_filter = 2131034223;
+
+ // aapt resource value: 0x7F050070
+ public const int notification_icon_bg_color = 2131034224;
+
+ // aapt resource value: 0x7F050071
+ public const int notification_material_background_media_default_color = 2131034225;
+
+ // aapt resource value: 0x7F050072
+ public const int primary_dark_material_dark = 2131034226;
+
+ // aapt resource value: 0x7F050073
+ public const int primary_dark_material_light = 2131034227;
+
+ // aapt resource value: 0x7F050074
+ public const int primary_material_dark = 2131034228;
+
+ // aapt resource value: 0x7F050075
+ public const int primary_material_light = 2131034229;
+
+ // aapt resource value: 0x7F050076
+ public const int primary_text_default_material_dark = 2131034230;
+
+ // aapt resource value: 0x7F050077
+ public const int primary_text_default_material_light = 2131034231;
+
+ // aapt resource value: 0x7F050078
+ public const int primary_text_disabled_material_dark = 2131034232;
+
+ // aapt resource value: 0x7F050079
+ public const int primary_text_disabled_material_light = 2131034233;
+
+ // aapt resource value: 0x7F05007A
+ public const int ripple_material_dark = 2131034234;
+
+ // aapt resource value: 0x7F05007B
+ public const int ripple_material_light = 2131034235;
+
+ // aapt resource value: 0x7F05007C
+ public const int secondary_text_default_material_dark = 2131034236;
+
+ // aapt resource value: 0x7F05007D
+ public const int secondary_text_default_material_light = 2131034237;
+
+ // aapt resource value: 0x7F05007E
+ public const int secondary_text_disabled_material_dark = 2131034238;
+
+ // aapt resource value: 0x7F05007F
+ public const int secondary_text_disabled_material_light = 2131034239;
+
+ // aapt resource value: 0x7F050080
+ public const int switch_thumb_disabled_material_dark = 2131034240;
+
+ // aapt resource value: 0x7F050081
+ public const int switch_thumb_disabled_material_light = 2131034241;
+
+ // aapt resource value: 0x7F050082
+ public const int switch_thumb_material_dark = 2131034242;
+
+ // aapt resource value: 0x7F050083
+ public const int switch_thumb_material_light = 2131034243;
+
+ // aapt resource value: 0x7F050084
+ public const int switch_thumb_normal_material_dark = 2131034244;
+
+ // aapt resource value: 0x7F050085
+ public const int switch_thumb_normal_material_light = 2131034245;
+
+ // aapt resource value: 0x7F050086
+ public const int tooltip_background_dark = 2131034246;
+
+ // aapt resource value: 0x7F050087
+ public const int tooltip_background_light = 2131034247;
+
+ static Color()
+ {
+ global::Android.Runtime.ResourceIdManager.UpdateIdValues();
+ }
+
+ private Color()
+ {
+ }
+ }
+
+ public partial class Dimension
+ {
+
+ // aapt resource value: 0x7F060000
+ public const int abc_action_bar_content_inset_material = 2131099648;
+
+ // aapt resource value: 0x7F060001
+ public const int abc_action_bar_content_inset_with_nav = 2131099649;
+
+ // aapt resource value: 0x7F060002
+ public const int abc_action_bar_default_height_material = 2131099650;
+
+ // aapt resource value: 0x7F060003
+ public const int abc_action_bar_default_padding_end_material = 2131099651;
+
+ // aapt resource value: 0x7F060004
+ public const int abc_action_bar_default_padding_start_material = 2131099652;
+
+ // aapt resource value: 0x7F060005
+ public const int abc_action_bar_elevation_material = 2131099653;
+
+ // aapt resource value: 0x7F060006
+ public const int abc_action_bar_icon_vertical_padding_material = 2131099654;
+
+ // aapt resource value: 0x7F060007
+ public const int abc_action_bar_overflow_padding_end_material = 2131099655;
+
+ // aapt resource value: 0x7F060008
+ public const int abc_action_bar_overflow_padding_start_material = 2131099656;
+
+ // aapt resource value: 0x7F060009
+ public const int abc_action_bar_stacked_max_height = 2131099657;
+
+ // aapt resource value: 0x7F06000A
+ public const int abc_action_bar_stacked_tab_max_width = 2131099658;
+
+ // aapt resource value: 0x7F06000B
+ public const int abc_action_bar_subtitle_bottom_margin_material = 2131099659;
+
+ // aapt resource value: 0x7F06000C
+ public const int abc_action_bar_subtitle_top_margin_material = 2131099660;
+
+ // aapt resource value: 0x7F06000D
+ public const int abc_action_button_min_height_material = 2131099661;
+
+ // aapt resource value: 0x7F06000E
+ public const int abc_action_button_min_width_material = 2131099662;
+
+ // aapt resource value: 0x7F06000F
+ public const int abc_action_button_min_width_overflow_material = 2131099663;
+
+ // aapt resource value: 0x7F060010
+ public const int abc_alert_dialog_button_bar_height = 2131099664;
+
+ // aapt resource value: 0x7F060011
+ public const int abc_alert_dialog_button_dimen = 2131099665;
+
+ // aapt resource value: 0x7F060012
+ public const int abc_button_inset_horizontal_material = 2131099666;
+
+ // aapt resource value: 0x7F060013
+ public const int abc_button_inset_vertical_material = 2131099667;
+
+ // aapt resource value: 0x7F060014
+ public const int abc_button_padding_horizontal_material = 2131099668;
+
+ // aapt resource value: 0x7F060015
+ public const int abc_button_padding_vertical_material = 2131099669;
+
+ // aapt resource value: 0x7F060016
+ public const int abc_cascading_menus_min_smallest_width = 2131099670;
+
+ // aapt resource value: 0x7F060017
+ public const int abc_config_prefDialogWidth = 2131099671;
+
+ // aapt resource value: 0x7F060018
+ public const int abc_control_corner_material = 2131099672;
+
+ // aapt resource value: 0x7F060019
+ public const int abc_control_inset_material = 2131099673;
+
+ // aapt resource value: 0x7F06001A
+ public const int abc_control_padding_material = 2131099674;
+
+ // aapt resource value: 0x7F06001B
+ public const int abc_dialog_corner_radius_material = 2131099675;
+
+ // aapt resource value: 0x7F06001C
+ public const int abc_dialog_fixed_height_major = 2131099676;
+
+ // aapt resource value: 0x7F06001D
+ public const int abc_dialog_fixed_height_minor = 2131099677;
+
+ // aapt resource value: 0x7F06001E
+ public const int abc_dialog_fixed_width_major = 2131099678;
+
+ // aapt resource value: 0x7F06001F
+ public const int abc_dialog_fixed_width_minor = 2131099679;
+
+ // aapt resource value: 0x7F060020
+ public const int abc_dialog_list_padding_bottom_no_buttons = 2131099680;
+
+ // aapt resource value: 0x7F060021
+ public const int abc_dialog_list_padding_top_no_title = 2131099681;
+
+ // aapt resource value: 0x7F060022
+ public const int abc_dialog_min_width_major = 2131099682;
+
+ // aapt resource value: 0x7F060023
+ public const int abc_dialog_min_width_minor = 2131099683;
+
+ // aapt resource value: 0x7F060024
+ public const int abc_dialog_padding_material = 2131099684;
+
+ // aapt resource value: 0x7F060025
+ public const int abc_dialog_padding_top_material = 2131099685;
+
+ // aapt resource value: 0x7F060026
+ public const int abc_dialog_title_divider_material = 2131099686;
+
+ // aapt resource value: 0x7F060027
+ public const int abc_disabled_alpha_material_dark = 2131099687;
+
+ // aapt resource value: 0x7F060028
+ public const int abc_disabled_alpha_material_light = 2131099688;
+
+ // aapt resource value: 0x7F060029
+ public const int abc_dropdownitem_icon_width = 2131099689;
+
+ // aapt resource value: 0x7F06002A
+ public const int abc_dropdownitem_text_padding_left = 2131099690;
+
+ // aapt resource value: 0x7F06002B
+ public const int abc_dropdownitem_text_padding_right = 2131099691;
+
+ // aapt resource value: 0x7F06002C
+ public const int abc_edit_text_inset_bottom_material = 2131099692;
+
+ // aapt resource value: 0x7F06002D
+ public const int abc_edit_text_inset_horizontal_material = 2131099693;
+
+ // aapt resource value: 0x7F06002E
+ public const int abc_edit_text_inset_top_material = 2131099694;
+
+ // aapt resource value: 0x7F06002F
+ public const int abc_floating_window_z = 2131099695;
+
+ // aapt resource value: 0x7F060030
+ public const int abc_list_item_padding_horizontal_material = 2131099696;
+
+ // aapt resource value: 0x7F060031
+ public const int abc_panel_menu_list_width = 2131099697;
+
+ // aapt resource value: 0x7F060032
+ public const int abc_progress_bar_height_material = 2131099698;
+
+ // aapt resource value: 0x7F060033
+ public const int abc_search_view_preferred_height = 2131099699;
+
+ // aapt resource value: 0x7F060034
+ public const int abc_search_view_preferred_width = 2131099700;
+
+ // aapt resource value: 0x7F060035
+ public const int abc_seekbar_track_background_height_material = 2131099701;
+
+ // aapt resource value: 0x7F060036
+ public const int abc_seekbar_track_progress_height_material = 2131099702;
+
+ // aapt resource value: 0x7F060037
+ public const int abc_select_dialog_padding_start_material = 2131099703;
+
+ // aapt resource value: 0x7F060038
+ public const int abc_switch_padding = 2131099704;
+
+ // aapt resource value: 0x7F060039
+ public const int abc_text_size_body_1_material = 2131099705;
+
+ // aapt resource value: 0x7F06003A
+ public const int abc_text_size_body_2_material = 2131099706;
+
+ // aapt resource value: 0x7F06003B
+ public const int abc_text_size_button_material = 2131099707;
+
+ // aapt resource value: 0x7F06003C
+ public const int abc_text_size_caption_material = 2131099708;
+
+ // aapt resource value: 0x7F06003D
+ public const int abc_text_size_display_1_material = 2131099709;
+
+ // aapt resource value: 0x7F06003E
+ public const int abc_text_size_display_2_material = 2131099710;
+
+ // aapt resource value: 0x7F06003F
+ public const int abc_text_size_display_3_material = 2131099711;
+
+ // aapt resource value: 0x7F060040
+ public const int abc_text_size_display_4_material = 2131099712;
+
+ // aapt resource value: 0x7F060041
+ public const int abc_text_size_headline_material = 2131099713;
+
+ // aapt resource value: 0x7F060042
+ public const int abc_text_size_large_material = 2131099714;
+
+ // aapt resource value: 0x7F060043
+ public const int abc_text_size_medium_material = 2131099715;
+
+ // aapt resource value: 0x7F060044
+ public const int abc_text_size_menu_header_material = 2131099716;
+
+ // aapt resource value: 0x7F060045
+ public const int abc_text_size_menu_material = 2131099717;
+
+ // aapt resource value: 0x7F060046
+ public const int abc_text_size_small_material = 2131099718;
+
+ // aapt resource value: 0x7F060047
+ public const int abc_text_size_subhead_material = 2131099719;
+
+ // aapt resource value: 0x7F060048
+ public const int abc_text_size_subtitle_material_toolbar = 2131099720;
+
+ // aapt resource value: 0x7F060049
+ public const int abc_text_size_title_material = 2131099721;
+
+ // aapt resource value: 0x7F06004A
+ public const int abc_text_size_title_material_toolbar = 2131099722;
+
+ // aapt resource value: 0x7F06004B
+ public const int browser_actions_context_menu_max_width = 2131099723;
+
+ // aapt resource value: 0x7F06004C
+ public const int browser_actions_context_menu_min_padding = 2131099724;
+
+ // aapt resource value: 0x7F06004D
+ public const int cardview_compat_inset_shadow = 2131099725;
+
+ // aapt resource value: 0x7F06004E
+ public const int cardview_default_elevation = 2131099726;
+
+ // aapt resource value: 0x7F06004F
+ public const int cardview_default_radius = 2131099727;
+
+ // aapt resource value: 0x7F060050
+ public const int compat_button_inset_horizontal_material = 2131099728;
+
+ // aapt resource value: 0x7F060051
+ public const int compat_button_inset_vertical_material = 2131099729;
+
+ // aapt resource value: 0x7F060052
+ public const int compat_button_padding_horizontal_material = 2131099730;
+
+ // aapt resource value: 0x7F060053
+ public const int compat_button_padding_vertical_material = 2131099731;
+
+ // aapt resource value: 0x7F060054
+ public const int compat_control_corner_material = 2131099732;
+
+ // aapt resource value: 0x7F060055
+ public const int compat_notification_large_icon_max_height = 2131099733;
+
+ // aapt resource value: 0x7F060056
+ public const int compat_notification_large_icon_max_width = 2131099734;
+
+ // aapt resource value: 0x7F060057
+ public const int design_appbar_elevation = 2131099735;
+
+ // aapt resource value: 0x7F060058
+ public const int design_bottom_navigation_active_item_max_width = 2131099736;
+
+ // aapt resource value: 0x7F060059
+ public const int design_bottom_navigation_active_item_min_width = 2131099737;
+
+ // aapt resource value: 0x7F06005A
+ public const int design_bottom_navigation_active_text_size = 2131099738;
+
+ // aapt resource value: 0x7F06005B
+ public const int design_bottom_navigation_elevation = 2131099739;
+
+ // aapt resource value: 0x7F06005C
+ public const int design_bottom_navigation_height = 2131099740;
+
+ // aapt resource value: 0x7F06005D
+ public const int design_bottom_navigation_icon_size = 2131099741;
+
+ // aapt resource value: 0x7F06005E
+ public const int design_bottom_navigation_item_max_width = 2131099742;
+
+ // aapt resource value: 0x7F06005F
+ public const int design_bottom_navigation_item_min_width = 2131099743;
+
+ // aapt resource value: 0x7F060060
+ public const int design_bottom_navigation_margin = 2131099744;
+
+ // aapt resource value: 0x7F060061
+ public const int design_bottom_navigation_shadow_height = 2131099745;
+
+ // aapt resource value: 0x7F060062
+ public const int design_bottom_navigation_text_size = 2131099746;
+
+ // aapt resource value: 0x7F060063
+ public const int design_bottom_sheet_modal_elevation = 2131099747;
+
+ // aapt resource value: 0x7F060064
+ public const int design_bottom_sheet_peek_height_min = 2131099748;
+
+ // aapt resource value: 0x7F060065
+ public const int design_fab_border_width = 2131099749;
+
+ // aapt resource value: 0x7F060066
+ public const int design_fab_elevation = 2131099750;
+
+ // aapt resource value: 0x7F060067
+ public const int design_fab_image_size = 2131099751;
+
+ // aapt resource value: 0x7F060068
+ public const int design_fab_size_mini = 2131099752;
+
+ // aapt resource value: 0x7F060069
+ public const int design_fab_size_normal = 2131099753;
+
+ // aapt resource value: 0x7F06006A
+ public const int design_fab_translation_z_hovered_focused = 2131099754;
+
+ // aapt resource value: 0x7F06006B
+ public const int design_fab_translation_z_pressed = 2131099755;
+
+ // aapt resource value: 0x7F06006C
+ public const int design_navigation_elevation = 2131099756;
+
+ // aapt resource value: 0x7F06006D
+ public const int design_navigation_icon_padding = 2131099757;
+
+ // aapt resource value: 0x7F06006E
+ public const int design_navigation_icon_size = 2131099758;
+
+ // aapt resource value: 0x7F06006F
+ public const int design_navigation_item_horizontal_padding = 2131099759;
+
+ // aapt resource value: 0x7F060070
+ public const int design_navigation_item_icon_padding = 2131099760;
+
+ // aapt resource value: 0x7F060071
+ public const int design_navigation_max_width = 2131099761;
+
+ // aapt resource value: 0x7F060072
+ public const int design_navigation_padding_bottom = 2131099762;
+
+ // aapt resource value: 0x7F060073
+ public const int design_navigation_separator_vertical_padding = 2131099763;
+
+ // aapt resource value: 0x7F060074
+ public const int design_snackbar_action_inline_max_width = 2131099764;
+
+ // aapt resource value: 0x7F060075
+ public const int design_snackbar_background_corner_radius = 2131099765;
+
+ // aapt resource value: 0x7F060076
+ public const int design_snackbar_elevation = 2131099766;
+
+ // aapt resource value: 0x7F060077
+ public const int design_snackbar_extra_spacing_horizontal = 2131099767;
+
+ // aapt resource value: 0x7F060078
+ public const int design_snackbar_max_width = 2131099768;
+
+ // aapt resource value: 0x7F060079
+ public const int design_snackbar_min_width = 2131099769;
+
+ // aapt resource value: 0x7F06007A
+ public const int design_snackbar_padding_horizontal = 2131099770;
+
+ // aapt resource value: 0x7F06007B
+ public const int design_snackbar_padding_vertical = 2131099771;
+
+ // aapt resource value: 0x7F06007C
+ public const int design_snackbar_padding_vertical_2lines = 2131099772;
+
+ // aapt resource value: 0x7F06007D
+ public const int design_snackbar_text_size = 2131099773;
+
+ // aapt resource value: 0x7F06007E
+ public const int design_tab_max_width = 2131099774;
+
+ // aapt resource value: 0x7F06007F
+ public const int design_tab_scrollable_min_width = 2131099775;
+
+ // aapt resource value: 0x7F060080
+ public const int design_tab_text_size = 2131099776;
+
+ // aapt resource value: 0x7F060081
+ public const int design_tab_text_size_2line = 2131099777;
+
+ // aapt resource value: 0x7F060082
+ public const int design_textinput_caption_translate_y = 2131099778;
+
+ // aapt resource value: 0x7F060083
+ public const int disabled_alpha_material_dark = 2131099779;
+
+ // aapt resource value: 0x7F060084
+ public const int disabled_alpha_material_light = 2131099780;
+
+ // aapt resource value: 0x7F060085
+ public const int fastscroll_default_thickness = 2131099781;
+
+ // aapt resource value: 0x7F060086
+ public const int fastscroll_margin = 2131099782;
+
+ // aapt resource value: 0x7F060087
+ public const int fastscroll_minimum_range = 2131099783;
+
+ // aapt resource value: 0x7F060088
+ public const int highlight_alpha_material_colored = 2131099784;
+
+ // aapt resource value: 0x7F060089
+ public const int highlight_alpha_material_dark = 2131099785;
+
+ // aapt resource value: 0x7F06008A
+ public const int highlight_alpha_material_light = 2131099786;
+
+ // aapt resource value: 0x7F06008B
+ public const int hint_alpha_material_dark = 2131099787;
+
+ // aapt resource value: 0x7F06008C
+ public const int hint_alpha_material_light = 2131099788;
+
+ // aapt resource value: 0x7F06008D
+ public const int hint_pressed_alpha_material_dark = 2131099789;
+
+ // aapt resource value: 0x7F06008E
+ public const int hint_pressed_alpha_material_light = 2131099790;
+
+ // aapt resource value: 0x7F06008F
+ public const int item_touch_helper_max_drag_scroll_per_frame = 2131099791;
+
+ // aapt resource value: 0x7F060090
+ public const int item_touch_helper_swipe_escape_max_velocity = 2131099792;
+
+ // aapt resource value: 0x7F060091
+ public const int item_touch_helper_swipe_escape_velocity = 2131099793;
+
+ // aapt resource value: 0x7F060092
+ public const int mtrl_bottomappbar_fabOffsetEndMode = 2131099794;
+
+ // aapt resource value: 0x7F060093
+ public const int mtrl_bottomappbar_fab_cradle_margin = 2131099795;
+
+ // aapt resource value: 0x7F060094
+ public const int mtrl_bottomappbar_fab_cradle_rounded_corner_radius = 2131099796;
+
+ // aapt resource value: 0x7F060095
+ public const int mtrl_bottomappbar_fab_cradle_vertical_offset = 2131099797;
+
+ // aapt resource value: 0x7F060096
+ public const int mtrl_bottomappbar_height = 2131099798;
+
+ // aapt resource value: 0x7F060097
+ public const int mtrl_btn_corner_radius = 2131099799;
+
+ // aapt resource value: 0x7F060098
+ public const int mtrl_btn_dialog_btn_min_width = 2131099800;
+
+ // aapt resource value: 0x7F060099
+ public const int mtrl_btn_disabled_elevation = 2131099801;
+
+ // aapt resource value: 0x7F06009A
+ public const int mtrl_btn_disabled_z = 2131099802;
+
+ // aapt resource value: 0x7F06009B
+ public const int mtrl_btn_elevation = 2131099803;
+
+ // aapt resource value: 0x7F06009C
+ public const int mtrl_btn_focused_z = 2131099804;
+
+ // aapt resource value: 0x7F06009D
+ public const int mtrl_btn_hovered_z = 2131099805;
+
+ // aapt resource value: 0x7F06009E
+ public const int mtrl_btn_icon_btn_padding_left = 2131099806;
+
+ // aapt resource value: 0x7F06009F
+ public const int mtrl_btn_icon_padding = 2131099807;
+
+ // aapt resource value: 0x7F0600A0
+ public const int mtrl_btn_inset = 2131099808;
+
+ // aapt resource value: 0x7F0600A1
+ public const int mtrl_btn_letter_spacing = 2131099809;
+
+ // aapt resource value: 0x7F0600A2
+ public const int mtrl_btn_padding_bottom = 2131099810;
+
+ // aapt resource value: 0x7F0600A3
+ public const int mtrl_btn_padding_left = 2131099811;
+
+ // aapt resource value: 0x7F0600A4
+ public const int mtrl_btn_padding_right = 2131099812;
+
+ // aapt resource value: 0x7F0600A5
+ public const int mtrl_btn_padding_top = 2131099813;
+
+ // aapt resource value: 0x7F0600A6
+ public const int mtrl_btn_pressed_z = 2131099814;
+
+ // aapt resource value: 0x7F0600A7
+ public const int mtrl_btn_stroke_size = 2131099815;
+
+ // aapt resource value: 0x7F0600A8
+ public const int mtrl_btn_text_btn_icon_padding = 2131099816;
+
+ // aapt resource value: 0x7F0600A9
+ public const int mtrl_btn_text_btn_padding_left = 2131099817;
+
+ // aapt resource value: 0x7F0600AA
+ public const int mtrl_btn_text_btn_padding_right = 2131099818;
+
+ // aapt resource value: 0x7F0600AB
+ public const int mtrl_btn_text_size = 2131099819;
+
+ // aapt resource value: 0x7F0600AC
+ public const int mtrl_btn_z = 2131099820;
+
+ // aapt resource value: 0x7F0600AD
+ public const int mtrl_card_elevation = 2131099821;
+
+ // aapt resource value: 0x7F0600AE
+ public const int mtrl_card_spacing = 2131099822;
+
+ // aapt resource value: 0x7F0600AF
+ public const int mtrl_chip_pressed_translation_z = 2131099823;
+
+ // aapt resource value: 0x7F0600B0
+ public const int mtrl_chip_text_size = 2131099824;
+
+ // aapt resource value: 0x7F0600B1
+ public const int mtrl_fab_elevation = 2131099825;
+
+ // aapt resource value: 0x7F0600B2
+ public const int mtrl_fab_translation_z_hovered_focused = 2131099826;
+
+ // aapt resource value: 0x7F0600B3
+ public const int mtrl_fab_translation_z_pressed = 2131099827;
+
+ // aapt resource value: 0x7F0600B4
+ public const int mtrl_navigation_elevation = 2131099828;
+
+ // aapt resource value: 0x7F0600B5
+ public const int mtrl_navigation_item_horizontal_padding = 2131099829;
+
+ // aapt resource value: 0x7F0600B6
+ public const int mtrl_navigation_item_icon_padding = 2131099830;
+
+ // aapt resource value: 0x7F0600B7
+ public const int mtrl_snackbar_background_corner_radius = 2131099831;
+
+ // aapt resource value: 0x7F0600B8
+ public const int mtrl_snackbar_margin = 2131099832;
+
+ // aapt resource value: 0x7F0600B9
+ public const int mtrl_textinput_box_bottom_offset = 2131099833;
+
+ // aapt resource value: 0x7F0600BA
+ public const int mtrl_textinput_box_corner_radius_medium = 2131099834;
+
+ // aapt resource value: 0x7F0600BB
+ public const int mtrl_textinput_box_corner_radius_small = 2131099835;
+
+ // aapt resource value: 0x7F0600BC
+ public const int mtrl_textinput_box_label_cutout_padding = 2131099836;
+
+ // aapt resource value: 0x7F0600BD
+ public const int mtrl_textinput_box_padding_end = 2131099837;
+
+ // aapt resource value: 0x7F0600BE
+ public const int mtrl_textinput_box_stroke_width_default = 2131099838;
+
+ // aapt resource value: 0x7F0600BF
+ public const int mtrl_textinput_box_stroke_width_focused = 2131099839;
+
+ // aapt resource value: 0x7F0600C0
+ public const int mtrl_textinput_outline_box_expanded_padding = 2131099840;
+
+ // aapt resource value: 0x7F0600C1
+ public const int mtrl_toolbar_default_height = 2131099841;
+
+ // aapt resource value: 0x7F0600C2
+ public const int notification_action_icon_size = 2131099842;
+
+ // aapt resource value: 0x7F0600C3
+ public const int notification_action_text_size = 2131099843;
+
+ // aapt resource value: 0x7F0600C4
+ public const int notification_big_circle_margin = 2131099844;
+
+ // aapt resource value: 0x7F0600C5
+ public const int notification_content_margin_start = 2131099845;
+
+ // aapt resource value: 0x7F0600C6
+ public const int notification_large_icon_height = 2131099846;
+
+ // aapt resource value: 0x7F0600C7
+ public const int notification_large_icon_width = 2131099847;
+
+ // aapt resource value: 0x7F0600C8
+ public const int notification_main_column_padding_top = 2131099848;
+
+ // aapt resource value: 0x7F0600C9
+ public const int notification_media_narrow_margin = 2131099849;
+
+ // aapt resource value: 0x7F0600CA
+ public const int notification_right_icon_size = 2131099850;
+
+ // aapt resource value: 0x7F0600CB
+ public const int notification_right_side_padding_top = 2131099851;
+
+ // aapt resource value: 0x7F0600CC
+ public const int notification_small_icon_background_padding = 2131099852;
+
+ // aapt resource value: 0x7F0600CD
+ public const int notification_small_icon_size_as_large = 2131099853;
+
+ // aapt resource value: 0x7F0600CE
+ public const int notification_subtext_size = 2131099854;
+
+ // aapt resource value: 0x7F0600CF
+ public const int notification_top_pad = 2131099855;
+
+ // aapt resource value: 0x7F0600D0
+ public const int notification_top_pad_large_text = 2131099856;
+
+ // aapt resource value: 0x7F0600D1
+ public const int subtitle_corner_radius = 2131099857;
+
+ // aapt resource value: 0x7F0600D2
+ public const int subtitle_outline_width = 2131099858;
+
+ // aapt resource value: 0x7F0600D3
+ public const int subtitle_shadow_offset = 2131099859;
+
+ // aapt resource value: 0x7F0600D4
+ public const int subtitle_shadow_radius = 2131099860;
+
+ // aapt resource value: 0x7F0600D5
+ public const int tooltip_corner_radius = 2131099861;
+
+ // aapt resource value: 0x7F0600D6
+ public const int tooltip_horizontal_padding = 2131099862;
+
+ // aapt resource value: 0x7F0600D7
+ public const int tooltip_margin = 2131099863;
+
+ // aapt resource value: 0x7F0600D8
+ public const int tooltip_precise_anchor_extra_offset = 2131099864;
+
+ // aapt resource value: 0x7F0600D9
+ public const int tooltip_precise_anchor_threshold = 2131099865;
+
+ // aapt resource value: 0x7F0600DA
+ public const int tooltip_vertical_padding = 2131099866;
+
+ // aapt resource value: 0x7F0600DB
+ public const int tooltip_y_offset_non_touch = 2131099867;
+
+ // aapt resource value: 0x7F0600DC
+ public const int tooltip_y_offset_touch = 2131099868;
+
+ static Dimension()
+ {
+ global::Android.Runtime.ResourceIdManager.UpdateIdValues();
+ }
+
+ private Dimension()
+ {
+ }
+ }
+
+ public partial class Drawable
+ {
+
+ // aapt resource value: 0x7F070006
+ public const int abc_ab_share_pack_mtrl_alpha = 2131165190;
+
+ // aapt resource value: 0x7F070007
+ public const int abc_action_bar_item_background_material = 2131165191;
+
+ // aapt resource value: 0x7F070008
+ public const int abc_btn_borderless_material = 2131165192;
+
+ // aapt resource value: 0x7F070009
+ public const int abc_btn_check_material = 2131165193;
+
+ // aapt resource value: 0x7F07000A
+ public const int abc_btn_check_to_on_mtrl_000 = 2131165194;
+
+ // aapt resource value: 0x7F07000B
+ public const int abc_btn_check_to_on_mtrl_015 = 2131165195;
+
+ // aapt resource value: 0x7F07000C
+ public const int abc_btn_colored_material = 2131165196;
+
+ // aapt resource value: 0x7F07000D
+ public const int abc_btn_default_mtrl_shape = 2131165197;
+
+ // aapt resource value: 0x7F07000E
+ public const int abc_btn_radio_material = 2131165198;
+
+ // aapt resource value: 0x7F07000F
+ public const int abc_btn_radio_to_on_mtrl_000 = 2131165199;
+
+ // aapt resource value: 0x7F070010
+ public const int abc_btn_radio_to_on_mtrl_015 = 2131165200;
+
+ // aapt resource value: 0x7F070011
+ public const int abc_btn_switch_to_on_mtrl_00001 = 2131165201;
+
+ // aapt resource value: 0x7F070012
+ public const int abc_btn_switch_to_on_mtrl_00012 = 2131165202;
+
+ // aapt resource value: 0x7F070013
+ public const int abc_cab_background_internal_bg = 2131165203;
+
+ // aapt resource value: 0x7F070014
+ public const int abc_cab_background_top_material = 2131165204;
+
+ // aapt resource value: 0x7F070015
+ public const int abc_cab_background_top_mtrl_alpha = 2131165205;
+
+ // aapt resource value: 0x7F070016
+ public const int abc_control_background_material = 2131165206;
+
+ // aapt resource value: 0x7F070017
+ public const int abc_dialog_material_background = 2131165207;
+
+ // aapt resource value: 0x7F070018
+ public const int abc_edit_text_material = 2131165208;
+
+ // aapt resource value: 0x7F070019
+ public const int abc_ic_ab_back_material = 2131165209;
+
+ // aapt resource value: 0x7F07001A
+ public const int abc_ic_arrow_drop_right_black_24dp = 2131165210;
+
+ // aapt resource value: 0x7F07001B
+ public const int abc_ic_clear_material = 2131165211;
+
+ // aapt resource value: 0x7F07001C
+ public const int abc_ic_commit_search_api_mtrl_alpha = 2131165212;
+
+ // aapt resource value: 0x7F07001D
+ public const int abc_ic_go_search_api_material = 2131165213;
+
+ // aapt resource value: 0x7F07001E
+ public const int abc_ic_menu_copy_mtrl_am_alpha = 2131165214;
+
+ // aapt resource value: 0x7F07001F
+ public const int abc_ic_menu_cut_mtrl_alpha = 2131165215;
+
+ // aapt resource value: 0x7F070020
+ public const int abc_ic_menu_overflow_material = 2131165216;
+
+ // aapt resource value: 0x7F070021
+ public const int abc_ic_menu_paste_mtrl_am_alpha = 2131165217;
+
+ // aapt resource value: 0x7F070022
+ public const int abc_ic_menu_selectall_mtrl_alpha = 2131165218;
+
+ // aapt resource value: 0x7F070023
+ public const int abc_ic_menu_share_mtrl_alpha = 2131165219;
+
+ // aapt resource value: 0x7F070024
+ public const int abc_ic_search_api_material = 2131165220;
+
+ // aapt resource value: 0x7F070025
+ public const int abc_ic_star_black_16dp = 2131165221;
+
+ // aapt resource value: 0x7F070026
+ public const int abc_ic_star_black_36dp = 2131165222;
+
+ // aapt resource value: 0x7F070027
+ public const int abc_ic_star_black_48dp = 2131165223;
+
+ // aapt resource value: 0x7F070028
+ public const int abc_ic_star_half_black_16dp = 2131165224;
+
+ // aapt resource value: 0x7F070029
+ public const int abc_ic_star_half_black_36dp = 2131165225;
+
+ // aapt resource value: 0x7F07002A
+ public const int abc_ic_star_half_black_48dp = 2131165226;
+
+ // aapt resource value: 0x7F07002B
+ public const int abc_ic_voice_search_api_material = 2131165227;
+
+ // aapt resource value: 0x7F07002C
+ public const int abc_item_background_holo_dark = 2131165228;
+
+ // aapt resource value: 0x7F07002D
+ public const int abc_item_background_holo_light = 2131165229;
+
+ // aapt resource value: 0x7F07002E
+ public const int abc_list_divider_material = 2131165230;
+
+ // aapt resource value: 0x7F07002F
+ public const int abc_list_divider_mtrl_alpha = 2131165231;
+
+ // aapt resource value: 0x7F070030
+ public const int abc_list_focused_holo = 2131165232;
+
+ // aapt resource value: 0x7F070031
+ public const int abc_list_longpressed_holo = 2131165233;
+
+ // aapt resource value: 0x7F070032
+ public const int abc_list_pressed_holo_dark = 2131165234;
+
+ // aapt resource value: 0x7F070033
+ public const int abc_list_pressed_holo_light = 2131165235;
+
+ // aapt resource value: 0x7F070034
+ public const int abc_list_selector_background_transition_holo_dark = 2131165236;
+
+ // aapt resource value: 0x7F070035
+ public const int abc_list_selector_background_transition_holo_light = 2131165237;
+
+ // aapt resource value: 0x7F070036
+ public const int abc_list_selector_disabled_holo_dark = 2131165238;
+
+ // aapt resource value: 0x7F070037
+ public const int abc_list_selector_disabled_holo_light = 2131165239;
+
+ // aapt resource value: 0x7F070038
+ public const int abc_list_selector_holo_dark = 2131165240;
+
+ // aapt resource value: 0x7F070039
+ public const int abc_list_selector_holo_light = 2131165241;
+
+ // aapt resource value: 0x7F07003A
+ public const int abc_menu_hardkey_panel_mtrl_mult = 2131165242;
+
+ // aapt resource value: 0x7F07003B
+ public const int abc_popup_background_mtrl_mult = 2131165243;
+
+ // aapt resource value: 0x7F07003C
+ public const int abc_ratingbar_indicator_material = 2131165244;
+
+ // aapt resource value: 0x7F07003D
+ public const int abc_ratingbar_material = 2131165245;
+
+ // aapt resource value: 0x7F07003E
+ public const int abc_ratingbar_small_material = 2131165246;
+
+ // aapt resource value: 0x7F07003F
+ public const int abc_scrubber_control_off_mtrl_alpha = 2131165247;
+
+ // aapt resource value: 0x7F070040
+ public const int abc_scrubber_control_to_pressed_mtrl_000 = 2131165248;
+
+ // aapt resource value: 0x7F070041
+ public const int abc_scrubber_control_to_pressed_mtrl_005 = 2131165249;
+
+ // aapt resource value: 0x7F070042
+ public const int abc_scrubber_primary_mtrl_alpha = 2131165250;
+
+ // aapt resource value: 0x7F070043
+ public const int abc_scrubber_track_mtrl_alpha = 2131165251;
+
+ // aapt resource value: 0x7F070044
+ public const int abc_seekbar_thumb_material = 2131165252;
+
+ // aapt resource value: 0x7F070045
+ public const int abc_seekbar_tick_mark_material = 2131165253;
+
+ // aapt resource value: 0x7F070046
+ public const int abc_seekbar_track_material = 2131165254;
+
+ // aapt resource value: 0x7F070047
+ public const int abc_spinner_mtrl_am_alpha = 2131165255;
+
+ // aapt resource value: 0x7F070048
+ public const int abc_spinner_textfield_background_material = 2131165256;
+
+ // aapt resource value: 0x7F070049
+ public const int abc_switch_thumb_material = 2131165257;
+
+ // aapt resource value: 0x7F07004A
+ public const int abc_switch_track_mtrl_alpha = 2131165258;
+
+ // aapt resource value: 0x7F07004B
+ public const int abc_tab_indicator_material = 2131165259;
+
+ // aapt resource value: 0x7F07004C
+ public const int abc_tab_indicator_mtrl_alpha = 2131165260;
+
+ // aapt resource value: 0x7F070054
+ public const int abc_textfield_activated_mtrl_alpha = 2131165268;
+
+ // aapt resource value: 0x7F070055
+ public const int abc_textfield_default_mtrl_alpha = 2131165269;
+
+ // aapt resource value: 0x7F070056
+ public const int abc_textfield_search_activated_mtrl_alpha = 2131165270;
+
+ // aapt resource value: 0x7F070057
+ public const int abc_textfield_search_default_mtrl_alpha = 2131165271;
+
+ // aapt resource value: 0x7F070058
+ public const int abc_textfield_search_material = 2131165272;
+
+ // aapt resource value: 0x7F07004D
+ public const int abc_text_cursor_material = 2131165261;
+
+ // aapt resource value: 0x7F07004E
+ public const int abc_text_select_handle_left_mtrl_dark = 2131165262;
+
+ // aapt resource value: 0x7F07004F
+ public const int abc_text_select_handle_left_mtrl_light = 2131165263;
+
+ // aapt resource value: 0x7F070050
+ public const int abc_text_select_handle_middle_mtrl_dark = 2131165264;
+
+ // aapt resource value: 0x7F070051
+ public const int abc_text_select_handle_middle_mtrl_light = 2131165265;
+
+ // aapt resource value: 0x7F070052
+ public const int abc_text_select_handle_right_mtrl_dark = 2131165266;
+
+ // aapt resource value: 0x7F070053
+ public const int abc_text_select_handle_right_mtrl_light = 2131165267;
+
+ // aapt resource value: 0x7F070059
+ public const int abc_vector_test = 2131165273;
+
+ // aapt resource value: 0x7F07005A
+ public const int avd_hide_password = 2131165274;
+
+ // aapt resource value: 0x7F07005B
+ public const int avd_show_password = 2131165275;
+
+ // aapt resource value: 0x7F07005C
+ public const int design_bottom_navigation_item_background = 2131165276;
+
+ // aapt resource value: 0x7F07005D
+ public const int design_fab_background = 2131165277;
+
+ // aapt resource value: 0x7F07005E
+ public const int design_ic_visibility = 2131165278;
+
+ // aapt resource value: 0x7F07005F
+ public const int design_ic_visibility_off = 2131165279;
+
+ // aapt resource value: 0x7F070060
+ public const int design_password_eye = 2131165280;
+
+ // aapt resource value: 0x7F070061
+ public const int design_snackbar_background = 2131165281;
+
+ // aapt resource value: 0x7F070062
+ public const int ic_mtrl_chip_checked_black = 2131165282;
+
+ // aapt resource value: 0x7F070063
+ public const int ic_mtrl_chip_checked_circle = 2131165283;
+
+ // aapt resource value: 0x7F070064
+ public const int ic_mtrl_chip_close_circle = 2131165284;
+
+ // aapt resource value: 0x7F070065
+ public const int mtrl_snackbar_background = 2131165285;
+
+ // aapt resource value: 0x7F070066
+ public const int mtrl_tabs_default_indicator = 2131165286;
+
+ // aapt resource value: 0x7F070067
+ public const int navigation_empty_icon = 2131165287;
+
+ // aapt resource value: 0x7F070068
+ public const int notification_action_background = 2131165288;
+
+ // aapt resource value: 0x7F070069
+ public const int notification_bg = 2131165289;
+
+ // aapt resource value: 0x7F07006A
+ public const int notification_bg_low = 2131165290;
+
+ // aapt resource value: 0x7F07006B
+ public const int notification_bg_low_normal = 2131165291;
+
+ // aapt resource value: 0x7F07006C
+ public const int notification_bg_low_pressed = 2131165292;
+
+ // aapt resource value: 0x7F07006D
+ public const int notification_bg_normal = 2131165293;
+
+ // aapt resource value: 0x7F07006E
+ public const int notification_bg_normal_pressed = 2131165294;
+
+ // aapt resource value: 0x7F07006F
+ public const int notification_icon_background = 2131165295;
+
+ // aapt resource value: 0x7F070070
+ public const int notification_template_icon_bg = 2131165296;
+
+ // aapt resource value: 0x7F070071
+ public const int notification_template_icon_low_bg = 2131165297;
+
+ // aapt resource value: 0x7F070072
+ public const int notification_tile_bg = 2131165298;
+
+ // aapt resource value: 0x7F070073
+ public const int notify_panel_notification_icon_bg = 2131165299;
+
+ // aapt resource value: 0x7F070074
+ public const int tooltip_frame_dark = 2131165300;
+
+ // aapt resource value: 0x7F070075
+ public const int tooltip_frame_light = 2131165301;
+
+ static Drawable()
+ {
+ global::Android.Runtime.ResourceIdManager.UpdateIdValues();
+ }
+
+ private Drawable()
+ {
+ }
+ }
+
+ public partial class Id
+ {
+
+ // aapt resource value: 0x7F080006
+ public const int action0 = 2131230726;
+
+ // aapt resource value: 0x7F080018
+ public const int actions = 2131230744;
+
+ // aapt resource value: 0x7F080007
+ public const int action_bar = 2131230727;
+
+ // aapt resource value: 0x7F080008
+ public const int action_bar_activity_content = 2131230728;
+
+ // aapt resource value: 0x7F080009
+ public const int action_bar_container = 2131230729;
+
+ // aapt resource value: 0x7F08000A
+ public const int action_bar_root = 2131230730;
+
+ // aapt resource value: 0x7F08000B
+ public const int action_bar_spinner = 2131230731;
+
+ // aapt resource value: 0x7F08000C
+ public const int action_bar_subtitle = 2131230732;
+
+ // aapt resource value: 0x7F08000D
+ public const int action_bar_title = 2131230733;
+
+ // aapt resource value: 0x7F08000E
+ public const int action_container = 2131230734;
+
+ // aapt resource value: 0x7F08000F
+ public const int action_context_bar = 2131230735;
+
+ // aapt resource value: 0x7F080010
+ public const int action_divider = 2131230736;
+
+ // aapt resource value: 0x7F080011
+ public const int action_image = 2131230737;
+
+ // aapt resource value: 0x7F080012
+ public const int action_menu_divider = 2131230738;
+
+ // aapt resource value: 0x7F080013
+ public const int action_menu_presenter = 2131230739;
+
+ // aapt resource value: 0x7F080014
+ public const int action_mode_bar = 2131230740;
+
+ // aapt resource value: 0x7F080015
+ public const int action_mode_bar_stub = 2131230741;
+
+ // aapt resource value: 0x7F080016
+ public const int action_mode_close_button = 2131230742;
+
+ // aapt resource value: 0x7F080017
+ public const int action_text = 2131230743;
+
+ // aapt resource value: 0x7F080019
+ public const int activity_chooser_view_content = 2131230745;
+
+ // aapt resource value: 0x7F08001A
+ public const int add = 2131230746;
+
+ // aapt resource value: 0x7F08001B
+ public const int alertTitle = 2131230747;
+
+ // aapt resource value: 0x7F08001C
+ public const int all = 2131230748;
+
+ // aapt resource value: 0x7F080000
+ public const int ALT = 2131230720;
+
+ // aapt resource value: 0x7F08001D
+ public const int always = 2131230749;
+
+ // aapt resource value: 0x7F08001E
+ public const int async = 2131230750;
+
+ // aapt resource value: 0x7F08001F
+ public const int auto = 2131230751;
+
+ // aapt resource value: 0x7F080020
+ public const int beginning = 2131230752;
+
+ // aapt resource value: 0x7F080021
+ public const int blocking = 2131230753;
+
+ // aapt resource value: 0x7F080022
+ public const int bottom = 2131230754;
+
+ // aapt resource value: 0x7F080023
+ public const int bottomtab_navarea = 2131230755;
+
+ // aapt resource value: 0x7F080024
+ public const int bottomtab_tabbar = 2131230756;
+
+ // aapt resource value: 0x7F080025
+ public const int browser_actions_header_text = 2131230757;
+
+ // aapt resource value: 0x7F080028
+ public const int browser_actions_menu_items = 2131230760;
+
+ // aapt resource value: 0x7F080026
+ public const int browser_actions_menu_item_icon = 2131230758;
+
+ // aapt resource value: 0x7F080027
+ public const int browser_actions_menu_item_text = 2131230759;
+
+ // aapt resource value: 0x7F080029
+ public const int browser_actions_menu_view = 2131230761;
+
+ // aapt resource value: 0x7F08002A
+ public const int buttonPanel = 2131230762;
+
+ // aapt resource value: 0x7F08002B
+ public const int cancel_action = 2131230763;
+
+ // aapt resource value: 0x7F08002C
+ public const int center = 2131230764;
+
+ // aapt resource value: 0x7F08002D
+ public const int center_horizontal = 2131230765;
+
+ // aapt resource value: 0x7F08002E
+ public const int center_vertical = 2131230766;
+
+ // aapt resource value: 0x7F08002F
+ public const int checkbox = 2131230767;
+
+ // aapt resource value: 0x7F080030
+ public const int chronometer = 2131230768;
+
+ // aapt resource value: 0x7F080031
+ public const int clip_horizontal = 2131230769;
+
+ // aapt resource value: 0x7F080032
+ public const int clip_vertical = 2131230770;
+
+ // aapt resource value: 0x7F080033
+ public const int collapseActionView = 2131230771;
+
+ // aapt resource value: 0x7F080034
+ public const int container = 2131230772;
+
+ // aapt resource value: 0x7F080035
+ public const int content = 2131230773;
+
+ // aapt resource value: 0x7F080036
+ public const int contentPanel = 2131230774;
+
+ // aapt resource value: 0x7F080037
+ public const int coordinator = 2131230775;
+
+ // aapt resource value: 0x7F080001
+ public const int CTRL = 2131230721;
+
+ // aapt resource value: 0x7F080038
+ public const int custom = 2131230776;
+
+ // aapt resource value: 0x7F080039
+ public const int customPanel = 2131230777;
+
+ // aapt resource value: 0x7F08003A
+ public const int decor_content_parent = 2131230778;
+
+ // aapt resource value: 0x7F08003B
+ public const int default_activity_button = 2131230779;
+
+ // aapt resource value: 0x7F08003C
+ public const int design_bottom_sheet = 2131230780;
+
+ // aapt resource value: 0x7F08003D
+ public const int design_menu_item_action_area = 2131230781;
+
+ // aapt resource value: 0x7F08003E
+ public const int design_menu_item_action_area_stub = 2131230782;
+
+ // aapt resource value: 0x7F08003F
+ public const int design_menu_item_text = 2131230783;
+
+ // aapt resource value: 0x7F080040
+ public const int design_navigation_view = 2131230784;
+
+ // aapt resource value: 0x7F080041
+ public const int disableHome = 2131230785;
+
+ // aapt resource value: 0x7F080042
+ public const int edit_query = 2131230786;
+
+ // aapt resource value: 0x7F080043
+ public const int end = 2131230787;
+
+ // aapt resource value: 0x7F080044
+ public const int end_padder = 2131230788;
+
+ // aapt resource value: 0x7F080045
+ public const int enterAlways = 2131230789;
+
+ // aapt resource value: 0x7F080046
+ public const int enterAlwaysCollapsed = 2131230790;
+
+ // aapt resource value: 0x7F080047
+ public const int exitUntilCollapsed = 2131230791;
+
+ // aapt resource value: 0x7F080049
+ public const int expanded_menu = 2131230793;
+
+ // aapt resource value: 0x7F080048
+ public const int expand_activities_button = 2131230792;
+
+ // aapt resource value: 0x7F08004A
+ public const int fill = 2131230794;
+
+ // aapt resource value: 0x7F08004D
+ public const int filled = 2131230797;
+
+ // aapt resource value: 0x7F08004B
+ public const int fill_horizontal = 2131230795;
+
+ // aapt resource value: 0x7F08004C
+ public const int fill_vertical = 2131230796;
+
+ // aapt resource value: 0x7F08004E
+ public const int @fixed = 2131230798;
+
+ // aapt resource value: 0x7F08004F
+ public const int flyoutcontent_appbar = 2131230799;
+
+ // aapt resource value: 0x7F080050
+ public const int flyoutcontent_recycler = 2131230800;
+
+ // aapt resource value: 0x7F080051
+ public const int forever = 2131230801;
+
+ // aapt resource value: 0x7F080002
+ public const int FUNCTION = 2131230722;
+
+ // aapt resource value: 0x7F080052
+ public const int ghost_view = 2131230802;
+
+ // aapt resource value: 0x7F080053
+ public const int group_divider = 2131230803;
+
+ // aapt resource value: 0x7F080054
+ public const int home = 2131230804;
+
+ // aapt resource value: 0x7F080055
+ public const int homeAsUp = 2131230805;
+
+ // aapt resource value: 0x7F080056
+ public const int icon = 2131230806;
+
+ // aapt resource value: 0x7F080057
+ public const int icon_group = 2131230807;
+
+ // aapt resource value: 0x7F080058
+ public const int ifRoom = 2131230808;
+
+ // aapt resource value: 0x7F080059
+ public const int image = 2131230809;
+
+ // aapt resource value: 0x7F08005A
+ public const int info = 2131230810;
+
+ // aapt resource value: 0x7F08005B
+ public const int italic = 2131230811;
+
+ // aapt resource value: 0x7F08005C
+ public const int item_touch_helper_previous_elevation = 2131230812;
+
+ // aapt resource value: 0x7F08005D
+ public const int labeled = 2131230813;
+
+ // aapt resource value: 0x7F08005E
+ public const int largeLabel = 2131230814;
+
+ // aapt resource value: 0x7F08005F
+ public const int left = 2131230815;
+
+ // aapt resource value: 0x7F080060
+ public const int line1 = 2131230816;
+
+ // aapt resource value: 0x7F080061
+ public const int line3 = 2131230817;
+
+ // aapt resource value: 0x7F080062
+ public const int listMode = 2131230818;
+
+ // aapt resource value: 0x7F080063
+ public const int list_item = 2131230819;
+
+ // aapt resource value: 0x7F080064
+ public const int main_appbar = 2131230820;
+
+ // aapt resource value: 0x7F080065
+ public const int main_tablayout = 2131230821;
+
+ // aapt resource value: 0x7F080066
+ public const int main_toolbar = 2131230822;
+
+ // aapt resource value: 0x7F080067
+ public const int main_viewpager = 2131230823;
+
+ // aapt resource value: 0x7F080068
+ public const int masked = 2131230824;
+
+ // aapt resource value: 0x7F080069
+ public const int media_actions = 2131230825;
+
+ // aapt resource value: 0x7F08006A
+ public const int message = 2131230826;
+
+ // aapt resource value: 0x7F080003
+ public const int META = 2131230723;
+
+ // aapt resource value: 0x7F08006B
+ public const int middle = 2131230827;
+
+ // aapt resource value: 0x7F08006C
+ public const int mini = 2131230828;
+
+ // aapt resource value: 0x7F08006D
+ public const int mtrl_child_content_container = 2131230829;
+
+ // aapt resource value: 0x7F08006E
+ public const int mtrl_internal_children_alpha_tag = 2131230830;
+
+ // aapt resource value: 0x7F08006F
+ public const int multiply = 2131230831;
+
+ // aapt resource value: 0x7F080070
+ public const int navigation_header_container = 2131230832;
+
+ // aapt resource value: 0x7F080071
+ public const int never = 2131230833;
+
+ // aapt resource value: 0x7F080072
+ public const int none = 2131230834;
+
+ // aapt resource value: 0x7F080073
+ public const int normal = 2131230835;
+
+ // aapt resource value: 0x7F080074
+ public const int notification_background = 2131230836;
+
+ // aapt resource value: 0x7F080075
+ public const int notification_main_column = 2131230837;
+
+ // aapt resource value: 0x7F080076
+ public const int notification_main_column_container = 2131230838;
+
+ // aapt resource value: 0x7F080077
+ public const int outline = 2131230839;
+
+ // aapt resource value: 0x7F080078
+ public const int parallax = 2131230840;
+
+ // aapt resource value: 0x7F080079
+ public const int parentPanel = 2131230841;
+
+ // aapt resource value: 0x7F08007A
+ public const int parent_matrix = 2131230842;
+
+ // aapt resource value: 0x7F08007B
+ public const int pin = 2131230843;
+
+ // aapt resource value: 0x7F08007C
+ public const int progress_circular = 2131230844;
+
+ // aapt resource value: 0x7F08007D
+ public const int progress_horizontal = 2131230845;
+
+ // aapt resource value: 0x7F08007E
+ public const int radio = 2131230846;
+
+ // aapt resource value: 0x7F08007F
+ public const int right = 2131230847;
+
+ // aapt resource value: 0x7F080080
+ public const int right_icon = 2131230848;
+
+ // aapt resource value: 0x7F080081
+ public const int right_side = 2131230849;
+
+ // aapt resource value: 0x7F080082
+ public const int save_image_matrix = 2131230850;
+
+ // aapt resource value: 0x7F080083
+ public const int save_non_transition_alpha = 2131230851;
+
+ // aapt resource value: 0x7F080084
+ public const int save_scale_type = 2131230852;
+
+ // aapt resource value: 0x7F080085
+ public const int screen = 2131230853;
+
+ // aapt resource value: 0x7F080086
+ public const int scroll = 2131230854;
+
+ // aapt resource value: 0x7F08008A
+ public const int scrollable = 2131230858;
+
+ // aapt resource value: 0x7F080087
+ public const int scrollIndicatorDown = 2131230855;
+
+ // aapt resource value: 0x7F080088
+ public const int scrollIndicatorUp = 2131230856;
+
+ // aapt resource value: 0x7F080089
+ public const int scrollView = 2131230857;
+
+ // aapt resource value: 0x7F08008B
+ public const int search_badge = 2131230859;
+
+ // aapt resource value: 0x7F08008C
+ public const int search_bar = 2131230860;
+
+ // aapt resource value: 0x7F08008D
+ public const int search_button = 2131230861;
+
+ // aapt resource value: 0x7F08008E
+ public const int search_close_btn = 2131230862;
+
+ // aapt resource value: 0x7F08008F
+ public const int search_edit_frame = 2131230863;
+
+ // aapt resource value: 0x7F080090
+ public const int search_go_btn = 2131230864;
+
+ // aapt resource value: 0x7F080091
+ public const int search_mag_icon = 2131230865;
+
+ // aapt resource value: 0x7F080092
+ public const int search_plate = 2131230866;
+
+ // aapt resource value: 0x7F080093
+ public const int search_src_text = 2131230867;
+
+ // aapt resource value: 0x7F080094
+ public const int search_voice_btn = 2131230868;
+
+ // aapt resource value: 0x7F080096
+ public const int selected = 2131230870;
+
+ // aapt resource value: 0x7F080095
+ public const int select_dialog_listview = 2131230869;
+
+ // aapt resource value: 0x7F080097
+ public const int shellcontent_appbar = 2131230871;
+
+ // aapt resource value: 0x7F080098
+ public const int shellcontent_toolbar = 2131230872;
+
+ // aapt resource value: 0x7F080004
+ public const int SHIFT = 2131230724;
+
+ // aapt resource value: 0x7F080099
+ public const int shortcut = 2131230873;
+
+ // aapt resource value: 0x7F08009A
+ public const int showCustom = 2131230874;
+
+ // aapt resource value: 0x7F08009B
+ public const int showHome = 2131230875;
+
+ // aapt resource value: 0x7F08009C
+ public const int showTitle = 2131230876;
+
+ // aapt resource value: 0x7F08009D
+ public const int sliding_tabs = 2131230877;
+
+ // aapt resource value: 0x7F08009E
+ public const int smallLabel = 2131230878;
+
+ // aapt resource value: 0x7F08009F
+ public const int snackbar_action = 2131230879;
+
+ // aapt resource value: 0x7F0800A0
+ public const int snackbar_text = 2131230880;
+
+ // aapt resource value: 0x7F0800A1
+ public const int snap = 2131230881;
+
+ // aapt resource value: 0x7F0800A2
+ public const int snapMargins = 2131230882;
+
+ // aapt resource value: 0x7F0800A3
+ public const int spacer = 2131230883;
+
+ // aapt resource value: 0x7F0800A4
+ public const int split_action_bar = 2131230884;
+
+ // aapt resource value: 0x7F0800A5
+ public const int src_atop = 2131230885;
+
+ // aapt resource value: 0x7F0800A6
+ public const int src_in = 2131230886;
+
+ // aapt resource value: 0x7F0800A7
+ public const int src_over = 2131230887;
+
+ // aapt resource value: 0x7F0800A8
+ public const int start = 2131230888;
+
+ // aapt resource value: 0x7F0800A9
+ public const int status_bar_latest_event_content = 2131230889;
+
+ // aapt resource value: 0x7F0800AA
+ public const int stretch = 2131230890;
+
+ // aapt resource value: 0x7F0800AB
+ public const int submenuarrow = 2131230891;
+
+ // aapt resource value: 0x7F0800AC
+ public const int submit_area = 2131230892;
+
+ // aapt resource value: 0x7F080005
+ public const int SYM = 2131230725;
+
+ // aapt resource value: 0x7F0800AD
+ public const int tabMode = 2131230893;
+
+ // aapt resource value: 0x7F0800AE
+ public const int tag_transition_group = 2131230894;
+
+ // aapt resource value: 0x7F0800AF
+ public const int tag_unhandled_key_event_manager = 2131230895;
+
+ // aapt resource value: 0x7F0800B0
+ public const int tag_unhandled_key_listeners = 2131230896;
+
+ // aapt resource value: 0x7F0800B1
+ public const int text = 2131230897;
+
+ // aapt resource value: 0x7F0800B2
+ public const int text2 = 2131230898;
+
+ // aapt resource value: 0x7F0800B7
+ public const int textinput_counter = 2131230903;
+
+ // aapt resource value: 0x7F0800B8
+ public const int textinput_error = 2131230904;
+
+ // aapt resource value: 0x7F0800B9
+ public const int textinput_helper_text = 2131230905;
+
+ // aapt resource value: 0x7F0800B3
+ public const int textSpacerNoButtons = 2131230899;
+
+ // aapt resource value: 0x7F0800B4
+ public const int textSpacerNoTitle = 2131230900;
+
+ // aapt resource value: 0x7F0800B5
+ public const int textStart = 2131230901;
+
+ // aapt resource value: 0x7F0800B6
+ public const int text_input_password_toggle = 2131230902;
+
+ // aapt resource value: 0x7F0800BA
+ public const int time = 2131230906;
+
+ // aapt resource value: 0x7F0800BB
+ public const int title = 2131230907;
+
+ // aapt resource value: 0x7F0800BC
+ public const int titleDividerNoCustom = 2131230908;
+
+ // aapt resource value: 0x7F0800BD
+ public const int title_template = 2131230909;
+
+ // aapt resource value: 0x7F0800BE
+ public const int toolbar = 2131230910;
+
+ // aapt resource value: 0x7F0800BF
+ public const int top = 2131230911;
+
+ // aapt resource value: 0x7F0800C0
+ public const int topPanel = 2131230912;
+
+ // aapt resource value: 0x7F0800C1
+ public const int touch_outside = 2131230913;
+
+ // aapt resource value: 0x7F0800C2
+ public const int transition_current_scene = 2131230914;
+
+ // aapt resource value: 0x7F0800C3
+ public const int transition_layout_save = 2131230915;
+
+ // aapt resource value: 0x7F0800C4
+ public const int transition_position = 2131230916;
+
+ // aapt resource value: 0x7F0800C5
+ public const int transition_scene_layoutid_cache = 2131230917;
+
+ // aapt resource value: 0x7F0800C6
+ public const int transition_transform = 2131230918;
+
+ // aapt resource value: 0x7F0800C7
+ public const int uniform = 2131230919;
+
+ // aapt resource value: 0x7F0800C8
+ public const int unlabeled = 2131230920;
+
+ // aapt resource value: 0x7F0800C9
+ public const int up = 2131230921;
+
+ // aapt resource value: 0x7F0800CA
+ public const int useLogo = 2131230922;
+
+ // aapt resource value: 0x7F0800CB
+ public const int view_offset_helper = 2131230923;
+
+ // aapt resource value: 0x7F0800CC
+ public const int visible = 2131230924;
+
+ // aapt resource value: 0x7F0800CD
+ public const int withText = 2131230925;
+
+ // aapt resource value: 0x7F0800CE
+ public const int wrap_content = 2131230926;
+
+ static Id()
+ {
+ global::Android.Runtime.ResourceIdManager.UpdateIdValues();
+ }
+
+ private Id()
+ {
+ }
+ }
+
+ public partial class Integer
+ {
+
+ // aapt resource value: 0x7F090000
+ public const int abc_config_activityDefaultDur = 2131296256;
+
+ // aapt resource value: 0x7F090001
+ public const int abc_config_activityShortDur = 2131296257;
+
+ // aapt resource value: 0x7F090002
+ public const int app_bar_elevation_anim_duration = 2131296258;
+
+ // aapt resource value: 0x7F090003
+ public const int bottom_sheet_slide_duration = 2131296259;
+
+ // aapt resource value: 0x7F090004
+ public const int cancel_button_image_alpha = 2131296260;
+
+ // aapt resource value: 0x7F090005
+ public const int config_tooltipAnimTime = 2131296261;
+
+ // aapt resource value: 0x7F090006
+ public const int design_snackbar_text_max_lines = 2131296262;
+
+ // aapt resource value: 0x7F090007
+ public const int design_tab_indicator_anim_duration_ms = 2131296263;
+
+ // aapt resource value: 0x7F090008
+ public const int hide_password_duration = 2131296264;
+
+ // aapt resource value: 0x7F090009
+ public const int mtrl_btn_anim_delay_ms = 2131296265;
+
+ // aapt resource value: 0x7F09000A
+ public const int mtrl_btn_anim_duration_ms = 2131296266;
+
+ // aapt resource value: 0x7F09000B
+ public const int mtrl_chip_anim_duration = 2131296267;
+
+ // aapt resource value: 0x7F09000C
+ public const int mtrl_tab_indicator_anim_duration_ms = 2131296268;
+
+ // aapt resource value: 0x7F09000D
+ public const int show_password_duration = 2131296269;
+
+ // aapt resource value: 0x7F09000E
+ public const int status_bar_notification_info_maxnum = 2131296270;
+
+ static Integer()
+ {
+ global::Android.Runtime.ResourceIdManager.UpdateIdValues();
+ }
+
+ private Integer()
+ {
+ }
+ }
+
+ public partial class Interpolator
+ {
+
+ // aapt resource value: 0x7F0A0000
+ public const int mtrl_fast_out_linear_in = 2131361792;
+
+ // aapt resource value: 0x7F0A0001
+ public const int mtrl_fast_out_slow_in = 2131361793;
+
+ // aapt resource value: 0x7F0A0002
+ public const int mtrl_linear = 2131361794;
+
+ // aapt resource value: 0x7F0A0003
+ public const int mtrl_linear_out_slow_in = 2131361795;
+
+ static Interpolator()
+ {
+ global::Android.Runtime.ResourceIdManager.UpdateIdValues();
+ }
+
+ private Interpolator()
+ {
+ }
+ }
+
+ public partial class Layout
+ {
+
+ // aapt resource value: 0x7F0B0000
+ public const int abc_action_bar_title_item = 2131427328;
+
+ // aapt resource value: 0x7F0B0001
+ public const int abc_action_bar_up_container = 2131427329;
+
+ // aapt resource value: 0x7F0B0002
+ public const int abc_action_menu_item_layout = 2131427330;
+
+ // aapt resource value: 0x7F0B0003
+ public const int abc_action_menu_layout = 2131427331;
+
+ // aapt resource value: 0x7F0B0004
+ public const int abc_action_mode_bar = 2131427332;
+
+ // aapt resource value: 0x7F0B0005
+ public const int abc_action_mode_close_item_material = 2131427333;
+
+ // aapt resource value: 0x7F0B0006
+ public const int abc_activity_chooser_view = 2131427334;
+
+ // aapt resource value: 0x7F0B0007
+ public const int abc_activity_chooser_view_list_item = 2131427335;
+
+ // aapt resource value: 0x7F0B0008
+ public const int abc_alert_dialog_button_bar_material = 2131427336;
+
+ // aapt resource value: 0x7F0B0009
+ public const int abc_alert_dialog_material = 2131427337;
+
+ // aapt resource value: 0x7F0B000A
+ public const int abc_alert_dialog_title_material = 2131427338;
+
+ // aapt resource value: 0x7F0B000B
+ public const int abc_cascading_menu_item_layout = 2131427339;
+
+ // aapt resource value: 0x7F0B000C
+ public const int abc_dialog_title_material = 2131427340;
+
+ // aapt resource value: 0x7F0B000D
+ public const int abc_expanded_menu_layout = 2131427341;
+
+ // aapt resource value: 0x7F0B000E
+ public const int abc_list_menu_item_checkbox = 2131427342;
+
+ // aapt resource value: 0x7F0B000F
+ public const int abc_list_menu_item_icon = 2131427343;
+
+ // aapt resource value: 0x7F0B0010
+ public const int abc_list_menu_item_layout = 2131427344;
+
+ // aapt resource value: 0x7F0B0011
+ public const int abc_list_menu_item_radio = 2131427345;
+
+ // aapt resource value: 0x7F0B0012
+ public const int abc_popup_menu_header_item_layout = 2131427346;
+
+ // aapt resource value: 0x7F0B0013
+ public const int abc_popup_menu_item_layout = 2131427347;
+
+ // aapt resource value: 0x7F0B0014
+ public const int abc_screen_content_include = 2131427348;
+
+ // aapt resource value: 0x7F0B0015
+ public const int abc_screen_simple = 2131427349;
+
+ // aapt resource value: 0x7F0B0016
+ public const int abc_screen_simple_overlay_action_mode = 2131427350;
+
+ // aapt resource value: 0x7F0B0017
+ public const int abc_screen_toolbar = 2131427351;
+
+ // aapt resource value: 0x7F0B0018
+ public const int abc_search_dropdown_item_icons_2line = 2131427352;
+
+ // aapt resource value: 0x7F0B0019
+ public const int abc_search_view = 2131427353;
+
+ // aapt resource value: 0x7F0B001A
+ public const int abc_select_dialog_material = 2131427354;
+
+ // aapt resource value: 0x7F0B001B
+ public const int abc_tooltip = 2131427355;
+
+ // aapt resource value: 0x7F0B001C
+ public const int BottomTabLayout = 2131427356;
+
+ // aapt resource value: 0x7F0B001D
+ public const int browser_actions_context_menu_page = 2131427357;
+
+ // aapt resource value: 0x7F0B001E
+ public const int browser_actions_context_menu_row = 2131427358;
+
+ // aapt resource value: 0x7F0B001F
+ public const int design_bottom_navigation_item = 2131427359;
+
+ // aapt resource value: 0x7F0B0020
+ public const int design_bottom_sheet_dialog = 2131427360;
+
+ // aapt resource value: 0x7F0B0021
+ public const int design_layout_snackbar = 2131427361;
+
+ // aapt resource value: 0x7F0B0022
+ public const int design_layout_snackbar_include = 2131427362;
+
+ // aapt resource value: 0x7F0B0023
+ public const int design_layout_tab_icon = 2131427363;
+
+ // aapt resource value: 0x7F0B0024
+ public const int design_layout_tab_text = 2131427364;
+
+ // aapt resource value: 0x7F0B0025
+ public const int design_menu_item_action_area = 2131427365;
+
+ // aapt resource value: 0x7F0B0026
+ public const int design_navigation_item = 2131427366;
+
+ // aapt resource value: 0x7F0B0027
+ public const int design_navigation_item_header = 2131427367;
+
+ // aapt resource value: 0x7F0B0028
+ public const int design_navigation_item_separator = 2131427368;
+
+ // aapt resource value: 0x7F0B0029
+ public const int design_navigation_item_subheader = 2131427369;
+
+ // aapt resource value: 0x7F0B002A
+ public const int design_navigation_menu = 2131427370;
+
+ // aapt resource value: 0x7F0B002B
+ public const int design_navigation_menu_item = 2131427371;
+
+ // aapt resource value: 0x7F0B002C
+ public const int design_text_input_password_icon = 2131427372;
+
+ // aapt resource value: 0x7F0B002D
+ public const int FlyoutContent = 2131427373;
+
+ // aapt resource value: 0x7F0B002E
+ public const int mtrl_layout_snackbar = 2131427374;
+
+ // aapt resource value: 0x7F0B002F
+ public const int mtrl_layout_snackbar_include = 2131427375;
+
+ // aapt resource value: 0x7F0B0030
+ public const int notification_action = 2131427376;
+
+ // aapt resource value: 0x7F0B0031
+ public const int notification_action_tombstone = 2131427377;
+
+ // aapt resource value: 0x7F0B0032
+ public const int notification_media_action = 2131427378;
+
+ // aapt resource value: 0x7F0B0033
+ public const int notification_media_cancel_action = 2131427379;
+
+ // aapt resource value: 0x7F0B0034
+ public const int notification_template_big_media = 2131427380;
+
+ // aapt resource value: 0x7F0B0035
+ public const int notification_template_big_media_custom = 2131427381;
+
+ // aapt resource value: 0x7F0B0036
+ public const int notification_template_big_media_narrow = 2131427382;
+
+ // aapt resource value: 0x7F0B0037
+ public const int notification_template_big_media_narrow_custom = 2131427383;
+
+ // aapt resource value: 0x7F0B0038
+ public const int notification_template_custom_big = 2131427384;
+
+ // aapt resource value: 0x7F0B0039
+ public const int notification_template_icon_group = 2131427385;
+
+ // aapt resource value: 0x7F0B003A
+ public const int notification_template_lines_media = 2131427386;
+
+ // aapt resource value: 0x7F0B003B
+ public const int notification_template_media = 2131427387;
+
+ // aapt resource value: 0x7F0B003C
+ public const int notification_template_media_custom = 2131427388;
+
+ // aapt resource value: 0x7F0B003D
+ public const int notification_template_part_chronometer = 2131427389;
+
+ // aapt resource value: 0x7F0B003E
+ public const int notification_template_part_time = 2131427390;
+
+ // aapt resource value: 0x7F0B003F
+ public const int RootLayout = 2131427391;
+
+ // aapt resource value: 0x7F0B0040
+ public const int select_dialog_item_material = 2131427392;
+
+ // aapt resource value: 0x7F0B0041
+ public const int select_dialog_multichoice_material = 2131427393;
+
+ // aapt resource value: 0x7F0B0042
+ public const int select_dialog_singlechoice_material = 2131427394;
+
+ // aapt resource value: 0x7F0B0043
+ public const int ShellContent = 2131427395;
+
+ // aapt resource value: 0x7F0B0044
+ public const int support_simple_spinner_dropdown_item = 2131427396;
+
+ // aapt resource value: 0x7F0B0045
+ public const int Tabbar = 2131427397;
+
+ // aapt resource value: 0x7F0B0046
+ public const int Toolbar = 2131427398;
+
+ static Layout()
+ {
+ global::Android.Runtime.ResourceIdManager.UpdateIdValues();
+ }
+
+ private Layout()
+ {
+ }
+ }
+
+ public partial class Mipmap
+ {
+
+ // aapt resource value: 0x7F0C0000
+ public const int icon = 2131492864;
+
+ // aapt resource value: 0x7F0C0001
+ public const int icon_round = 2131492865;
+
+ // aapt resource value: 0x7F0C0002
+ public const int launcher_foreground = 2131492866;
+
+ static Mipmap()
+ {
+ global::Android.Runtime.ResourceIdManager.UpdateIdValues();
+ }
+
+ private Mipmap()
+ {
+ }
+ }
+
+ public partial class String
+ {
+
+ // aapt resource value: 0x7F0D0000
+ public const int abc_action_bar_home_description = 2131558400;
+
+ // aapt resource value: 0x7F0D0001
+ public const int abc_action_bar_up_description = 2131558401;
+
+ // aapt resource value: 0x7F0D0002
+ public const int abc_action_menu_overflow_description = 2131558402;
+
+ // aapt resource value: 0x7F0D0003
+ public const int abc_action_mode_done = 2131558403;
+
+ // aapt resource value: 0x7F0D0005
+ public const int abc_activitychooserview_choose_application = 2131558405;
+
+ // aapt resource value: 0x7F0D0004
+ public const int abc_activity_chooser_view_see_all = 2131558404;
+
+ // aapt resource value: 0x7F0D0006
+ public const int abc_capital_off = 2131558406;
+
+ // aapt resource value: 0x7F0D0007
+ public const int abc_capital_on = 2131558407;
+
+ // aapt resource value: 0x7F0D0008
+ public const int abc_font_family_body_1_material = 2131558408;
+
+ // aapt resource value: 0x7F0D0009
+ public const int abc_font_family_body_2_material = 2131558409;
+
+ // aapt resource value: 0x7F0D000A
+ public const int abc_font_family_button_material = 2131558410;
+
+ // aapt resource value: 0x7F0D000B
+ public const int abc_font_family_caption_material = 2131558411;
+
+ // aapt resource value: 0x7F0D000C
+ public const int abc_font_family_display_1_material = 2131558412;
+
+ // aapt resource value: 0x7F0D000D
+ public const int abc_font_family_display_2_material = 2131558413;
+
+ // aapt resource value: 0x7F0D000E
+ public const int abc_font_family_display_3_material = 2131558414;
+
+ // aapt resource value: 0x7F0D000F
+ public const int abc_font_family_display_4_material = 2131558415;
+
+ // aapt resource value: 0x7F0D0010
+ public const int abc_font_family_headline_material = 2131558416;
+
+ // aapt resource value: 0x7F0D0011
+ public const int abc_font_family_menu_material = 2131558417;
+
+ // aapt resource value: 0x7F0D0012
+ public const int abc_font_family_subhead_material = 2131558418;
+
+ // aapt resource value: 0x7F0D0013
+ public const int abc_font_family_title_material = 2131558419;
+
+ // aapt resource value: 0x7F0D0014
+ public const int abc_menu_alt_shortcut_label = 2131558420;
+
+ // aapt resource value: 0x7F0D0015
+ public const int abc_menu_ctrl_shortcut_label = 2131558421;
+
+ // aapt resource value: 0x7F0D0016
+ public const int abc_menu_delete_shortcut_label = 2131558422;
+
+ // aapt resource value: 0x7F0D0017
+ public const int abc_menu_enter_shortcut_label = 2131558423;
+
+ // aapt resource value: 0x7F0D0018
+ public const int abc_menu_function_shortcut_label = 2131558424;
+
+ // aapt resource value: 0x7F0D0019
+ public const int abc_menu_meta_shortcut_label = 2131558425;
+
+ // aapt resource value: 0x7F0D001A
+ public const int abc_menu_shift_shortcut_label = 2131558426;
+
+ // aapt resource value: 0x7F0D001B
+ public const int abc_menu_space_shortcut_label = 2131558427;
+
+ // aapt resource value: 0x7F0D001C
+ public const int abc_menu_sym_shortcut_label = 2131558428;
+
+ // aapt resource value: 0x7F0D001D
+ public const int abc_prepend_shortcut_label = 2131558429;
+
+ // aapt resource value: 0x7F0D001F
+ public const int abc_searchview_description_clear = 2131558431;
+
+ // aapt resource value: 0x7F0D0020
+ public const int abc_searchview_description_query = 2131558432;
+
+ // aapt resource value: 0x7F0D0021
+ public const int abc_searchview_description_search = 2131558433;
+
+ // aapt resource value: 0x7F0D0022
+ public const int abc_searchview_description_submit = 2131558434;
+
+ // aapt resource value: 0x7F0D0023
+ public const int abc_searchview_description_voice = 2131558435;
+
+ // aapt resource value: 0x7F0D001E
+ public const int abc_search_hint = 2131558430;
+
+ // aapt resource value: 0x7F0D0024
+ public const int abc_shareactionprovider_share_with = 2131558436;
+
+ // aapt resource value: 0x7F0D0025
+ public const int abc_shareactionprovider_share_with_application = 2131558437;
+
+ // aapt resource value: 0x7F0D0026
+ public const int abc_toolbar_collapse_description = 2131558438;
+
+ // aapt resource value: 0x7F0D0027
+ public const int appbar_scrolling_view_behavior = 2131558439;
+
+ // aapt resource value: 0x7F0D0028
+ public const int bottom_sheet_behavior = 2131558440;
+
+ // aapt resource value: 0x7F0D0029
+ public const int character_counter_content_description = 2131558441;
+
+ // aapt resource value: 0x7F0D002A
+ public const int character_counter_pattern = 2131558442;
+
+ // aapt resource value: 0x7F0D002B
+ public const int fab_transformation_scrim_behavior = 2131558443;
+
+ // aapt resource value: 0x7F0D002C
+ public const int fab_transformation_sheet_behavior = 2131558444;
+
+ // aapt resource value: 0x7F0D002D
+ public const int hide_bottom_view_on_scroll_behavior = 2131558445;
+
+ // aapt resource value: 0x7F0D002E
+ public const int mtrl_chip_close_icon_content_description = 2131558446;
+
+ // aapt resource value: 0x7F0D002F
+ public const int password_toggle_content_description = 2131558447;
+
+ // aapt resource value: 0x7F0D0030
+ public const int path_password_eye = 2131558448;
+
+ // aapt resource value: 0x7F0D0031
+ public const int path_password_eye_mask_strike_through = 2131558449;
+
+ // aapt resource value: 0x7F0D0032
+ public const int path_password_eye_mask_visible = 2131558450;
+
+ // aapt resource value: 0x7F0D0033
+ public const int path_password_strike_through = 2131558451;
+
+ // aapt resource value: 0x7F0D0034
+ public const int search_menu_title = 2131558452;
+
+ // aapt resource value: 0x7F0D0035
+ public const int status_bar_notification_info_overflow = 2131558453;
+
+ static String()
+ {
+ global::Android.Runtime.ResourceIdManager.UpdateIdValues();
+ }
+
+ private String()
+ {
+ }
+ }
+
+ public partial class Style
+ {
+
+ // aapt resource value: 0x7F0E0000
+ public const int AlertDialog_AppCompat = 2131623936;
+
+ // aapt resource value: 0x7F0E0001
+ public const int AlertDialog_AppCompat_Light = 2131623937;
+
+ // aapt resource value: 0x7F0E0002
+ public const int Animation_AppCompat_Dialog = 2131623938;
+
+ // aapt resource value: 0x7F0E0003
+ public const int Animation_AppCompat_DropDownUp = 2131623939;
+
+ // aapt resource value: 0x7F0E0004
+ public const int Animation_AppCompat_Tooltip = 2131623940;
+
+ // aapt resource value: 0x7F0E0005
+ public const int Animation_Design_BottomSheetDialog = 2131623941;
+
+ // aapt resource value: 0x7F0E0006
+ public const int AppCompatDialogStyle = 2131623942;
+
+ // aapt resource value: 0x7F0E0007
+ public const int Base_AlertDialog_AppCompat = 2131623943;
+
+ // aapt resource value: 0x7F0E0008
+ public const int Base_AlertDialog_AppCompat_Light = 2131623944;
+
+ // aapt resource value: 0x7F0E0009
+ public const int Base_Animation_AppCompat_Dialog = 2131623945;
+
+ // aapt resource value: 0x7F0E000A
+ public const int Base_Animation_AppCompat_DropDownUp = 2131623946;
+
+ // aapt resource value: 0x7F0E000B
+ public const int Base_Animation_AppCompat_Tooltip = 2131623947;
+
+ // aapt resource value: 0x7F0E000C
+ public const int Base_CardView = 2131623948;
+
+ // aapt resource value: 0x7F0E000E
+ public const int Base_DialogWindowTitleBackground_AppCompat = 2131623950;
+
+ // aapt resource value: 0x7F0E000D
+ public const int Base_DialogWindowTitle_AppCompat = 2131623949;
+
+ // aapt resource value: 0x7F0E000F
+ public const int Base_TextAppearance_AppCompat = 2131623951;
+
+ // aapt resource value: 0x7F0E0010
+ public const int Base_TextAppearance_AppCompat_Body1 = 2131623952;
+
+ // aapt resource value: 0x7F0E0011
+ public const int Base_TextAppearance_AppCompat_Body2 = 2131623953;
+
+ // aapt resource value: 0x7F0E0012
+ public const int Base_TextAppearance_AppCompat_Button = 2131623954;
+
+ // aapt resource value: 0x7F0E0013
+ public const int Base_TextAppearance_AppCompat_Caption = 2131623955;
+
+ // aapt resource value: 0x7F0E0014
+ public const int Base_TextAppearance_AppCompat_Display1 = 2131623956;
+
+ // aapt resource value: 0x7F0E0015
+ public const int Base_TextAppearance_AppCompat_Display2 = 2131623957;
+
+ // aapt resource value: 0x7F0E0016
+ public const int Base_TextAppearance_AppCompat_Display3 = 2131623958;
+
+ // aapt resource value: 0x7F0E0017
+ public const int Base_TextAppearance_AppCompat_Display4 = 2131623959;
+
+ // aapt resource value: 0x7F0E0018
+ public const int Base_TextAppearance_AppCompat_Headline = 2131623960;
+
+ // aapt resource value: 0x7F0E0019
+ public const int Base_TextAppearance_AppCompat_Inverse = 2131623961;
+
+ // aapt resource value: 0x7F0E001A
+ public const int Base_TextAppearance_AppCompat_Large = 2131623962;
+
+ // aapt resource value: 0x7F0E001B
+ public const int Base_TextAppearance_AppCompat_Large_Inverse = 2131623963;
+
+ // aapt resource value: 0x7F0E001C
+ public const int Base_TextAppearance_AppCompat_Light_Widget_PopupMenu_Large = 2131623964;
+
+ // aapt resource value: 0x7F0E001D
+ public const int Base_TextAppearance_AppCompat_Light_Widget_PopupMenu_Small = 2131623965;
+
+ // aapt resource value: 0x7F0E001E
+ public const int Base_TextAppearance_AppCompat_Medium = 2131623966;
+
+ // aapt resource value: 0x7F0E001F
+ public const int Base_TextAppearance_AppCompat_Medium_Inverse = 2131623967;
+
+ // aapt resource value: 0x7F0E0020
+ public const int Base_TextAppearance_AppCompat_Menu = 2131623968;
+
+ // aapt resource value: 0x7F0E0021
+ public const int Base_TextAppearance_AppCompat_SearchResult = 2131623969;
+
+ // aapt resource value: 0x7F0E0022
+ public const int Base_TextAppearance_AppCompat_SearchResult_Subtitle = 2131623970;
+
+ // aapt resource value: 0x7F0E0023
+ public const int Base_TextAppearance_AppCompat_SearchResult_Title = 2131623971;
+
+ // aapt resource value: 0x7F0E0024
+ public const int Base_TextAppearance_AppCompat_Small = 2131623972;
+
+ // aapt resource value: 0x7F0E0025
+ public const int Base_TextAppearance_AppCompat_Small_Inverse = 2131623973;
+
+ // aapt resource value: 0x7F0E0026
+ public const int Base_TextAppearance_AppCompat_Subhead = 2131623974;
+
+ // aapt resource value: 0x7F0E0027
+ public const int Base_TextAppearance_AppCompat_Subhead_Inverse = 2131623975;
+
+ // aapt resource value: 0x7F0E0028
+ public const int Base_TextAppearance_AppCompat_Title = 2131623976;
+
+ // aapt resource value: 0x7F0E0029
+ public const int Base_TextAppearance_AppCompat_Title_Inverse = 2131623977;
+
+ // aapt resource value: 0x7F0E002A
+ public const int Base_TextAppearance_AppCompat_Tooltip = 2131623978;
+
+ // aapt resource value: 0x7F0E002B
+ public const int Base_TextAppearance_AppCompat_Widget_ActionBar_Menu = 2131623979;
+
+ // aapt resource value: 0x7F0E002C
+ public const int Base_TextAppearance_AppCompat_Widget_ActionBar_Subtitle = 2131623980;
+
+ // aapt resource value: 0x7F0E002D
+ public const int Base_TextAppearance_AppCompat_Widget_ActionBar_Subtitle_Inverse = 2131623981;
+
+ // aapt resource value: 0x7F0E002E
+ public const int Base_TextAppearance_AppCompat_Widget_ActionBar_Title = 2131623982;
+
+ // aapt resource value: 0x7F0E002F
+ public const int Base_TextAppearance_AppCompat_Widget_ActionBar_Title_Inverse = 2131623983;
+
+ // aapt resource value: 0x7F0E0030
+ public const int Base_TextAppearance_AppCompat_Widget_ActionMode_Subtitle = 2131623984;
+
+ // aapt resource value: 0x7F0E0031
+ public const int Base_TextAppearance_AppCompat_Widget_ActionMode_Title = 2131623985;
+
+ // aapt resource value: 0x7F0E0032
+ public const int Base_TextAppearance_AppCompat_Widget_Button = 2131623986;
+
+ // aapt resource value: 0x7F0E0033
+ public const int Base_TextAppearance_AppCompat_Widget_Button_Borderless_Colored = 2131623987;
+
+ // aapt resource value: 0x7F0E0034
+ public const int Base_TextAppearance_AppCompat_Widget_Button_Colored = 2131623988;
+
+ // aapt resource value: 0x7F0E0035
+ public const int Base_TextAppearance_AppCompat_Widget_Button_Inverse = 2131623989;
+
+ // aapt resource value: 0x7F0E0036
+ public const int Base_TextAppearance_AppCompat_Widget_DropDownItem = 2131623990;
+
+ // aapt resource value: 0x7F0E0037
+ public const int Base_TextAppearance_AppCompat_Widget_PopupMenu_Header = 2131623991;
+
+ // aapt resource value: 0x7F0E0038
+ public const int Base_TextAppearance_AppCompat_Widget_PopupMenu_Large = 2131623992;
+
+ // aapt resource value: 0x7F0E0039
+ public const int Base_TextAppearance_AppCompat_Widget_PopupMenu_Small = 2131623993;
+
+ // aapt resource value: 0x7F0E003A
+ public const int Base_TextAppearance_AppCompat_Widget_Switch = 2131623994;
+
+ // aapt resource value: 0x7F0E003B
+ public const int Base_TextAppearance_AppCompat_Widget_TextView_SpinnerItem = 2131623995;
+
+ // aapt resource value: 0x7F0E003C
+ public const int Base_TextAppearance_Widget_AppCompat_ExpandedMenu_Item = 2131623996;
+
+ // aapt resource value: 0x7F0E003D
+ public const int Base_TextAppearance_Widget_AppCompat_Toolbar_Subtitle = 2131623997;
+
+ // aapt resource value: 0x7F0E003E
+ public const int Base_TextAppearance_Widget_AppCompat_Toolbar_Title = 2131623998;
+
+ // aapt resource value: 0x7F0E005E
+ public const int Base_ThemeOverlay_AppCompat = 2131624030;
+
+ // aapt resource value: 0x7F0E005F
+ public const int Base_ThemeOverlay_AppCompat_ActionBar = 2131624031;
+
+ // aapt resource value: 0x7F0E0060
+ public const int Base_ThemeOverlay_AppCompat_Dark = 2131624032;
+
+ // aapt resource value: 0x7F0E0061
+ public const int Base_ThemeOverlay_AppCompat_Dark_ActionBar = 2131624033;
+
+ // aapt resource value: 0x7F0E0062
+ public const int Base_ThemeOverlay_AppCompat_Dialog = 2131624034;
+
+ // aapt resource value: 0x7F0E0063
+ public const int Base_ThemeOverlay_AppCompat_Dialog_Alert = 2131624035;
+
+ // aapt resource value: 0x7F0E0064
+ public const int Base_ThemeOverlay_AppCompat_Light = 2131624036;
+
+ // aapt resource value: 0x7F0E0065
+ public const int Base_ThemeOverlay_MaterialComponents_Dialog = 2131624037;
+
+ // aapt resource value: 0x7F0E0066
+ public const int Base_ThemeOverlay_MaterialComponents_Dialog_Alert = 2131624038;
+
+ // aapt resource value: 0x7F0E003F
+ public const int Base_Theme_AppCompat = 2131623999;
+
+ // aapt resource value: 0x7F0E0040
+ public const int Base_Theme_AppCompat_CompactMenu = 2131624000;
+
+ // aapt resource value: 0x7F0E0041
+ public const int Base_Theme_AppCompat_Dialog = 2131624001;
+
+ // aapt resource value: 0x7F0E0045
+ public const int Base_Theme_AppCompat_DialogWhenLarge = 2131624005;
+
+ // aapt resource value: 0x7F0E0042
+ public const int Base_Theme_AppCompat_Dialog_Alert = 2131624002;
+
+ // aapt resource value: 0x7F0E0043
+ public const int Base_Theme_AppCompat_Dialog_FixedSize = 2131624003;
+
+ // aapt resource value: 0x7F0E0044
+ public const int Base_Theme_AppCompat_Dialog_MinWidth = 2131624004;
+
+ // aapt resource value: 0x7F0E0046
+ public const int Base_Theme_AppCompat_Light = 2131624006;
+
+ // aapt resource value: 0x7F0E0047
+ public const int Base_Theme_AppCompat_Light_DarkActionBar = 2131624007;
+
+ // aapt resource value: 0x7F0E0048
+ public const int Base_Theme_AppCompat_Light_Dialog = 2131624008;
+
+ // aapt resource value: 0x7F0E004C
+ public const int Base_Theme_AppCompat_Light_DialogWhenLarge = 2131624012;
+
+ // aapt resource value: 0x7F0E0049
+ public const int Base_Theme_AppCompat_Light_Dialog_Alert = 2131624009;
+
+ // aapt resource value: 0x7F0E004A
+ public const int Base_Theme_AppCompat_Light_Dialog_FixedSize = 2131624010;
+
+ // aapt resource value: 0x7F0E004B
+ public const int Base_Theme_AppCompat_Light_Dialog_MinWidth = 2131624011;
+
+ // aapt resource value: 0x7F0E004D
+ public const int Base_Theme_MaterialComponents = 2131624013;
+
+ // aapt resource value: 0x7F0E004E
+ public const int Base_Theme_MaterialComponents_Bridge = 2131624014;
+
+ // aapt resource value: 0x7F0E004F
+ public const int Base_Theme_MaterialComponents_CompactMenu = 2131624015;
+
+ // aapt resource value: 0x7F0E0050
+ public const int Base_Theme_MaterialComponents_Dialog = 2131624016;
+
+ // aapt resource value: 0x7F0E0054
+ public const int Base_Theme_MaterialComponents_DialogWhenLarge = 2131624020;
+
+ // aapt resource value: 0x7F0E0051
+ public const int Base_Theme_MaterialComponents_Dialog_Alert = 2131624017;
+
+ // aapt resource value: 0x7F0E0052
+ public const int Base_Theme_MaterialComponents_Dialog_FixedSize = 2131624018;
+
+ // aapt resource value: 0x7F0E0053
+ public const int Base_Theme_MaterialComponents_Dialog_MinWidth = 2131624019;
+
+ // aapt resource value: 0x7F0E0055
+ public const int Base_Theme_MaterialComponents_Light = 2131624021;
+
+ // aapt resource value: 0x7F0E0056
+ public const int Base_Theme_MaterialComponents_Light_Bridge = 2131624022;
+
+ // aapt resource value: 0x7F0E0057
+ public const int Base_Theme_MaterialComponents_Light_DarkActionBar = 2131624023;
+
+ // aapt resource value: 0x7F0E0058
+ public const int Base_Theme_MaterialComponents_Light_DarkActionBar_Bridge = 2131624024;
+
+ // aapt resource value: 0x7F0E0059
+ public const int Base_Theme_MaterialComponents_Light_Dialog = 2131624025;
+
+ // aapt resource value: 0x7F0E005D
+ public const int Base_Theme_MaterialComponents_Light_DialogWhenLarge = 2131624029;
+
+ // aapt resource value: 0x7F0E005A
+ public const int Base_Theme_MaterialComponents_Light_Dialog_Alert = 2131624026;
+
+ // aapt resource value: 0x7F0E005B
+ public const int Base_Theme_MaterialComponents_Light_Dialog_FixedSize = 2131624027;
+
+ // aapt resource value: 0x7F0E005C
+ public const int Base_Theme_MaterialComponents_Light_Dialog_MinWidth = 2131624028;
+
+ // aapt resource value: 0x7F0E006E
+ public const int Base_V14_ThemeOverlay_MaterialComponents_Dialog = 2131624046;
+
+ // aapt resource value: 0x7F0E006F
+ public const int Base_V14_ThemeOverlay_MaterialComponents_Dialog_Alert = 2131624047;
+
+ // aapt resource value: 0x7F0E0067
+ public const int Base_V14_Theme_MaterialComponents = 2131624039;
+
+ // aapt resource value: 0x7F0E0068
+ public const int Base_V14_Theme_MaterialComponents_Bridge = 2131624040;
+
+ // aapt resource value: 0x7F0E0069
+ public const int Base_V14_Theme_MaterialComponents_Dialog = 2131624041;
+
+ // aapt resource value: 0x7F0E006A
+ public const int Base_V14_Theme_MaterialComponents_Light = 2131624042;
+
+ // aapt resource value: 0x7F0E006B
+ public const int Base_V14_Theme_MaterialComponents_Light_Bridge = 2131624043;
+
+ // aapt resource value: 0x7F0E006C
+ public const int Base_V14_Theme_MaterialComponents_Light_DarkActionBar_Bridge = 2131624044;
+
+ // aapt resource value: 0x7F0E006D
+ public const int Base_V14_Theme_MaterialComponents_Light_Dialog = 2131624045;
+
+ // aapt resource value: 0x7F0E0074
+ public const int Base_V21_ThemeOverlay_AppCompat_Dialog = 2131624052;
+
+ // aapt resource value: 0x7F0E0070
+ public const int Base_V21_Theme_AppCompat = 2131624048;
+
+ // aapt resource value: 0x7F0E0071
+ public const int Base_V21_Theme_AppCompat_Dialog = 2131624049;
+
+ // aapt resource value: 0x7F0E0072
+ public const int Base_V21_Theme_AppCompat_Light = 2131624050;
+
+ // aapt resource value: 0x7F0E0073
+ public const int Base_V21_Theme_AppCompat_Light_Dialog = 2131624051;
+
+ // aapt resource value: 0x7F0E0075
+ public const int Base_V22_Theme_AppCompat = 2131624053;
+
+ // aapt resource value: 0x7F0E0076
+ public const int Base_V22_Theme_AppCompat_Light = 2131624054;
+
+ // aapt resource value: 0x7F0E0077
+ public const int Base_V23_Theme_AppCompat = 2131624055;
+
+ // aapt resource value: 0x7F0E0078
+ public const int Base_V23_Theme_AppCompat_Light = 2131624056;
+
+ // aapt resource value: 0x7F0E0079
+ public const int Base_V26_Theme_AppCompat = 2131624057;
+
+ // aapt resource value: 0x7F0E007A
+ public const int Base_V26_Theme_AppCompat_Light = 2131624058;
+
+ // aapt resource value: 0x7F0E007B
+ public const int Base_V26_Widget_AppCompat_Toolbar = 2131624059;
+
+ // aapt resource value: 0x7F0E007C
+ public const int Base_V28_Theme_AppCompat = 2131624060;
+
+ // aapt resource value: 0x7F0E007D
+ public const int Base_V28_Theme_AppCompat_Light = 2131624061;
+
+ // aapt resource value: 0x7F0E0082
+ public const int Base_V7_ThemeOverlay_AppCompat_Dialog = 2131624066;
+
+ // aapt resource value: 0x7F0E007E
+ public const int Base_V7_Theme_AppCompat = 2131624062;
+
+ // aapt resource value: 0x7F0E007F
+ public const int Base_V7_Theme_AppCompat_Dialog = 2131624063;
+
+ // aapt resource value: 0x7F0E0080
+ public const int Base_V7_Theme_AppCompat_Light = 2131624064;
+
+ // aapt resource value: 0x7F0E0081
+ public const int Base_V7_Theme_AppCompat_Light_Dialog = 2131624065;
+
+ // aapt resource value: 0x7F0E0083
+ public const int Base_V7_Widget_AppCompat_AutoCompleteTextView = 2131624067;
+
+ // aapt resource value: 0x7F0E0084
+ public const int Base_V7_Widget_AppCompat_EditText = 2131624068;
+
+ // aapt resource value: 0x7F0E0085
+ public const int Base_V7_Widget_AppCompat_Toolbar = 2131624069;
+
+ // aapt resource value: 0x7F0E0086
+ public const int Base_Widget_AppCompat_ActionBar = 2131624070;
+
+ // aapt resource value: 0x7F0E0087
+ public const int Base_Widget_AppCompat_ActionBar_Solid = 2131624071;
+
+ // aapt resource value: 0x7F0E0088
+ public const int Base_Widget_AppCompat_ActionBar_TabBar = 2131624072;
+
+ // aapt resource value: 0x7F0E0089
+ public const int Base_Widget_AppCompat_ActionBar_TabText = 2131624073;
+
+ // aapt resource value: 0x7F0E008A
+ public const int Base_Widget_AppCompat_ActionBar_TabView = 2131624074;
+
+ // aapt resource value: 0x7F0E008B
+ public const int Base_Widget_AppCompat_ActionButton = 2131624075;
+
+ // aapt resource value: 0x7F0E008C
+ public const int Base_Widget_AppCompat_ActionButton_CloseMode = 2131624076;
+
+ // aapt resource value: 0x7F0E008D
+ public const int Base_Widget_AppCompat_ActionButton_Overflow = 2131624077;
+
+ // aapt resource value: 0x7F0E008E
+ public const int Base_Widget_AppCompat_ActionMode = 2131624078;
+
+ // aapt resource value: 0x7F0E008F
+ public const int Base_Widget_AppCompat_ActivityChooserView = 2131624079;
+
+ // aapt resource value: 0x7F0E0090
+ public const int Base_Widget_AppCompat_AutoCompleteTextView = 2131624080;
+
+ // aapt resource value: 0x7F0E0091
+ public const int Base_Widget_AppCompat_Button = 2131624081;
+
+ // aapt resource value: 0x7F0E0097
+ public const int Base_Widget_AppCompat_ButtonBar = 2131624087;
+
+ // aapt resource value: 0x7F0E0098
+ public const int Base_Widget_AppCompat_ButtonBar_AlertDialog = 2131624088;
+
+ // aapt resource value: 0x7F0E0092
+ public const int Base_Widget_AppCompat_Button_Borderless = 2131624082;
+
+ // aapt resource value: 0x7F0E0093
+ public const int Base_Widget_AppCompat_Button_Borderless_Colored = 2131624083;
+
+ // aapt resource value: 0x7F0E0094
+ public const int Base_Widget_AppCompat_Button_ButtonBar_AlertDialog = 2131624084;
+
+ // aapt resource value: 0x7F0E0095
+ public const int Base_Widget_AppCompat_Button_Colored = 2131624085;
+
+ // aapt resource value: 0x7F0E0096
+ public const int Base_Widget_AppCompat_Button_Small = 2131624086;
+
+ // aapt resource value: 0x7F0E0099
+ public const int Base_Widget_AppCompat_CompoundButton_CheckBox = 2131624089;
+
+ // aapt resource value: 0x7F0E009A
+ public const int Base_Widget_AppCompat_CompoundButton_RadioButton = 2131624090;
+
+ // aapt resource value: 0x7F0E009B
+ public const int Base_Widget_AppCompat_CompoundButton_Switch = 2131624091;
+
+ // aapt resource value: 0x7F0E009C
+ public const int Base_Widget_AppCompat_DrawerArrowToggle = 2131624092;
+
+ // aapt resource value: 0x7F0E009D
+ public const int Base_Widget_AppCompat_DrawerArrowToggle_Common = 2131624093;
+
+ // aapt resource value: 0x7F0E009E
+ public const int Base_Widget_AppCompat_DropDownItem_Spinner = 2131624094;
+
+ // aapt resource value: 0x7F0E009F
+ public const int Base_Widget_AppCompat_EditText = 2131624095;
+
+ // aapt resource value: 0x7F0E00A0
+ public const int Base_Widget_AppCompat_ImageButton = 2131624096;
+
+ // aapt resource value: 0x7F0E00A1
+ public const int Base_Widget_AppCompat_Light_ActionBar = 2131624097;
+
+ // aapt resource value: 0x7F0E00A2
+ public const int Base_Widget_AppCompat_Light_ActionBar_Solid = 2131624098;
+
+ // aapt resource value: 0x7F0E00A3
+ public const int Base_Widget_AppCompat_Light_ActionBar_TabBar = 2131624099;
+
+ // aapt resource value: 0x7F0E00A4
+ public const int Base_Widget_AppCompat_Light_ActionBar_TabText = 2131624100;
+
+ // aapt resource value: 0x7F0E00A5
+ public const int Base_Widget_AppCompat_Light_ActionBar_TabText_Inverse = 2131624101;
+
+ // aapt resource value: 0x7F0E00A6
+ public const int Base_Widget_AppCompat_Light_ActionBar_TabView = 2131624102;
+
+ // aapt resource value: 0x7F0E00A7
+ public const int Base_Widget_AppCompat_Light_PopupMenu = 2131624103;
+
+ // aapt resource value: 0x7F0E00A8
+ public const int Base_Widget_AppCompat_Light_PopupMenu_Overflow = 2131624104;
+
+ // aapt resource value: 0x7F0E00A9
+ public const int Base_Widget_AppCompat_ListMenuView = 2131624105;
+
+ // aapt resource value: 0x7F0E00AA
+ public const int Base_Widget_AppCompat_ListPopupWindow = 2131624106;
+
+ // aapt resource value: 0x7F0E00AB
+ public const int Base_Widget_AppCompat_ListView = 2131624107;
+
+ // aapt resource value: 0x7F0E00AC
+ public const int Base_Widget_AppCompat_ListView_DropDown = 2131624108;
+
+ // aapt resource value: 0x7F0E00AD
+ public const int Base_Widget_AppCompat_ListView_Menu = 2131624109;
+
+ // aapt resource value: 0x7F0E00AE
+ public const int Base_Widget_AppCompat_PopupMenu = 2131624110;
+
+ // aapt resource value: 0x7F0E00AF
+ public const int Base_Widget_AppCompat_PopupMenu_Overflow = 2131624111;
+
+ // aapt resource value: 0x7F0E00B0
+ public const int Base_Widget_AppCompat_PopupWindow = 2131624112;
+
+ // aapt resource value: 0x7F0E00B1
+ public const int Base_Widget_AppCompat_ProgressBar = 2131624113;
+
+ // aapt resource value: 0x7F0E00B2
+ public const int Base_Widget_AppCompat_ProgressBar_Horizontal = 2131624114;
+
+ // aapt resource value: 0x7F0E00B3
+ public const int Base_Widget_AppCompat_RatingBar = 2131624115;
+
+ // aapt resource value: 0x7F0E00B4
+ public const int Base_Widget_AppCompat_RatingBar_Indicator = 2131624116;
+
+ // aapt resource value: 0x7F0E00B5
+ public const int Base_Widget_AppCompat_RatingBar_Small = 2131624117;
+
+ // aapt resource value: 0x7F0E00B6
+ public const int Base_Widget_AppCompat_SearchView = 2131624118;
+
+ // aapt resource value: 0x7F0E00B7
+ public const int Base_Widget_AppCompat_SearchView_ActionBar = 2131624119;
+
+ // aapt resource value: 0x7F0E00B8
+ public const int Base_Widget_AppCompat_SeekBar = 2131624120;
+
+ // aapt resource value: 0x7F0E00B9
+ public const int Base_Widget_AppCompat_SeekBar_Discrete = 2131624121;
+
+ // aapt resource value: 0x7F0E00BA
+ public const int Base_Widget_AppCompat_Spinner = 2131624122;
+
+ // aapt resource value: 0x7F0E00BB
+ public const int Base_Widget_AppCompat_Spinner_Underlined = 2131624123;
+
+ // aapt resource value: 0x7F0E00BC
+ public const int Base_Widget_AppCompat_TextView_SpinnerItem = 2131624124;
+
+ // aapt resource value: 0x7F0E00BD
+ public const int Base_Widget_AppCompat_Toolbar = 2131624125;
+
+ // aapt resource value: 0x7F0E00BE
+ public const int Base_Widget_AppCompat_Toolbar_Button_Navigation = 2131624126;
+
+ // aapt resource value: 0x7F0E00BF
+ public const int Base_Widget_Design_TabLayout = 2131624127;
+
+ // aapt resource value: 0x7F0E00C0
+ public const int Base_Widget_MaterialComponents_Chip = 2131624128;
+
+ // aapt resource value: 0x7F0E00C1
+ public const int Base_Widget_MaterialComponents_TextInputEditText = 2131624129;
+
+ // aapt resource value: 0x7F0E00C2
+ public const int Base_Widget_MaterialComponents_TextInputLayout = 2131624130;
+
+ // aapt resource value: 0x7F0E00C3
+ public const int CardView = 2131624131;
+
+ // aapt resource value: 0x7F0E00C4
+ public const int CardView_Dark = 2131624132;
+
+ // aapt resource value: 0x7F0E00C5
+ public const int CardView_Light = 2131624133;
+
+ // aapt resource value: 0x7F0E01F7
+ public const int collectionViewStyle = 2131624439;
+
+ // aapt resource value: 0x7F0E00C6
+ public const int MainTheme = 2131624134;
+
+ // aapt resource value: 0x7F0E00C7
+ public const int MainTheme_Base = 2131624135;
+
+ // aapt resource value: 0x7F0E00C8
+ public const int Platform_AppCompat = 2131624136;
+
+ // aapt resource value: 0x7F0E00C9
+ public const int Platform_AppCompat_Light = 2131624137;
+
+ // aapt resource value: 0x7F0E00CA
+ public const int Platform_MaterialComponents = 2131624138;
+
+ // aapt resource value: 0x7F0E00CB
+ public const int Platform_MaterialComponents_Dialog = 2131624139;
+
+ // aapt resource value: 0x7F0E00CC
+ public const int Platform_MaterialComponents_Light = 2131624140;
+
+ // aapt resource value: 0x7F0E00CD
+ public const int Platform_MaterialComponents_Light_Dialog = 2131624141;
+
+ // aapt resource value: 0x7F0E00CE
+ public const int Platform_ThemeOverlay_AppCompat = 2131624142;
+
+ // aapt resource value: 0x7F0E00CF
+ public const int Platform_ThemeOverlay_AppCompat_Dark = 2131624143;
+
+ // aapt resource value: 0x7F0E00D0
+ public const int Platform_ThemeOverlay_AppCompat_Light = 2131624144;
+
+ // aapt resource value: 0x7F0E00D1
+ public const int Platform_V21_AppCompat = 2131624145;
+
+ // aapt resource value: 0x7F0E00D2
+ public const int Platform_V21_AppCompat_Light = 2131624146;
+
+ // aapt resource value: 0x7F0E00D3
+ public const int Platform_V25_AppCompat = 2131624147;
+
+ // aapt resource value: 0x7F0E00D4
+ public const int Platform_V25_AppCompat_Light = 2131624148;
+
+ // aapt resource value: 0x7F0E00D5
+ public const int Platform_Widget_AppCompat_Spinner = 2131624149;
+
+ // aapt resource value: 0x7F0E00D6
+ public const int RtlOverlay_DialogWindowTitle_AppCompat = 2131624150;
+
+ // aapt resource value: 0x7F0E00D7
+ public const int RtlOverlay_Widget_AppCompat_ActionBar_TitleItem = 2131624151;
+
+ // aapt resource value: 0x7F0E00D8
+ public const int RtlOverlay_Widget_AppCompat_DialogTitle_Icon = 2131624152;
+
+ // aapt resource value: 0x7F0E00D9
+ public const int RtlOverlay_Widget_AppCompat_PopupMenuItem = 2131624153;
+
+ // aapt resource value: 0x7F0E00DA
+ public const int RtlOverlay_Widget_AppCompat_PopupMenuItem_InternalGroup = 2131624154;
+
+ // aapt resource value: 0x7F0E00DB
+ public const int RtlOverlay_Widget_AppCompat_PopupMenuItem_Shortcut = 2131624155;
+
+ // aapt resource value: 0x7F0E00DC
+ public const int RtlOverlay_Widget_AppCompat_PopupMenuItem_SubmenuArrow = 2131624156;
+
+ // aapt resource value: 0x7F0E00DD
+ public const int RtlOverlay_Widget_AppCompat_PopupMenuItem_Text = 2131624157;
+
+ // aapt resource value: 0x7F0E00DE
+ public const int RtlOverlay_Widget_AppCompat_PopupMenuItem_Title = 2131624158;
+
+ // aapt resource value: 0x7F0E00E4
+ public const int RtlOverlay_Widget_AppCompat_SearchView_MagIcon = 2131624164;
+
+ // aapt resource value: 0x7F0E00DF
+ public const int RtlOverlay_Widget_AppCompat_Search_DropDown = 2131624159;
+
+ // aapt resource value: 0x7F0E00E0
+ public const int RtlOverlay_Widget_AppCompat_Search_DropDown_Icon1 = 2131624160;
+
+ // aapt resource value: 0x7F0E00E1
+ public const int RtlOverlay_Widget_AppCompat_Search_DropDown_Icon2 = 2131624161;
+
+ // aapt resource value: 0x7F0E00E2
+ public const int RtlOverlay_Widget_AppCompat_Search_DropDown_Query = 2131624162;
+
+ // aapt resource value: 0x7F0E00E3
+ public const int RtlOverlay_Widget_AppCompat_Search_DropDown_Text = 2131624163;
+
+ // aapt resource value: 0x7F0E00E5
+ public const int RtlUnderlay_Widget_AppCompat_ActionButton = 2131624165;
+
+ // aapt resource value: 0x7F0E00E6
+ public const int RtlUnderlay_Widget_AppCompat_ActionButton_Overflow = 2131624166;
+
+ // aapt resource value: 0x7F0E00E7
+ public const int TextAppearance_AppCompat = 2131624167;
+
+ // aapt resource value: 0x7F0E00E8
+ public const int TextAppearance_AppCompat_Body1 = 2131624168;
+
+ // aapt resource value: 0x7F0E00E9
+ public const int TextAppearance_AppCompat_Body2 = 2131624169;
+
+ // aapt resource value: 0x7F0E00EA
+ public const int TextAppearance_AppCompat_Button = 2131624170;
+
+ // aapt resource value: 0x7F0E00EB
+ public const int TextAppearance_AppCompat_Caption = 2131624171;
+
+ // aapt resource value: 0x7F0E00EC
+ public const int TextAppearance_AppCompat_Display1 = 2131624172;
+
+ // aapt resource value: 0x7F0E00ED
+ public const int TextAppearance_AppCompat_Display2 = 2131624173;
+
+ // aapt resource value: 0x7F0E00EE
+ public const int TextAppearance_AppCompat_Display3 = 2131624174;
+
+ // aapt resource value: 0x7F0E00EF
+ public const int TextAppearance_AppCompat_Display4 = 2131624175;
+
+ // aapt resource value: 0x7F0E00F0
+ public const int TextAppearance_AppCompat_Headline = 2131624176;
+
+ // aapt resource value: 0x7F0E00F1
+ public const int TextAppearance_AppCompat_Inverse = 2131624177;
+
+ // aapt resource value: 0x7F0E00F2
+ public const int TextAppearance_AppCompat_Large = 2131624178;
+
+ // aapt resource value: 0x7F0E00F3
+ public const int TextAppearance_AppCompat_Large_Inverse = 2131624179;
+
+ // aapt resource value: 0x7F0E00F4
+ public const int TextAppearance_AppCompat_Light_SearchResult_Subtitle = 2131624180;
+
+ // aapt resource value: 0x7F0E00F5
+ public const int TextAppearance_AppCompat_Light_SearchResult_Title = 2131624181;
+
+ // aapt resource value: 0x7F0E00F6
+ public const int TextAppearance_AppCompat_Light_Widget_PopupMenu_Large = 2131624182;
+
+ // aapt resource value: 0x7F0E00F7
+ public const int TextAppearance_AppCompat_Light_Widget_PopupMenu_Small = 2131624183;
+
+ // aapt resource value: 0x7F0E00F8
+ public const int TextAppearance_AppCompat_Medium = 2131624184;
+
+ // aapt resource value: 0x7F0E00F9
+ public const int TextAppearance_AppCompat_Medium_Inverse = 2131624185;
+
+ // aapt resource value: 0x7F0E00FA
+ public const int TextAppearance_AppCompat_Menu = 2131624186;
+
+ // aapt resource value: 0x7F0E00FB
+ public const int TextAppearance_AppCompat_SearchResult_Subtitle = 2131624187;
+
+ // aapt resource value: 0x7F0E00FC
+ public const int TextAppearance_AppCompat_SearchResult_Title = 2131624188;
+
+ // aapt resource value: 0x7F0E00FD
+ public const int TextAppearance_AppCompat_Small = 2131624189;
+
+ // aapt resource value: 0x7F0E00FE
+ public const int TextAppearance_AppCompat_Small_Inverse = 2131624190;
+
+ // aapt resource value: 0x7F0E00FF
+ public const int TextAppearance_AppCompat_Subhead = 2131624191;
+
+ // aapt resource value: 0x7F0E0100
+ public const int TextAppearance_AppCompat_Subhead_Inverse = 2131624192;
+
+ // aapt resource value: 0x7F0E0101
+ public const int TextAppearance_AppCompat_Title = 2131624193;
+
+ // aapt resource value: 0x7F0E0102
+ public const int TextAppearance_AppCompat_Title_Inverse = 2131624194;
+
+ // aapt resource value: 0x7F0E0103
+ public const int TextAppearance_AppCompat_Tooltip = 2131624195;
+
+ // aapt resource value: 0x7F0E0104
+ public const int TextAppearance_AppCompat_Widget_ActionBar_Menu = 2131624196;
+
+ // aapt resource value: 0x7F0E0105
+ public const int TextAppearance_AppCompat_Widget_ActionBar_Subtitle = 2131624197;
+
+ // aapt resource value: 0x7F0E0106
+ public const int TextAppearance_AppCompat_Widget_ActionBar_Subtitle_Inverse = 2131624198;
+
+ // aapt resource value: 0x7F0E0107
+ public const int TextAppearance_AppCompat_Widget_ActionBar_Title = 2131624199;
+
+ // aapt resource value: 0x7F0E0108
+ public const int TextAppearance_AppCompat_Widget_ActionBar_Title_Inverse = 2131624200;
+
+ // aapt resource value: 0x7F0E0109
+ public const int TextAppearance_AppCompat_Widget_ActionMode_Subtitle = 2131624201;
+
+ // aapt resource value: 0x7F0E010A
+ public const int TextAppearance_AppCompat_Widget_ActionMode_Subtitle_Inverse = 2131624202;
+
+ // aapt resource value: 0x7F0E010B
+ public const int TextAppearance_AppCompat_Widget_ActionMode_Title = 2131624203;
+
+ // aapt resource value: 0x7F0E010C
+ public const int TextAppearance_AppCompat_Widget_ActionMode_Title_Inverse = 2131624204;
+
+ // aapt resource value: 0x7F0E010D
+ public const int TextAppearance_AppCompat_Widget_Button = 2131624205;
+
+ // aapt resource value: 0x7F0E010E
+ public const int TextAppearance_AppCompat_Widget_Button_Borderless_Colored = 2131624206;
+
+ // aapt resource value: 0x7F0E010F
+ public const int TextAppearance_AppCompat_Widget_Button_Colored = 2131624207;
+
+ // aapt resource value: 0x7F0E0110
+ public const int TextAppearance_AppCompat_Widget_Button_Inverse = 2131624208;
+
+ // aapt resource value: 0x7F0E0111
+ public const int TextAppearance_AppCompat_Widget_DropDownItem = 2131624209;
+
+ // aapt resource value: 0x7F0E0112
+ public const int TextAppearance_AppCompat_Widget_PopupMenu_Header = 2131624210;
+
+ // aapt resource value: 0x7F0E0113
+ public const int TextAppearance_AppCompat_Widget_PopupMenu_Large = 2131624211;
+
+ // aapt resource value: 0x7F0E0114
+ public const int TextAppearance_AppCompat_Widget_PopupMenu_Small = 2131624212;
+
+ // aapt resource value: 0x7F0E0115
+ public const int TextAppearance_AppCompat_Widget_Switch = 2131624213;
+
+ // aapt resource value: 0x7F0E0116
+ public const int TextAppearance_AppCompat_Widget_TextView_SpinnerItem = 2131624214;
+
+ // aapt resource value: 0x7F0E0117
+ public const int TextAppearance_Compat_Notification = 2131624215;
+
+ // aapt resource value: 0x7F0E0118
+ public const int TextAppearance_Compat_Notification_Info = 2131624216;
+
+ // aapt resource value: 0x7F0E0119
+ public const int TextAppearance_Compat_Notification_Info_Media = 2131624217;
+
+ // aapt resource value: 0x7F0E011A
+ public const int TextAppearance_Compat_Notification_Line2 = 2131624218;
+
+ // aapt resource value: 0x7F0E011B
+ public const int TextAppearance_Compat_Notification_Line2_Media = 2131624219;
+
+ // aapt resource value: 0x7F0E011C
+ public const int TextAppearance_Compat_Notification_Media = 2131624220;
+
+ // aapt resource value: 0x7F0E011D
+ public const int TextAppearance_Compat_Notification_Time = 2131624221;
+
+ // aapt resource value: 0x7F0E011E
+ public const int TextAppearance_Compat_Notification_Time_Media = 2131624222;
+
+ // aapt resource value: 0x7F0E011F
+ public const int TextAppearance_Compat_Notification_Title = 2131624223;
+
+ // aapt resource value: 0x7F0E0120
+ public const int TextAppearance_Compat_Notification_Title_Media = 2131624224;
+
+ // aapt resource value: 0x7F0E0121
+ public const int TextAppearance_Design_CollapsingToolbar_Expanded = 2131624225;
+
+ // aapt resource value: 0x7F0E0122
+ public const int TextAppearance_Design_Counter = 2131624226;
+
+ // aapt resource value: 0x7F0E0123
+ public const int TextAppearance_Design_Counter_Overflow = 2131624227;
+
+ // aapt resource value: 0x7F0E0124
+ public const int TextAppearance_Design_Error = 2131624228;
+
+ // aapt resource value: 0x7F0E0125
+ public const int TextAppearance_Design_HelperText = 2131624229;
+
+ // aapt resource value: 0x7F0E0126
+ public const int TextAppearance_Design_Hint = 2131624230;
+
+ // aapt resource value: 0x7F0E0127
+ public const int TextAppearance_Design_Snackbar_Message = 2131624231;
+
+ // aapt resource value: 0x7F0E0128
+ public const int TextAppearance_Design_Tab = 2131624232;
+
+ // aapt resource value: 0x7F0E0129
+ public const int TextAppearance_MaterialComponents_Body1 = 2131624233;
+
+ // aapt resource value: 0x7F0E012A
+ public const int TextAppearance_MaterialComponents_Body2 = 2131624234;
+
+ // aapt resource value: 0x7F0E012B
+ public const int TextAppearance_MaterialComponents_Button = 2131624235;
+
+ // aapt resource value: 0x7F0E012C
+ public const int TextAppearance_MaterialComponents_Caption = 2131624236;
+
+ // aapt resource value: 0x7F0E012D
+ public const int TextAppearance_MaterialComponents_Chip = 2131624237;
+
+ // aapt resource value: 0x7F0E012E
+ public const int TextAppearance_MaterialComponents_Headline1 = 2131624238;
+
+ // aapt resource value: 0x7F0E012F
+ public const int TextAppearance_MaterialComponents_Headline2 = 2131624239;
+
+ // aapt resource value: 0x7F0E0130
+ public const int TextAppearance_MaterialComponents_Headline3 = 2131624240;
+
+ // aapt resource value: 0x7F0E0131
+ public const int TextAppearance_MaterialComponents_Headline4 = 2131624241;
+
+ // aapt resource value: 0x7F0E0132
+ public const int TextAppearance_MaterialComponents_Headline5 = 2131624242;
+
+ // aapt resource value: 0x7F0E0133
+ public const int TextAppearance_MaterialComponents_Headline6 = 2131624243;
+
+ // aapt resource value: 0x7F0E0134
+ public const int TextAppearance_MaterialComponents_Overline = 2131624244;
+
+ // aapt resource value: 0x7F0E0135
+ public const int TextAppearance_MaterialComponents_Subtitle1 = 2131624245;
+
+ // aapt resource value: 0x7F0E0136
+ public const int TextAppearance_MaterialComponents_Subtitle2 = 2131624246;
+
+ // aapt resource value: 0x7F0E0137
+ public const int TextAppearance_MaterialComponents_Tab = 2131624247;
+
+ // aapt resource value: 0x7F0E0138
+ public const int TextAppearance_Widget_AppCompat_ExpandedMenu_Item = 2131624248;
+
+ // aapt resource value: 0x7F0E0139
+ public const int TextAppearance_Widget_AppCompat_Toolbar_Subtitle = 2131624249;
+
+ // aapt resource value: 0x7F0E013A
+ public const int TextAppearance_Widget_AppCompat_Toolbar_Title = 2131624250;
+
+ // aapt resource value: 0x7F0E016B
+ public const int ThemeOverlay_AppCompat = 2131624299;
+
+ // aapt resource value: 0x7F0E016C
+ public const int ThemeOverlay_AppCompat_ActionBar = 2131624300;
+
+ // aapt resource value: 0x7F0E016D
+ public const int ThemeOverlay_AppCompat_Dark = 2131624301;
+
+ // aapt resource value: 0x7F0E016E
+ public const int ThemeOverlay_AppCompat_Dark_ActionBar = 2131624302;
+
+ // aapt resource value: 0x7F0E016F
+ public const int ThemeOverlay_AppCompat_Dialog = 2131624303;
+
+ // aapt resource value: 0x7F0E0170
+ public const int ThemeOverlay_AppCompat_Dialog_Alert = 2131624304;
+
+ // aapt resource value: 0x7F0E0171
+ public const int ThemeOverlay_AppCompat_Light = 2131624305;
+
+ // aapt resource value: 0x7F0E0172
+ public const int ThemeOverlay_MaterialComponents = 2131624306;
+
+ // aapt resource value: 0x7F0E0173
+ public const int ThemeOverlay_MaterialComponents_ActionBar = 2131624307;
+
+ // aapt resource value: 0x7F0E0174
+ public const int ThemeOverlay_MaterialComponents_Dark = 2131624308;
+
+ // aapt resource value: 0x7F0E0175
+ public const int ThemeOverlay_MaterialComponents_Dark_ActionBar = 2131624309;
+
+ // aapt resource value: 0x7F0E0176
+ public const int ThemeOverlay_MaterialComponents_Dialog = 2131624310;
+
+ // aapt resource value: 0x7F0E0177
+ public const int ThemeOverlay_MaterialComponents_Dialog_Alert = 2131624311;
+
+ // aapt resource value: 0x7F0E0178
+ public const int ThemeOverlay_MaterialComponents_Light = 2131624312;
+
+ // aapt resource value: 0x7F0E0179
+ public const int ThemeOverlay_MaterialComponents_TextInputEditText = 2131624313;
+
+ // aapt resource value: 0x7F0E017A
+ public const int ThemeOverlay_MaterialComponents_TextInputEditText_FilledBox = 2131624314;
+
+ // aapt resource value: 0x7F0E017B
+ public const int ThemeOverlay_MaterialComponents_TextInputEditText_FilledBox_Dense = 2131624315;
+
+ // aapt resource value: 0x7F0E017C
+ public const int ThemeOverlay_MaterialComponents_TextInputEditText_OutlinedBox = 2131624316;
+
+ // aapt resource value: 0x7F0E017D
+ public const int ThemeOverlay_MaterialComponents_TextInputEditText_OutlinedBox_Dense = 2131624317;
+
+ // aapt resource value: 0x7F0E013B
+ public const int Theme_AppCompat = 2131624251;
+
+ // aapt resource value: 0x7F0E013C
+ public const int Theme_AppCompat_CompactMenu = 2131624252;
+
+ // aapt resource value: 0x7F0E013D
+ public const int Theme_AppCompat_DayNight = 2131624253;
+
+ // aapt resource value: 0x7F0E013E
+ public const int Theme_AppCompat_DayNight_DarkActionBar = 2131624254;
+
+ // aapt resource value: 0x7F0E013F
+ public const int Theme_AppCompat_DayNight_Dialog = 2131624255;
+
+ // aapt resource value: 0x7F0E0142
+ public const int Theme_AppCompat_DayNight_DialogWhenLarge = 2131624258;
+
+ // aapt resource value: 0x7F0E0140
+ public const int Theme_AppCompat_DayNight_Dialog_Alert = 2131624256;
+
+ // aapt resource value: 0x7F0E0141
+ public const int Theme_AppCompat_DayNight_Dialog_MinWidth = 2131624257;
+
+ // aapt resource value: 0x7F0E0143
+ public const int Theme_AppCompat_DayNight_NoActionBar = 2131624259;
+
+ // aapt resource value: 0x7F0E0144
+ public const int Theme_AppCompat_Dialog = 2131624260;
+
+ // aapt resource value: 0x7F0E0147
+ public const int Theme_AppCompat_DialogWhenLarge = 2131624263;
+
+ // aapt resource value: 0x7F0E0145
+ public const int Theme_AppCompat_Dialog_Alert = 2131624261;
+
+ // aapt resource value: 0x7F0E0146
+ public const int Theme_AppCompat_Dialog_MinWidth = 2131624262;
+
+ // aapt resource value: 0x7F0E0148
+ public const int Theme_AppCompat_Light = 2131624264;
+
+ // aapt resource value: 0x7F0E0149
+ public const int Theme_AppCompat_Light_DarkActionBar = 2131624265;
+
+ // aapt resource value: 0x7F0E014A
+ public const int Theme_AppCompat_Light_Dialog = 2131624266;
+
+ // aapt resource value: 0x7F0E014D
+ public const int Theme_AppCompat_Light_DialogWhenLarge = 2131624269;
+
+ // aapt resource value: 0x7F0E014B
+ public const int Theme_AppCompat_Light_Dialog_Alert = 2131624267;
+
+ // aapt resource value: 0x7F0E014C
+ public const int Theme_AppCompat_Light_Dialog_MinWidth = 2131624268;
+
+ // aapt resource value: 0x7F0E014E
+ public const int Theme_AppCompat_Light_NoActionBar = 2131624270;
+
+ // aapt resource value: 0x7F0E014F
+ public const int Theme_AppCompat_NoActionBar = 2131624271;
+
+ // aapt resource value: 0x7F0E0150
+ public const int Theme_Design = 2131624272;
+
+ // aapt resource value: 0x7F0E0151
+ public const int Theme_Design_BottomSheetDialog = 2131624273;
+
+ // aapt resource value: 0x7F0E0152
+ public const int Theme_Design_Light = 2131624274;
+
+ // aapt resource value: 0x7F0E0153
+ public const int Theme_Design_Light_BottomSheetDialog = 2131624275;
+
+ // aapt resource value: 0x7F0E0154
+ public const int Theme_Design_Light_NoActionBar = 2131624276;
+
+ // aapt resource value: 0x7F0E0155
+ public const int Theme_Design_NoActionBar = 2131624277;
+
+ // aapt resource value: 0x7F0E0156
+ public const int Theme_MaterialComponents = 2131624278;
+
+ // aapt resource value: 0x7F0E0157
+ public const int Theme_MaterialComponents_BottomSheetDialog = 2131624279;
+
+ // aapt resource value: 0x7F0E0158
+ public const int Theme_MaterialComponents_Bridge = 2131624280;
+
+ // aapt resource value: 0x7F0E0159
+ public const int Theme_MaterialComponents_CompactMenu = 2131624281;
+
+ // aapt resource value: 0x7F0E015A
+ public const int Theme_MaterialComponents_Dialog = 2131624282;
+
+ // aapt resource value: 0x7F0E015D
+ public const int Theme_MaterialComponents_DialogWhenLarge = 2131624285;
+
+ // aapt resource value: 0x7F0E015B
+ public const int Theme_MaterialComponents_Dialog_Alert = 2131624283;
+
+ // aapt resource value: 0x7F0E015C
+ public const int Theme_MaterialComponents_Dialog_MinWidth = 2131624284;
+
+ // aapt resource value: 0x7F0E015E
+ public const int Theme_MaterialComponents_Light = 2131624286;
+
+ // aapt resource value: 0x7F0E015F
+ public const int Theme_MaterialComponents_Light_BottomSheetDialog = 2131624287;
+
+ // aapt resource value: 0x7F0E0160
+ public const int Theme_MaterialComponents_Light_Bridge = 2131624288;
+
+ // aapt resource value: 0x7F0E0161
+ public const int Theme_MaterialComponents_Light_DarkActionBar = 2131624289;
+
+ // aapt resource value: 0x7F0E0162
+ public const int Theme_MaterialComponents_Light_DarkActionBar_Bridge = 2131624290;
+
+ // aapt resource value: 0x7F0E0163
+ public const int Theme_MaterialComponents_Light_Dialog = 2131624291;
+
+ // aapt resource value: 0x7F0E0166
+ public const int Theme_MaterialComponents_Light_DialogWhenLarge = 2131624294;
+
+ // aapt resource value: 0x7F0E0164
+ public const int Theme_MaterialComponents_Light_Dialog_Alert = 2131624292;
+
+ // aapt resource value: 0x7F0E0165
+ public const int Theme_MaterialComponents_Light_Dialog_MinWidth = 2131624293;
+
+ // aapt resource value: 0x7F0E0167
+ public const int Theme_MaterialComponents_Light_NoActionBar = 2131624295;
+
+ // aapt resource value: 0x7F0E0168
+ public const int Theme_MaterialComponents_Light_NoActionBar_Bridge = 2131624296;
+
+ // aapt resource value: 0x7F0E0169
+ public const int Theme_MaterialComponents_NoActionBar = 2131624297;
+
+ // aapt resource value: 0x7F0E016A
+ public const int Theme_MaterialComponents_NoActionBar_Bridge = 2131624298;
+
+ // aapt resource value: 0x7F0E017E
+ public const int Widget_AppCompat_ActionBar = 2131624318;
+
+ // aapt resource value: 0x7F0E017F
+ public const int Widget_AppCompat_ActionBar_Solid = 2131624319;
+
+ // aapt resource value: 0x7F0E0180
+ public const int Widget_AppCompat_ActionBar_TabBar = 2131624320;
+
+ // aapt resource value: 0x7F0E0181
+ public const int Widget_AppCompat_ActionBar_TabText = 2131624321;
+
+ // aapt resource value: 0x7F0E0182
+ public const int Widget_AppCompat_ActionBar_TabView = 2131624322;
+
+ // aapt resource value: 0x7F0E0183
+ public const int Widget_AppCompat_ActionButton = 2131624323;
+
+ // aapt resource value: 0x7F0E0184
+ public const int Widget_AppCompat_ActionButton_CloseMode = 2131624324;
+
+ // aapt resource value: 0x7F0E0185
+ public const int Widget_AppCompat_ActionButton_Overflow = 2131624325;
+
+ // aapt resource value: 0x7F0E0186
+ public const int Widget_AppCompat_ActionMode = 2131624326;
+
+ // aapt resource value: 0x7F0E0187
+ public const int Widget_AppCompat_ActivityChooserView = 2131624327;
+
+ // aapt resource value: 0x7F0E0188
+ public const int Widget_AppCompat_AutoCompleteTextView = 2131624328;
+
+ // aapt resource value: 0x7F0E0189
+ public const int Widget_AppCompat_Button = 2131624329;
+
+ // aapt resource value: 0x7F0E018F
+ public const int Widget_AppCompat_ButtonBar = 2131624335;
+
+ // aapt resource value: 0x7F0E0190
+ public const int Widget_AppCompat_ButtonBar_AlertDialog = 2131624336;
+
+ // aapt resource value: 0x7F0E018A
+ public const int Widget_AppCompat_Button_Borderless = 2131624330;
+
+ // aapt resource value: 0x7F0E018B
+ public const int Widget_AppCompat_Button_Borderless_Colored = 2131624331;
+
+ // aapt resource value: 0x7F0E018C
+ public const int Widget_AppCompat_Button_ButtonBar_AlertDialog = 2131624332;
+
+ // aapt resource value: 0x7F0E018D
+ public const int Widget_AppCompat_Button_Colored = 2131624333;
+
+ // aapt resource value: 0x7F0E018E
+ public const int Widget_AppCompat_Button_Small = 2131624334;
+
+ // aapt resource value: 0x7F0E0191
+ public const int Widget_AppCompat_CompoundButton_CheckBox = 2131624337;
+
+ // aapt resource value: 0x7F0E0192
+ public const int Widget_AppCompat_CompoundButton_RadioButton = 2131624338;
+
+ // aapt resource value: 0x7F0E0193
+ public const int Widget_AppCompat_CompoundButton_Switch = 2131624339;
+
+ // aapt resource value: 0x7F0E0194
+ public const int Widget_AppCompat_DrawerArrowToggle = 2131624340;
+
+ // aapt resource value: 0x7F0E0195
+ public const int Widget_AppCompat_DropDownItem_Spinner = 2131624341;
+
+ // aapt resource value: 0x7F0E0196
+ public const int Widget_AppCompat_EditText = 2131624342;
+
+ // aapt resource value: 0x7F0E0197
+ public const int Widget_AppCompat_ImageButton = 2131624343;
+
+ // aapt resource value: 0x7F0E0198
+ public const int Widget_AppCompat_Light_ActionBar = 2131624344;
+
+ // aapt resource value: 0x7F0E0199
+ public const int Widget_AppCompat_Light_ActionBar_Solid = 2131624345;
+
+ // aapt resource value: 0x7F0E019A
+ public const int Widget_AppCompat_Light_ActionBar_Solid_Inverse = 2131624346;
+
+ // aapt resource value: 0x7F0E019B
+ public const int Widget_AppCompat_Light_ActionBar_TabBar = 2131624347;
+
+ // aapt resource value: 0x7F0E019C
+ public const int Widget_AppCompat_Light_ActionBar_TabBar_Inverse = 2131624348;
+
+ // aapt resource value: 0x7F0E019D
+ public const int Widget_AppCompat_Light_ActionBar_TabText = 2131624349;
+
+ // aapt resource value: 0x7F0E019E
+ public const int Widget_AppCompat_Light_ActionBar_TabText_Inverse = 2131624350;
+
+ // aapt resource value: 0x7F0E019F
+ public const int Widget_AppCompat_Light_ActionBar_TabView = 2131624351;
+
+ // aapt resource value: 0x7F0E01A0
+ public const int Widget_AppCompat_Light_ActionBar_TabView_Inverse = 2131624352;
+
+ // aapt resource value: 0x7F0E01A1
+ public const int Widget_AppCompat_Light_ActionButton = 2131624353;
+
+ // aapt resource value: 0x7F0E01A2
+ public const int Widget_AppCompat_Light_ActionButton_CloseMode = 2131624354;
+
+ // aapt resource value: 0x7F0E01A3
+ public const int Widget_AppCompat_Light_ActionButton_Overflow = 2131624355;
+
+ // aapt resource value: 0x7F0E01A4
+ public const int Widget_AppCompat_Light_ActionMode_Inverse = 2131624356;
+
+ // aapt resource value: 0x7F0E01A5
+ public const int Widget_AppCompat_Light_ActivityChooserView = 2131624357;
+
+ // aapt resource value: 0x7F0E01A6
+ public const int Widget_AppCompat_Light_AutoCompleteTextView = 2131624358;
+
+ // aapt resource value: 0x7F0E01A7
+ public const int Widget_AppCompat_Light_DropDownItem_Spinner = 2131624359;
+
+ // aapt resource value: 0x7F0E01A8
+ public const int Widget_AppCompat_Light_ListPopupWindow = 2131624360;
+
+ // aapt resource value: 0x7F0E01A9
+ public const int Widget_AppCompat_Light_ListView_DropDown = 2131624361;
+
+ // aapt resource value: 0x7F0E01AA
+ public const int Widget_AppCompat_Light_PopupMenu = 2131624362;
+
+ // aapt resource value: 0x7F0E01AB
+ public const int Widget_AppCompat_Light_PopupMenu_Overflow = 2131624363;
+
+ // aapt resource value: 0x7F0E01AC
+ public const int Widget_AppCompat_Light_SearchView = 2131624364;
+
+ // aapt resource value: 0x7F0E01AD
+ public const int Widget_AppCompat_Light_Spinner_DropDown_ActionBar = 2131624365;
+
+ // aapt resource value: 0x7F0E01AE
+ public const int Widget_AppCompat_ListMenuView = 2131624366;
+
+ // aapt resource value: 0x7F0E01AF
+ public const int Widget_AppCompat_ListPopupWindow = 2131624367;
+
+ // aapt resource value: 0x7F0E01B0
+ public const int Widget_AppCompat_ListView = 2131624368;
+
+ // aapt resource value: 0x7F0E01B1
+ public const int Widget_AppCompat_ListView_DropDown = 2131624369;
+
+ // aapt resource value: 0x7F0E01B2
+ public const int Widget_AppCompat_ListView_Menu = 2131624370;
+
+ // aapt resource value: 0x7F0E01B3
+ public const int Widget_AppCompat_PopupMenu = 2131624371;
+
+ // aapt resource value: 0x7F0E01B4
+ public const int Widget_AppCompat_PopupMenu_Overflow = 2131624372;
+
+ // aapt resource value: 0x7F0E01B5
+ public const int Widget_AppCompat_PopupWindow = 2131624373;
+
+ // aapt resource value: 0x7F0E01B6
+ public const int Widget_AppCompat_ProgressBar = 2131624374;
+
+ // aapt resource value: 0x7F0E01B7
+ public const int Widget_AppCompat_ProgressBar_Horizontal = 2131624375;
+
+ // aapt resource value: 0x7F0E01B8
+ public const int Widget_AppCompat_RatingBar = 2131624376;
+
+ // aapt resource value: 0x7F0E01B9
+ public const int Widget_AppCompat_RatingBar_Indicator = 2131624377;
+
+ // aapt resource value: 0x7F0E01BA
+ public const int Widget_AppCompat_RatingBar_Small = 2131624378;
+
+ // aapt resource value: 0x7F0E01BB
+ public const int Widget_AppCompat_SearchView = 2131624379;
+
+ // aapt resource value: 0x7F0E01BC
+ public const int Widget_AppCompat_SearchView_ActionBar = 2131624380;
+
+ // aapt resource value: 0x7F0E01BD
+ public const int Widget_AppCompat_SeekBar = 2131624381;
+
+ // aapt resource value: 0x7F0E01BE
+ public const int Widget_AppCompat_SeekBar_Discrete = 2131624382;
+
+ // aapt resource value: 0x7F0E01BF
+ public const int Widget_AppCompat_Spinner = 2131624383;
+
+ // aapt resource value: 0x7F0E01C0
+ public const int Widget_AppCompat_Spinner_DropDown = 2131624384;
+
+ // aapt resource value: 0x7F0E01C1
+ public const int Widget_AppCompat_Spinner_DropDown_ActionBar = 2131624385;
+
+ // aapt resource value: 0x7F0E01C2
+ public const int Widget_AppCompat_Spinner_Underlined = 2131624386;
+
+ // aapt resource value: 0x7F0E01C3
+ public const int Widget_AppCompat_TextView_SpinnerItem = 2131624387;
+
+ // aapt resource value: 0x7F0E01C4
+ public const int Widget_AppCompat_Toolbar = 2131624388;
+
+ // aapt resource value: 0x7F0E01C5
+ public const int Widget_AppCompat_Toolbar_Button_Navigation = 2131624389;
+
+ // aapt resource value: 0x7F0E01C6
+ public const int Widget_Compat_NotificationActionContainer = 2131624390;
+
+ // aapt resource value: 0x7F0E01C7
+ public const int Widget_Compat_NotificationActionText = 2131624391;
+
+ // aapt resource value: 0x7F0E01C8
+ public const int Widget_Design_AppBarLayout = 2131624392;
+
+ // aapt resource value: 0x7F0E01C9
+ public const int Widget_Design_BottomNavigationView = 2131624393;
+
+ // aapt resource value: 0x7F0E01CA
+ public const int Widget_Design_BottomSheet_Modal = 2131624394;
+
+ // aapt resource value: 0x7F0E01CB
+ public const int Widget_Design_CollapsingToolbar = 2131624395;
+
+ // aapt resource value: 0x7F0E01CC
+ public const int Widget_Design_FloatingActionButton = 2131624396;
+
+ // aapt resource value: 0x7F0E01CD
+ public const int Widget_Design_NavigationView = 2131624397;
+
+ // aapt resource value: 0x7F0E01CE
+ public const int Widget_Design_ScrimInsetsFrameLayout = 2131624398;
+
+ // aapt resource value: 0x7F0E01CF
+ public const int Widget_Design_Snackbar = 2131624399;
+
+ // aapt resource value: 0x7F0E01D0
+ public const int Widget_Design_TabLayout = 2131624400;
+
+ // aapt resource value: 0x7F0E01D1
+ public const int Widget_Design_TextInputLayout = 2131624401;
+
+ // aapt resource value: 0x7F0E01D2
+ public const int Widget_MaterialComponents_BottomAppBar = 2131624402;
+
+ // aapt resource value: 0x7F0E01D3
+ public const int Widget_MaterialComponents_BottomAppBar_Colored = 2131624403;
+
+ // aapt resource value: 0x7F0E01D4
+ public const int Widget_MaterialComponents_BottomNavigationView = 2131624404;
+
+ // aapt resource value: 0x7F0E01D5
+ public const int Widget_MaterialComponents_BottomNavigationView_Colored = 2131624405;
+
+ // aapt resource value: 0x7F0E01D6
+ public const int Widget_MaterialComponents_BottomSheet_Modal = 2131624406;
+
+ // aapt resource value: 0x7F0E01D7
+ public const int Widget_MaterialComponents_Button = 2131624407;
+
+ // aapt resource value: 0x7F0E01D8
+ public const int Widget_MaterialComponents_Button_Icon = 2131624408;
+
+ // aapt resource value: 0x7F0E01D9
+ public const int Widget_MaterialComponents_Button_OutlinedButton = 2131624409;
+
+ // aapt resource value: 0x7F0E01DA
+ public const int Widget_MaterialComponents_Button_OutlinedButton_Icon = 2131624410;
+
+ // aapt resource value: 0x7F0E01DB
+ public const int Widget_MaterialComponents_Button_TextButton = 2131624411;
+
+ // aapt resource value: 0x7F0E01DC
+ public const int Widget_MaterialComponents_Button_TextButton_Dialog = 2131624412;
+
+ // aapt resource value: 0x7F0E01DD
+ public const int Widget_MaterialComponents_Button_TextButton_Dialog_Icon = 2131624413;
+
+ // aapt resource value: 0x7F0E01DE
+ public const int Widget_MaterialComponents_Button_TextButton_Icon = 2131624414;
+
+ // aapt resource value: 0x7F0E01DF
+ public const int Widget_MaterialComponents_Button_UnelevatedButton = 2131624415;
+
+ // aapt resource value: 0x7F0E01E0
+ public const int Widget_MaterialComponents_Button_UnelevatedButton_Icon = 2131624416;
+
+ // aapt resource value: 0x7F0E01E1
+ public const int Widget_MaterialComponents_CardView = 2131624417;
+
+ // aapt resource value: 0x7F0E01E6
+ public const int Widget_MaterialComponents_ChipGroup = 2131624422;
+
+ // aapt resource value: 0x7F0E01E2
+ public const int Widget_MaterialComponents_Chip_Action = 2131624418;
+
+ // aapt resource value: 0x7F0E01E3
+ public const int Widget_MaterialComponents_Chip_Choice = 2131624419;
+
+ // aapt resource value: 0x7F0E01E4
+ public const int Widget_MaterialComponents_Chip_Entry = 2131624420;
+
+ // aapt resource value: 0x7F0E01E5
+ public const int Widget_MaterialComponents_Chip_Filter = 2131624421;
+
+ // aapt resource value: 0x7F0E01E7
+ public const int Widget_MaterialComponents_FloatingActionButton = 2131624423;
+
+ // aapt resource value: 0x7F0E01E8
+ public const int Widget_MaterialComponents_NavigationView = 2131624424;
+
+ // aapt resource value: 0x7F0E01E9
+ public const int Widget_MaterialComponents_Snackbar = 2131624425;
+
+ // aapt resource value: 0x7F0E01EA
+ public const int Widget_MaterialComponents_Snackbar_FullWidth = 2131624426;
+
+ // aapt resource value: 0x7F0E01EB
+ public const int Widget_MaterialComponents_TabLayout = 2131624427;
+
+ // aapt resource value: 0x7F0E01EC
+ public const int Widget_MaterialComponents_TabLayout_Colored = 2131624428;
+
+ // aapt resource value: 0x7F0E01ED
+ public const int Widget_MaterialComponents_TextInputEditText_FilledBox = 2131624429;
+
+ // aapt resource value: 0x7F0E01EE
+ public const int Widget_MaterialComponents_TextInputEditText_FilledBox_Dense = 2131624430;
+
+ // aapt resource value: 0x7F0E01EF
+ public const int Widget_MaterialComponents_TextInputEditText_OutlinedBox = 2131624431;
+
+ // aapt resource value: 0x7F0E01F0
+ public const int Widget_MaterialComponents_TextInputEditText_OutlinedBox_Dense = 2131624432;
+
+ // aapt resource value: 0x7F0E01F1
+ public const int Widget_MaterialComponents_TextInputLayout_FilledBox = 2131624433;
+
+ // aapt resource value: 0x7F0E01F2
+ public const int Widget_MaterialComponents_TextInputLayout_FilledBox_Dense = 2131624434;
+
+ // aapt resource value: 0x7F0E01F3
+ public const int Widget_MaterialComponents_TextInputLayout_OutlinedBox = 2131624435;
+
+ // aapt resource value: 0x7F0E01F4
+ public const int Widget_MaterialComponents_TextInputLayout_OutlinedBox_Dense = 2131624436;
+
+ // aapt resource value: 0x7F0E01F5
+ public const int Widget_MaterialComponents_Toolbar = 2131624437;
+
+ // aapt resource value: 0x7F0E01F6
+ public const int Widget_Support_CoordinatorLayout = 2131624438;
+
+ static Style()
+ {
+ global::Android.Runtime.ResourceIdManager.UpdateIdValues();
+ }
+
+ private Style()
+ {
+ }
+ }
+
+ public partial class Styleable
+ {
+
+ // aapt resource value: { 0x7F030031,0x7F030032,0x7F030033,0x7F030091,0x7F030092,0x7F030093,0x7F030094,0x7F030095,0x7F030096,0x7F0300A4,0x7F0300A9,0x7F0300AA,0x7F0300B5,0x7F0300DF,0x7F0300E4,0x7F0300E9,0x7F0300EA,0x7F0300EC,0x7F0300F6,0x7F030100,0x7F030123,0x7F03012F,0x7F030140,0x7F030144,0x7F030145,0x7F030173,0x7F030176,0x7F0301BB,0x7F0301C5 }
+ public static int[] ActionBar = new int[] {
+ 2130903089,
+ 2130903090,
+ 2130903091,
+ 2130903185,
+ 2130903186,
+ 2130903187,
+ 2130903188,
+ 2130903189,
+ 2130903190,
+ 2130903204,
+ 2130903209,
+ 2130903210,
+ 2130903221,
+ 2130903263,
+ 2130903268,
+ 2130903273,
+ 2130903274,
+ 2130903276,
+ 2130903286,
+ 2130903296,
+ 2130903331,
+ 2130903343,
+ 2130903360,
+ 2130903364,
+ 2130903365,
+ 2130903411,
+ 2130903414,
+ 2130903483,
+ 2130903493};
+
+ // aapt resource value: { 0x10100B3 }
+ public static int[] ActionBarLayout = new int[] {
+ 16842931};
+
+ // aapt resource value: 0
+ public const int ActionBarLayout_android_layout_gravity = 0;
+
+ // aapt resource value: 0
+ public const int ActionBar_background = 0;
+
+ // aapt resource value: 1
+ public const int ActionBar_backgroundSplit = 1;
+
+ // aapt resource value: 2
+ public const int ActionBar_backgroundStacked = 2;
+
+ // aapt resource value: 3
+ public const int ActionBar_contentInsetEnd = 3;
+
+ // aapt resource value: 4
+ public const int ActionBar_contentInsetEndWithActions = 4;
+
+ // aapt resource value: 5
+ public const int ActionBar_contentInsetLeft = 5;
+
+ // aapt resource value: 6
+ public const int ActionBar_contentInsetRight = 6;
+
+ // aapt resource value: 7
+ public const int ActionBar_contentInsetStart = 7;
+
+ // aapt resource value: 8
+ public const int ActionBar_contentInsetStartWithNavigation = 8;
+
+ // aapt resource value: 9
+ public const int ActionBar_customNavigationLayout = 9;
+
+ // aapt resource value: 10
+ public const int ActionBar_displayOptions = 10;
+
+ // aapt resource value: 11
+ public const int ActionBar_divider = 11;
+
+ // aapt resource value: 12
+ public const int ActionBar_elevation = 12;
+
+ // aapt resource value: 13
+ public const int ActionBar_height = 13;
+
+ // aapt resource value: 14
+ public const int ActionBar_hideOnContentScroll = 14;
+
+ // aapt resource value: 15
+ public const int ActionBar_homeAsUpIndicator = 15;
+
+ // aapt resource value: 16
+ public const int ActionBar_homeLayout = 16;
+
+ // aapt resource value: 17
+ public const int ActionBar_icon = 17;
+
+ // aapt resource value: 18
+ public const int ActionBar_indeterminateProgressStyle = 18;
+
+ // aapt resource value: 19
+ public const int ActionBar_itemPadding = 19;
+
+ // aapt resource value: 20
+ public const int ActionBar_logo = 20;
+
+ // aapt resource value: 21
+ public const int ActionBar_navigationMode = 21;
+
+ // aapt resource value: 22
+ public const int ActionBar_popupTheme = 22;
+
+ // aapt resource value: 23
+ public const int ActionBar_progressBarPadding = 23;
+
+ // aapt resource value: 24
+ public const int ActionBar_progressBarStyle = 24;
+
+ // aapt resource value: 25
+ public const int ActionBar_subtitle = 25;
+
+ // aapt resource value: 26
+ public const int ActionBar_subtitleTextStyle = 26;
+
+ // aapt resource value: 27
+ public const int ActionBar_title = 27;
+
+ // aapt resource value: 28
+ public const int ActionBar_titleTextStyle = 28;
+
+ // aapt resource value: { 0x101013F }
+ public static int[] ActionMenuItemView = new int[] {
+ 16843071};
+
+ // aapt resource value: 0
+ public const int ActionMenuItemView_android_minWidth = 0;
+
+ // aapt resource value: { 0xFFFFFFFF }
+ public static int[] ActionMenuView = new int[] {
+ -1};
+
+ // aapt resource value: { 0x7F030031,0x7F030032,0x7F03007E,0x7F0300DF,0x7F030176,0x7F0301C5 }
+ public static int[] ActionMode = new int[] {
+ 2130903089,
+ 2130903090,
+ 2130903166,
+ 2130903263,
+ 2130903414,
+ 2130903493};
+
+ // aapt resource value: 0
+ public const int ActionMode_background = 0;
+
+ // aapt resource value: 1
+ public const int ActionMode_backgroundSplit = 1;
+
+ // aapt resource value: 2
+ public const int ActionMode_closeItemLayout = 2;
+
+ // aapt resource value: 3
+ public const int ActionMode_height = 3;
+
+ // aapt resource value: 4
+ public const int ActionMode_subtitleTextStyle = 4;
+
+ // aapt resource value: 5
+ public const int ActionMode_titleTextStyle = 5;
+
+ // aapt resource value: { 0x7F0300BA,0x7F0300F7 }
+ public static int[] ActivityChooserView = new int[] {
+ 2130903226,
+ 2130903287};
+
+ // aapt resource value: 0
+ public const int ActivityChooserView_expandActivityOverflowButtonDrawable = 0;
+
+ // aapt resource value: 1
+ public const int ActivityChooserView_initialActivityCount = 1;
+
+ // aapt resource value: { 0x10100F2,0x7F030052,0x7F030053,0x7F03011A,0x7F03011B,0x7F03012C,0x7F03015B,0x7F03015C }
+ public static int[] AlertDialog = new int[] {
+ 16842994,
+ 2130903122,
+ 2130903123,
+ 2130903322,
+ 2130903323,
+ 2130903340,
+ 2130903387,
+ 2130903388};
+
+ // aapt resource value: 0
+ public const int AlertDialog_android_layout = 0;
+
+ // aapt resource value: 1
+ public const int AlertDialog_buttonIconDimen = 1;
+
+ // aapt resource value: 2
+ public const int AlertDialog_buttonPanelSideLayout = 2;
+
+ // aapt resource value: 3
+ public const int AlertDialog_listItemLayout = 3;
+
+ // aapt resource value: 4
+ public const int AlertDialog_listLayout = 4;
+
+ // aapt resource value: 5
+ public const int AlertDialog_multiChoiceItemLayout = 5;
+
+ // aapt resource value: 6
+ public const int AlertDialog_showTitle = 6;
+
+ // aapt resource value: 7
+ public const int AlertDialog_singleChoiceItemLayout = 7;
+
+ // aapt resource value: { 0x101011C,0x1010194,0x1010195,0x1010196,0x101030C,0x101030D }
+ public static int[] AnimatedStateListDrawableCompat = new int[] {
+ 16843036,
+ 16843156,
+ 16843157,
+ 16843158,
+ 16843532,
+ 16843533};
+
+ // aapt resource value: 3
+ public const int AnimatedStateListDrawableCompat_android_constantSize = 3;
+
+ // aapt resource value: 0
+ public const int AnimatedStateListDrawableCompat_android_dither = 0;
+
+ // aapt resource value: 4
+ public const int AnimatedStateListDrawableCompat_android_enterFadeDuration = 4;
+
+ // aapt resource value: 5
+ public const int AnimatedStateListDrawableCompat_android_exitFadeDuration = 5;
+
+ // aapt resource value: 2
+ public const int AnimatedStateListDrawableCompat_android_variablePadding = 2;
+
+ // aapt resource value: 1
+ public const int AnimatedStateListDrawableCompat_android_visible = 1;
+
+ // aapt resource value: { 0x10100D0,0x1010199 }
+ public static int[] AnimatedStateListDrawableItem = new int[] {
+ 16842960,
+ 16843161};
+
+ // aapt resource value: 1
+ public const int AnimatedStateListDrawableItem_android_drawable = 1;
+
+ // aapt resource value: 0
+ public const int AnimatedStateListDrawableItem_android_id = 0;
+
+ // aapt resource value: { 0x1010199,0x1010449,0x101044A,0x101044B }
+ public static int[] AnimatedStateListDrawableTransition = new int[] {
+ 16843161,
+ 16843849,
+ 16843850,
+ 16843851};
+
+ // aapt resource value: 0
+ public const int AnimatedStateListDrawableTransition_android_drawable = 0;
+
+ // aapt resource value: 2
+ public const int AnimatedStateListDrawableTransition_android_fromId = 2;
+
+ // aapt resource value: 3
+ public const int AnimatedStateListDrawableTransition_android_reversible = 3;
+
+ // aapt resource value: 1
+ public const int AnimatedStateListDrawableTransition_android_toId = 1;
+
+ // aapt resource value: { 0x10100D4,0x101048F,0x1010540,0x7F0300B5,0x7F0300BB,0x7F030115 }
+ public static int[] AppBarLayout = new int[] {
+ 16842964,
+ 16843919,
+ 16844096,
+ 2130903221,
+ 2130903227,
+ 2130903317};
+
+ // aapt resource value: { 0x7F030169,0x7F03016A,0x7F03016B,0x7F03016C }
+ public static int[] AppBarLayoutStates = new int[] {
+ 2130903401,
+ 2130903402,
+ 2130903403,
+ 2130903404};
+
+ // aapt resource value: 0
+ public const int AppBarLayoutStates_state_collapsed = 0;
+
+ // aapt resource value: 1
+ public const int AppBarLayoutStates_state_collapsible = 1;
+
+ // aapt resource value: 2
+ public const int AppBarLayoutStates_state_liftable = 2;
+
+ // aapt resource value: 3
+ public const int AppBarLayoutStates_state_lifted = 3;
+
+ // aapt resource value: 0
+ public const int AppBarLayout_android_background = 0;
+
+ // aapt resource value: 2
+ public const int AppBarLayout_android_keyboardNavigationCluster = 2;
+
+ // aapt resource value: 1
+ public const int AppBarLayout_android_touchscreenBlocksFocus = 1;
+
+ // aapt resource value: 3
+ public const int AppBarLayout_elevation = 3;
+
+ // aapt resource value: 4
+ public const int AppBarLayout_expanded = 4;
+
+ // aapt resource value: { 0x7F030113,0x7F030114 }
+ public static int[] AppBarLayout_Layout = new int[] {
+ 2130903315,
+ 2130903316};
+
+ // aapt resource value: 0
+ public const int AppBarLayout_Layout_layout_scrollFlags = 0;
+
+ // aapt resource value: 1
+ public const int AppBarLayout_Layout_layout_scrollInterpolator = 1;
+
+ // aapt resource value: 5
+ public const int AppBarLayout_liftOnScroll = 5;
+
+ // aapt resource value: { 0x1010119,0x7F030166,0x7F0301B9,0x7F0301BA }
+ public static int[] AppCompatImageView = new int[] {
+ 16843033,
+ 2130903398,
+ 2130903481,
+ 2130903482};
+
+ // aapt resource value: 0
+ public const int AppCompatImageView_android_src = 0;
+
+ // aapt resource value: 1
+ public const int AppCompatImageView_srcCompat = 1;
+
+ // aapt resource value: 2
+ public const int AppCompatImageView_tint = 2;
+
+ // aapt resource value: 3
+ public const int AppCompatImageView_tintMode = 3;
+
+ // aapt resource value: { 0x1010142,0x7F0301B6,0x7F0301B7,0x7F0301B8 }
+ public static int[] AppCompatSeekBar = new int[] {
+ 16843074,
+ 2130903478,
+ 2130903479,
+ 2130903480};
+
+ // aapt resource value: 0
+ public const int AppCompatSeekBar_android_thumb = 0;
+
+ // aapt resource value: 1
+ public const int AppCompatSeekBar_tickMark = 1;
+
+ // aapt resource value: 2
+ public const int AppCompatSeekBar_tickMarkTint = 2;
+
+ // aapt resource value: 3
+ public const int AppCompatSeekBar_tickMarkTintMode = 3;
+
+ // aapt resource value: { 0x1010034,0x101016D,0x101016E,0x101016F,0x1010170,0x1010392,0x1010393 }
+ public static int[] AppCompatTextHelper = new int[] {
+ 16842804,
+ 16843117,
+ 16843118,
+ 16843119,
+ 16843120,
+ 16843666,
+ 16843667};
+
+ // aapt resource value: 2
+ public const int AppCompatTextHelper_android_drawableBottom = 2;
+
+ // aapt resource value: 6
+ public const int AppCompatTextHelper_android_drawableEnd = 6;
+
+ // aapt resource value: 3
+ public const int AppCompatTextHelper_android_drawableLeft = 3;
+
+ // aapt resource value: 4
+ public const int AppCompatTextHelper_android_drawableRight = 4;
+
+ // aapt resource value: 5
+ public const int AppCompatTextHelper_android_drawableStart = 5;
+
+ // aapt resource value: 1
+ public const int AppCompatTextHelper_android_drawableTop = 1;
+
+ // aapt resource value: 0
+ public const int AppCompatTextHelper_android_textAppearance = 0;
+
+ // aapt resource value: { 0x1010034,0x7F03002C,0x7F03002D,0x7F03002E,0x7F03002F,0x7F030030,0x7F0300CE,0x7F0300D1,0x7F030108,0x7F030116,0x7F030196 }
+ public static int[] AppCompatTextView = new int[] {
+ 16842804,
+ 2130903084,
+ 2130903085,
+ 2130903086,
+ 2130903087,
+ 2130903088,
+ 2130903246,
+ 2130903249,
+ 2130903304,
+ 2130903318,
+ 2130903446};
+
+ // aapt resource value: 0
+ public const int AppCompatTextView_android_textAppearance = 0;
+
+ // aapt resource value: 1
+ public const int AppCompatTextView_autoSizeMaxTextSize = 1;
+
+ // aapt resource value: 2
+ public const int AppCompatTextView_autoSizeMinTextSize = 2;
+
+ // aapt resource value: 3
+ public const int AppCompatTextView_autoSizePresetSizes = 3;
+
+ // aapt resource value: 4
+ public const int AppCompatTextView_autoSizeStepGranularity = 4;
+
+ // aapt resource value: 5
+ public const int AppCompatTextView_autoSizeTextType = 5;
+
+ // aapt resource value: 6
+ public const int AppCompatTextView_firstBaselineToTopHeight = 6;
+
+ // aapt resource value: 7
+ public const int AppCompatTextView_fontFamily = 7;
+
+ // aapt resource value: 8
+ public const int AppCompatTextView_lastBaselineToBottomHeight = 8;
+
+ // aapt resource value: 9
+ public const int AppCompatTextView_lineHeight = 9;
+
+ // aapt resource value: 10
+ public const int AppCompatTextView_textAllCaps = 10;
+
+ // aapt resource value: { 0x1010057,0x10100AE,0x7F030000,0x7F030001,0x7F030002,0x7F030003,0x7F030004,0x7F030005,0x7F030006,0x7F030007,0x7F030008,0x7F030009,0x7F03000A,0x7F03000B,0x7F03000C,0x7F03000E,0x7F03000F,0x7F030010,0x7F030011,0x7F030012,0x7F030013,0x7F030014,0x7F030015,0x7F030016,0x7F030017,0x7F030018,0x7F030019,0x7F03001A,0x7F03001B,0x7F03001C,0x7F03001D,0x7F03001E,0x7F030021,0x7F030022,0x7F030023,0x7F030024,0x7F030025,0x7F03002B,0x7F03003E,0x7F03004C,0x7F03004D,0x7F03004E,0x7F03004F,0x7F030050,0x7F030054,0x7F030055,0x7F03005F,0x7F030064,0x7F030084,0x7F030085,0x7F030086,0x7F030087,0x7F030088,0x7F030089,0x7F03008A,0x7F03008B,0x7F03008C,0x7F03008E,0x7F03009D,0x7F0300A6,0x7F0300A7,0x7F0300A8,0x7F0300AB,0x7F0300AD,0x7F0300B0,0x7F0300B1,0x7F0300B2,0x7F0300B3,0x7F0300B4,0x7F0300E9,0x7F0300F5,0x7F030118,0x7F030119,0x7F03011C,0x7F03011D,0x7F03011E,0x7F03011F,0x7F030120,0x7F030121,0x7F030122,0x7F030137,0x7F030138,0x7F030139,0x7F03013F,0x7F030141,0x7F030148,0x7F030149,0x7F03014A,0x7F03014B,0x7F030153,0x7F030154,0x7F030155,0x7F030156,0x7F030163,0x7F030164,0x7F03017A,0x7F0301A1,0x7F0301A2,0x7F0301A3,0x7F0301A4,0x7F0301A6,0x7F0301A7,0x7F0301A8,0x7F0301A9,0x7F0301AC,0x7F0301AD,0x7F0301C7,0x7F0301C8,0x7F0301C9,0x7F0301CA,0x7F0301D1,0x7F0301D3,0x7F0301D4,0x7F0301D5,0x7F0301D6,0x7F0301D7,0x7F0301D8,0x7F0301D9,0x7F0301DA,0x7F0301DB,0x7F0301DC }
+ public static int[] AppCompatTheme = new int[] {
+ 16842839,
+ 16842926,
+ 2130903040,
+ 2130903041,
+ 2130903042,
+ 2130903043,
+ 2130903044,
+ 2130903045,
+ 2130903046,
+ 2130903047,
+ 2130903048,
+ 2130903049,
+ 2130903050,
+ 2130903051,
+ 2130903052,
+ 2130903054,
+ 2130903055,
+ 2130903056,
+ 2130903057,
+ 2130903058,
+ 2130903059,
+ 2130903060,
+ 2130903061,
+ 2130903062,
+ 2130903063,
+ 2130903064,
+ 2130903065,
+ 2130903066,
+ 2130903067,
+ 2130903068,
+ 2130903069,
+ 2130903070,
+ 2130903073,
+ 2130903074,
+ 2130903075,
+ 2130903076,
+ 2130903077,
+ 2130903083,
+ 2130903102,
+ 2130903116,
+ 2130903117,
+ 2130903118,
+ 2130903119,
+ 2130903120,
+ 2130903124,
+ 2130903125,
+ 2130903135,
+ 2130903140,
+ 2130903172,
+ 2130903173,
+ 2130903174,
+ 2130903175,
+ 2130903176,
+ 2130903177,
+ 2130903178,
+ 2130903179,
+ 2130903180,
+ 2130903182,
+ 2130903197,
+ 2130903206,
+ 2130903207,
+ 2130903208,
+ 2130903211,
+ 2130903213,
+ 2130903216,
+ 2130903217,
+ 2130903218,
+ 2130903219,
+ 2130903220,
+ 2130903273,
+ 2130903285,
+ 2130903320,
+ 2130903321,
+ 2130903324,
+ 2130903325,
+ 2130903326,
+ 2130903327,
+ 2130903328,
+ 2130903329,
+ 2130903330,
+ 2130903351,
+ 2130903352,
+ 2130903353,
+ 2130903359,
+ 2130903361,
+ 2130903368,
+ 2130903369,
+ 2130903370,
+ 2130903371,
+ 2130903379,
+ 2130903380,
+ 2130903381,
+ 2130903382,
+ 2130903395,
+ 2130903396,
+ 2130903418,
+ 2130903457,
+ 2130903458,
+ 2130903459,
+ 2130903460,
+ 2130903462,
+ 2130903463,
+ 2130903464,
+ 2130903465,
+ 2130903468,
+ 2130903469,
+ 2130903495,
+ 2130903496,
+ 2130903497,
+ 2130903498,
+ 2130903505,
+ 2130903507,
+ 2130903508,
+ 2130903509,
+ 2130903510,
+ 2130903511,
+ 2130903512,
+ 2130903513,
+ 2130903514,
+ 2130903515,
+ 2130903516};
+
+ // aapt resource value: 2
+ public const int AppCompatTheme_actionBarDivider = 2;
+
+ // aapt resource value: 3
+ public const int AppCompatTheme_actionBarItemBackground = 3;
+
+ // aapt resource value: 4
+ public const int AppCompatTheme_actionBarPopupTheme = 4;
+
+ // aapt resource value: 5
+ public const int AppCompatTheme_actionBarSize = 5;
+
+ // aapt resource value: 6
+ public const int AppCompatTheme_actionBarSplitStyle = 6;
+
+ // aapt resource value: 7
+ public const int AppCompatTheme_actionBarStyle = 7;
+
+ // aapt resource value: 8
+ public const int AppCompatTheme_actionBarTabBarStyle = 8;
+
+ // aapt resource value: 9
+ public const int AppCompatTheme_actionBarTabStyle = 9;
+
+ // aapt resource value: 10
+ public const int AppCompatTheme_actionBarTabTextStyle = 10;
+
+ // aapt resource value: 11
+ public const int AppCompatTheme_actionBarTheme = 11;
+
+ // aapt resource value: 12
+ public const int AppCompatTheme_actionBarWidgetTheme = 12;
+
+ // aapt resource value: 13
+ public const int AppCompatTheme_actionButtonStyle = 13;
+
+ // aapt resource value: 14
+ public const int AppCompatTheme_actionDropDownStyle = 14;
+
+ // aapt resource value: 15
+ public const int AppCompatTheme_actionMenuTextAppearance = 15;
+
+ // aapt resource value: 16
+ public const int AppCompatTheme_actionMenuTextColor = 16;
+
+ // aapt resource value: 17
+ public const int AppCompatTheme_actionModeBackground = 17;
+
+ // aapt resource value: 18
+ public const int AppCompatTheme_actionModeCloseButtonStyle = 18;
+
+ // aapt resource value: 19
+ public const int AppCompatTheme_actionModeCloseDrawable = 19;
+
+ // aapt resource value: 20
+ public const int AppCompatTheme_actionModeCopyDrawable = 20;
+
+ // aapt resource value: 21
+ public const int AppCompatTheme_actionModeCutDrawable = 21;
+
+ // aapt resource value: 22
+ public const int AppCompatTheme_actionModeFindDrawable = 22;
+
+ // aapt resource value: 23
+ public const int AppCompatTheme_actionModePasteDrawable = 23;
+
+ // aapt resource value: 24
+ public const int AppCompatTheme_actionModePopupWindowStyle = 24;
+
+ // aapt resource value: 25
+ public const int AppCompatTheme_actionModeSelectAllDrawable = 25;
+
+ // aapt resource value: 26
+ public const int AppCompatTheme_actionModeShareDrawable = 26;
+
+ // aapt resource value: 27
+ public const int AppCompatTheme_actionModeSplitBackground = 27;
+
+ // aapt resource value: 28
+ public const int AppCompatTheme_actionModeStyle = 28;
+
+ // aapt resource value: 29
+ public const int AppCompatTheme_actionModeWebSearchDrawable = 29;
+
+ // aapt resource value: 30
+ public const int AppCompatTheme_actionOverflowButtonStyle = 30;
+
+ // aapt resource value: 31
+ public const int AppCompatTheme_actionOverflowMenuStyle = 31;
+
+ // aapt resource value: 32
+ public const int AppCompatTheme_activityChooserViewStyle = 32;
+
+ // aapt resource value: 33
+ public const int AppCompatTheme_alertDialogButtonGroupStyle = 33;
+
+ // aapt resource value: 34
+ public const int AppCompatTheme_alertDialogCenterButtons = 34;
+
+ // aapt resource value: 35
+ public const int AppCompatTheme_alertDialogStyle = 35;
+
+ // aapt resource value: 36
+ public const int AppCompatTheme_alertDialogTheme = 36;
+
+ // aapt resource value: 1
+ public const int AppCompatTheme_android_windowAnimationStyle = 1;
+
+ // aapt resource value: 0
+ public const int AppCompatTheme_android_windowIsFloating = 0;
+
+ // aapt resource value: 37
+ public const int AppCompatTheme_autoCompleteTextViewStyle = 37;
+
+ // aapt resource value: 38
+ public const int AppCompatTheme_borderlessButtonStyle = 38;
+
+ // aapt resource value: 39
+ public const int AppCompatTheme_buttonBarButtonStyle = 39;
+
+ // aapt resource value: 40
+ public const int AppCompatTheme_buttonBarNegativeButtonStyle = 40;
+
+ // aapt resource value: 41
+ public const int AppCompatTheme_buttonBarNeutralButtonStyle = 41;
+
+ // aapt resource value: 42
+ public const int AppCompatTheme_buttonBarPositiveButtonStyle = 42;
+
+ // aapt resource value: 43
+ public const int AppCompatTheme_buttonBarStyle = 43;
+
+ // aapt resource value: 44
+ public const int AppCompatTheme_buttonStyle = 44;
+
+ // aapt resource value: 45
+ public const int AppCompatTheme_buttonStyleSmall = 45;
+
+ // aapt resource value: 46
+ public const int AppCompatTheme_checkboxStyle = 46;
+
+ // aapt resource value: 47
+ public const int AppCompatTheme_checkedTextViewStyle = 47;
+
+ // aapt resource value: 48
+ public const int AppCompatTheme_colorAccent = 48;
+
+ // aapt resource value: 49
+ public const int AppCompatTheme_colorBackgroundFloating = 49;
+
+ // aapt resource value: 50
+ public const int AppCompatTheme_colorButtonNormal = 50;
+
+ // aapt resource value: 51
+ public const int AppCompatTheme_colorControlActivated = 51;
+
+ // aapt resource value: 52
+ public const int AppCompatTheme_colorControlHighlight = 52;
+
+ // aapt resource value: 53
+ public const int AppCompatTheme_colorControlNormal = 53;
+
+ // aapt resource value: 54
+ public const int AppCompatTheme_colorError = 54;
+
+ // aapt resource value: 55
+ public const int AppCompatTheme_colorPrimary = 55;
+
+ // aapt resource value: 56
+ public const int AppCompatTheme_colorPrimaryDark = 56;
+
+ // aapt resource value: 57
+ public const int AppCompatTheme_colorSwitchThumbNormal = 57;
+
+ // aapt resource value: 58
+ public const int AppCompatTheme_controlBackground = 58;
+
+ // aapt resource value: 59
+ public const int AppCompatTheme_dialogCornerRadius = 59;
+
+ // aapt resource value: 60
+ public const int AppCompatTheme_dialogPreferredPadding = 60;
+
+ // aapt resource value: 61
+ public const int AppCompatTheme_dialogTheme = 61;
+
+ // aapt resource value: 62
+ public const int AppCompatTheme_dividerHorizontal = 62;
+
+ // aapt resource value: 63
+ public const int AppCompatTheme_dividerVertical = 63;
+
+ // aapt resource value: 65
+ public const int AppCompatTheme_dropdownListPreferredItemHeight = 65;
+
+ // aapt resource value: 64
+ public const int AppCompatTheme_dropDownListViewStyle = 64;
+
+ // aapt resource value: 66
+ public const int AppCompatTheme_editTextBackground = 66;
+
+ // aapt resource value: 67
+ public const int AppCompatTheme_editTextColor = 67;
+
+ // aapt resource value: 68
+ public const int AppCompatTheme_editTextStyle = 68;
+
+ // aapt resource value: 69
+ public const int AppCompatTheme_homeAsUpIndicator = 69;
+
+ // aapt resource value: 70
+ public const int AppCompatTheme_imageButtonStyle = 70;
+
+ // aapt resource value: 71
+ public const int AppCompatTheme_listChoiceBackgroundIndicator = 71;
+
+ // aapt resource value: 72
+ public const int AppCompatTheme_listDividerAlertDialog = 72;
+
+ // aapt resource value: 73
+ public const int AppCompatTheme_listMenuViewStyle = 73;
+
+ // aapt resource value: 74
+ public const int AppCompatTheme_listPopupWindowStyle = 74;
+
+ // aapt resource value: 75
+ public const int AppCompatTheme_listPreferredItemHeight = 75;
+
+ // aapt resource value: 76
+ public const int AppCompatTheme_listPreferredItemHeightLarge = 76;
+
+ // aapt resource value: 77
+ public const int AppCompatTheme_listPreferredItemHeightSmall = 77;
+
+ // aapt resource value: 78
+ public const int AppCompatTheme_listPreferredItemPaddingLeft = 78;
+
+ // aapt resource value: 79
+ public const int AppCompatTheme_listPreferredItemPaddingRight = 79;
+
+ // aapt resource value: 80
+ public const int AppCompatTheme_panelBackground = 80;
+
+ // aapt resource value: 81
+ public const int AppCompatTheme_panelMenuListTheme = 81;
+
+ // aapt resource value: 82
+ public const int AppCompatTheme_panelMenuListWidth = 82;
+
+ // aapt resource value: 83
+ public const int AppCompatTheme_popupMenuStyle = 83;
+
+ // aapt resource value: 84
+ public const int AppCompatTheme_popupWindowStyle = 84;
+
+ // aapt resource value: 85
+ public const int AppCompatTheme_radioButtonStyle = 85;
+
+ // aapt resource value: 86
+ public const int AppCompatTheme_ratingBarStyle = 86;
+
+ // aapt resource value: 87
+ public const int AppCompatTheme_ratingBarStyleIndicator = 87;
+
+ // aapt resource value: 88
+ public const int AppCompatTheme_ratingBarStyleSmall = 88;
+
+ // aapt resource value: 89
+ public const int AppCompatTheme_searchViewStyle = 89;
+
+ // aapt resource value: 90
+ public const int AppCompatTheme_seekBarStyle = 90;
+
+ // aapt resource value: 91
+ public const int AppCompatTheme_selectableItemBackground = 91;
+
+ // aapt resource value: 92
+ public const int AppCompatTheme_selectableItemBackgroundBorderless = 92;
+
+ // aapt resource value: 93
+ public const int AppCompatTheme_spinnerDropDownItemStyle = 93;
+
+ // aapt resource value: 94
+ public const int AppCompatTheme_spinnerStyle = 94;
+
+ // aapt resource value: 95
+ public const int AppCompatTheme_switchStyle = 95;
+
+ // aapt resource value: 96
+ public const int AppCompatTheme_textAppearanceLargePopupMenu = 96;
+
+ // aapt resource value: 97
+ public const int AppCompatTheme_textAppearanceListItem = 97;
+
+ // aapt resource value: 98
+ public const int AppCompatTheme_textAppearanceListItemSecondary = 98;
+
+ // aapt resource value: 99
+ public const int AppCompatTheme_textAppearanceListItemSmall = 99;
+
+ // aapt resource value: 100
+ public const int AppCompatTheme_textAppearancePopupMenuHeader = 100;
+
+ // aapt resource value: 101
+ public const int AppCompatTheme_textAppearanceSearchResultSubtitle = 101;
+
+ // aapt resource value: 102
+ public const int AppCompatTheme_textAppearanceSearchResultTitle = 102;
+
+ // aapt resource value: 103
+ public const int AppCompatTheme_textAppearanceSmallPopupMenu = 103;
+
+ // aapt resource value: 104
+ public const int AppCompatTheme_textColorAlertDialogListItem = 104;
+
+ // aapt resource value: 105
+ public const int AppCompatTheme_textColorSearchUrl = 105;
+
+ // aapt resource value: 106
+ public const int AppCompatTheme_toolbarNavigationButtonStyle = 106;
+
+ // aapt resource value: 107
+ public const int AppCompatTheme_toolbarStyle = 107;
+
+ // aapt resource value: 108
+ public const int AppCompatTheme_tooltipForegroundColor = 108;
+
+ // aapt resource value: 109
+ public const int AppCompatTheme_tooltipFrameBackground = 109;
+
+ // aapt resource value: 110
+ public const int AppCompatTheme_viewInflaterClass = 110;
+
+ // aapt resource value: 111
+ public const int AppCompatTheme_windowActionBar = 111;
+
+ // aapt resource value: 112
+ public const int AppCompatTheme_windowActionBarOverlay = 112;
+
+ // aapt resource value: 113
+ public const int AppCompatTheme_windowActionModeOverlay = 113;
+
+ // aapt resource value: 114
+ public const int AppCompatTheme_windowFixedHeightMajor = 114;
+
+ // aapt resource value: 115
+ public const int AppCompatTheme_windowFixedHeightMinor = 115;
+
+ // aapt resource value: 116
+ public const int AppCompatTheme_windowFixedWidthMajor = 116;
+
+ // aapt resource value: 117
+ public const int AppCompatTheme_windowFixedWidthMinor = 117;
+
+ // aapt resource value: 118
+ public const int AppCompatTheme_windowMinWidthMajor = 118;
+
+ // aapt resource value: 119
+ public const int AppCompatTheme_windowMinWidthMinor = 119;
+
+ // aapt resource value: 120
+ public const int AppCompatTheme_windowNoTitle = 120;
+
+ // aapt resource value: { 0x7F030034,0x7F0300C3,0x7F0300C4,0x7F0300C5,0x7F0300C6,0x7F0300E5 }
+ public static int[] BottomAppBar = new int[] {
+ 2130903092,
+ 2130903235,
+ 2130903236,
+ 2130903237,
+ 2130903238,
+ 2130903269};
+
+ // aapt resource value: 0
+ public const int BottomAppBar_backgroundTint = 0;
+
+ // aapt resource value: 1
+ public const int BottomAppBar_fabAlignmentMode = 1;
+
+ // aapt resource value: 2
+ public const int BottomAppBar_fabCradleMargin = 2;
+
+ // aapt resource value: 3
+ public const int BottomAppBar_fabCradleRoundedCornerRadius = 3;
+
+ // aapt resource value: 4
+ public const int BottomAppBar_fabCradleVerticalOffset = 4;
+
+ // aapt resource value: 5
+ public const int BottomAppBar_hideOnScroll = 5;
+
+ // aapt resource value: { 0x7F0300B5,0x7F0300FA,0x7F0300FC,0x7F0300FE,0x7F0300FF,0x7F030103,0x7F030104,0x7F030105,0x7F030107,0x7F03012B }
+ public static int[] BottomNavigationView = new int[] {
+ 2130903221,
+ 2130903290,
+ 2130903292,
+ 2130903294,
+ 2130903295,
+ 2130903299,
+ 2130903300,
+ 2130903301,
+ 2130903303,
+ 2130903339};
+
+ // aapt resource value: 0
+ public const int BottomNavigationView_elevation = 0;
+
+ // aapt resource value: 1
+ public const int BottomNavigationView_itemBackground = 1;
+
+ // aapt resource value: 2
+ public const int BottomNavigationView_itemHorizontalTranslationEnabled = 2;
+
+ // aapt resource value: 3
+ public const int BottomNavigationView_itemIconSize = 3;
+
+ // aapt resource value: 4
+ public const int BottomNavigationView_itemIconTint = 4;
+
+ // aapt resource value: 5
+ public const int BottomNavigationView_itemTextAppearanceActive = 5;
+
+ // aapt resource value: 6
+ public const int BottomNavigationView_itemTextAppearanceInactive = 6;
+
+ // aapt resource value: 7
+ public const int BottomNavigationView_itemTextColor = 7;
+
+ // aapt resource value: 8
+ public const int BottomNavigationView_labelVisibilityMode = 8;
+
+ // aapt resource value: 9
+ public const int BottomNavigationView_menu = 9;
+
+ // aapt resource value: { 0x7F030038,0x7F030039,0x7F03003B,0x7F03003C }
+ public static int[] BottomSheetBehavior_Layout = new int[] {
+ 2130903096,
+ 2130903097,
+ 2130903099,
+ 2130903100};
+
+ // aapt resource value: 0
+ public const int BottomSheetBehavior_Layout_behavior_fitToContents = 0;
+
+ // aapt resource value: 1
+ public const int BottomSheetBehavior_Layout_behavior_hideable = 1;
+
+ // aapt resource value: 2
+ public const int BottomSheetBehavior_Layout_behavior_peekHeight = 2;
+
+ // aapt resource value: 3
+ public const int BottomSheetBehavior_Layout_behavior_skipCollapsed = 3;
+
+ // aapt resource value: { 0x7F030026 }
+ public static int[] ButtonBarLayout = new int[] {
+ 2130903078};
+
+ // aapt resource value: 0
+ public const int ButtonBarLayout_allowStacking = 0;
+
+ // aapt resource value: { 0x101013F,0x1010140,0x7F030058,0x7F030059,0x7F03005A,0x7F03005B,0x7F03005C,0x7F03005D,0x7F030097,0x7F030098,0x7F030099,0x7F03009A,0x7F03009B }
+ public static int[] CardView = new int[] {
+ 16843071,
+ 16843072,
+ 2130903128,
+ 2130903129,
+ 2130903130,
+ 2130903131,
+ 2130903132,
+ 2130903133,
+ 2130903191,
+ 2130903192,
+ 2130903193,
+ 2130903194,
+ 2130903195};
+
+ // aapt resource value: 1
+ public const int CardView_android_minHeight = 1;
+
+ // aapt resource value: 0
+ public const int CardView_android_minWidth = 0;
+
+ // aapt resource value: 2
+ public const int CardView_cardBackgroundColor = 2;
+
+ // aapt resource value: 3
+ public const int CardView_cardCornerRadius = 3;
+
+ // aapt resource value: 4
+ public const int CardView_cardElevation = 4;
+
+ // aapt resource value: 5
+ public const int CardView_cardMaxElevation = 5;
+
+ // aapt resource value: 6
+ public const int CardView_cardPreventCornerOverlap = 6;
+
+ // aapt resource value: 7
+ public const int CardView_cardUseCompatPadding = 7;
+
+ // aapt resource value: 8
+ public const int CardView_contentPadding = 8;
+
+ // aapt resource value: 9
+ public const int CardView_contentPaddingBottom = 9;
+
+ // aapt resource value: 10
+ public const int CardView_contentPaddingLeft = 10;
+
+ // aapt resource value: 11
+ public const int CardView_contentPaddingRight = 11;
+
+ // aapt resource value: 12
+ public const int CardView_contentPaddingTop = 12;
+
+ // aapt resource value: { 0x1010034,0x10100AB,0x101011F,0x101014F,0x10101E5,0x7F030061,0x7F030062,0x7F030063,0x7F030065,0x7F030066,0x7F030067,0x7F030069,0x7F03006A,0x7F03006B,0x7F03006C,0x7F03006D,0x7F03006E,0x7F030073,0x7F030074,0x7F030075,0x7F030077,0x7F030078,0x7F030079,0x7F03007A,0x7F03007B,0x7F03007C,0x7F03007D,0x7F0300E3,0x7F0300ED,0x7F0300F1,0x7F03014D,0x7F030159,0x7F0301AE,0x7F0301B0 }
+ public static int[] Chip = new int[] {
+ 16842804,
+ 16842923,
+ 16843039,
+ 16843087,
+ 16843237,
+ 2130903137,
+ 2130903138,
+ 2130903139,
+ 2130903141,
+ 2130903142,
+ 2130903143,
+ 2130903145,
+ 2130903146,
+ 2130903147,
+ 2130903148,
+ 2130903149,
+ 2130903150,
+ 2130903155,
+ 2130903156,
+ 2130903157,
+ 2130903159,
+ 2130903160,
+ 2130903161,
+ 2130903162,
+ 2130903163,
+ 2130903164,
+ 2130903165,
+ 2130903267,
+ 2130903277,
+ 2130903281,
+ 2130903373,
+ 2130903385,
+ 2130903470,
+ 2130903472};
+
+ // aapt resource value: { 0x7F030060,0x7F03006F,0x7F030070,0x7F030071,0x7F03015D,0x7F03015E }
+ public static int[] ChipGroup = new int[] {
+ 2130903136,
+ 2130903151,
+ 2130903152,
+ 2130903153,
+ 2130903389,
+ 2130903390};
+
+ // aapt resource value: 0
+ public const int ChipGroup_checkedChip = 0;
+
+ // aapt resource value: 1
+ public const int ChipGroup_chipSpacing = 1;
+
+ // aapt resource value: 2
+ public const int ChipGroup_chipSpacingHorizontal = 2;
+
+ // aapt resource value: 3
+ public const int ChipGroup_chipSpacingVertical = 3;
+
+ // aapt resource value: 4
+ public const int ChipGroup_singleLine = 4;
+
+ // aapt resource value: 5
+ public const int ChipGroup_singleSelection = 5;
+
+ // aapt resource value: 4
+ public const int Chip_android_checkable = 4;
+
+ // aapt resource value: 1
+ public const int Chip_android_ellipsize = 1;
+
+ // aapt resource value: 2
+ public const int Chip_android_maxWidth = 2;
+
+ // aapt resource value: 3
+ public const int Chip_android_text = 3;
+
+ // aapt resource value: 0
+ public const int Chip_android_textAppearance = 0;
+
+ // aapt resource value: 5
+ public const int Chip_checkedIcon = 5;
+
+ // aapt resource value: 6
+ public const int Chip_checkedIconEnabled = 6;
+
+ // aapt resource value: 7
+ public const int Chip_checkedIconVisible = 7;
+
+ // aapt resource value: 8
+ public const int Chip_chipBackgroundColor = 8;
+
+ // aapt resource value: 9
+ public const int Chip_chipCornerRadius = 9;
+
+ // aapt resource value: 10
+ public const int Chip_chipEndPadding = 10;
+
+ // aapt resource value: 11
+ public const int Chip_chipIcon = 11;
+
+ // aapt resource value: 12
+ public const int Chip_chipIconEnabled = 12;
+
+ // aapt resource value: 13
+ public const int Chip_chipIconSize = 13;
+
+ // aapt resource value: 14
+ public const int Chip_chipIconTint = 14;
+
+ // aapt resource value: 15
+ public const int Chip_chipIconVisible = 15;
+
+ // aapt resource value: 16
+ public const int Chip_chipMinHeight = 16;
+
+ // aapt resource value: 17
+ public const int Chip_chipStartPadding = 17;
+
+ // aapt resource value: 18
+ public const int Chip_chipStrokeColor = 18;
+
+ // aapt resource value: 19
+ public const int Chip_chipStrokeWidth = 19;
+
+ // aapt resource value: 20
+ public const int Chip_closeIcon = 20;
+
+ // aapt resource value: 21
+ public const int Chip_closeIconEnabled = 21;
+
+ // aapt resource value: 22
+ public const int Chip_closeIconEndPadding = 22;
+
+ // aapt resource value: 23
+ public const int Chip_closeIconSize = 23;
+
+ // aapt resource value: 24
+ public const int Chip_closeIconStartPadding = 24;
+
+ // aapt resource value: 25
+ public const int Chip_closeIconTint = 25;
+
+ // aapt resource value: 26
+ public const int Chip_closeIconVisible = 26;
+
+ // aapt resource value: 27
+ public const int Chip_hideMotionSpec = 27;
+
+ // aapt resource value: 28
+ public const int Chip_iconEndPadding = 28;
+
+ // aapt resource value: 29
+ public const int Chip_iconStartPadding = 29;
+
+ // aapt resource value: 30
+ public const int Chip_rippleColor = 30;
+
+ // aapt resource value: 31
+ public const int Chip_showMotionSpec = 31;
+
+ // aapt resource value: 32
+ public const int Chip_textEndPadding = 32;
+
+ // aapt resource value: 33
+ public const int Chip_textStartPadding = 33;
+
+ // aapt resource value: { 0x7F030081,0x7F030082,0x7F03009C,0x7F0300BC,0x7F0300BD,0x7F0300BE,0x7F0300BF,0x7F0300C0,0x7F0300C1,0x7F0300C2,0x7F03014E,0x7F030150,0x7F03016E,0x7F0301BB,0x7F0301BC,0x7F0301C6 }
+ public static int[] CollapsingToolbarLayout = new int[] {
+ 2130903169,
+ 2130903170,
+ 2130903196,
+ 2130903228,
+ 2130903229,
+ 2130903230,
+ 2130903231,
+ 2130903232,
+ 2130903233,
+ 2130903234,
+ 2130903374,
+ 2130903376,
+ 2130903406,
+ 2130903483,
+ 2130903484,
+ 2130903494};
+
+ // aapt resource value: 0
+ public const int CollapsingToolbarLayout_collapsedTitleGravity = 0;
+
+ // aapt resource value: 1
+ public const int CollapsingToolbarLayout_collapsedTitleTextAppearance = 1;
+
+ // aapt resource value: 2
+ public const int CollapsingToolbarLayout_contentScrim = 2;
+
+ // aapt resource value: 3
+ public const int CollapsingToolbarLayout_expandedTitleGravity = 3;
+
+ // aapt resource value: 4
+ public const int CollapsingToolbarLayout_expandedTitleMargin = 4;
+
+ // aapt resource value: 5
+ public const int CollapsingToolbarLayout_expandedTitleMarginBottom = 5;
+
+ // aapt resource value: 6
+ public const int CollapsingToolbarLayout_expandedTitleMarginEnd = 6;
+
+ // aapt resource value: 7
+ public const int CollapsingToolbarLayout_expandedTitleMarginStart = 7;
+
+ // aapt resource value: 8
+ public const int CollapsingToolbarLayout_expandedTitleMarginTop = 8;
+
+ // aapt resource value: 9
+ public const int CollapsingToolbarLayout_expandedTitleTextAppearance = 9;
+
+ // aapt resource value: { 0x7F03010E,0x7F03010F }
+ public static int[] CollapsingToolbarLayout_Layout = new int[] {
+ 2130903310,
+ 2130903311};
+
+ // aapt resource value: 0
+ public const int CollapsingToolbarLayout_Layout_layout_collapseMode = 0;
+
+ // aapt resource value: 1
+ public const int CollapsingToolbarLayout_Layout_layout_collapseParallaxMultiplier = 1;
+
+ // aapt resource value: 10
+ public const int CollapsingToolbarLayout_scrimAnimationDuration = 10;
+
+ // aapt resource value: 11
+ public const int CollapsingToolbarLayout_scrimVisibleHeightTrigger = 11;
+
+ // aapt resource value: 12
+ public const int CollapsingToolbarLayout_statusBarScrim = 12;
+
+ // aapt resource value: 13
+ public const int CollapsingToolbarLayout_title = 13;
+
+ // aapt resource value: 14
+ public const int CollapsingToolbarLayout_titleEnabled = 14;
+
+ // aapt resource value: 15
+ public const int CollapsingToolbarLayout_toolbarId = 15;
+
+ // aapt resource value: { 0x10101A5,0x101031F,0x7F030027 }
+ public static int[] ColorStateListItem = new int[] {
+ 16843173,
+ 16843551,
+ 2130903079};
+
+ // aapt resource value: 2
+ public const int ColorStateListItem_alpha = 2;
+
+ // aapt resource value: 1
+ public const int ColorStateListItem_android_alpha = 1;
+
+ // aapt resource value: 0
+ public const int ColorStateListItem_android_color = 0;
+
+ // aapt resource value: { 0x1010107,0x7F030056,0x7F030057 }
+ public static int[] CompoundButton = new int[] {
+ 16843015,
+ 2130903126,
+ 2130903127};
+
+ // aapt resource value: 0
+ public const int CompoundButton_android_button = 0;
+
+ // aapt resource value: 1
+ public const int CompoundButton_buttonTint = 1;
+
+ // aapt resource value: 2
+ public const int CompoundButton_buttonTintMode = 2;
+
+ // aapt resource value: { 0x7F030106,0x7F03016D }
+ public static int[] CoordinatorLayout = new int[] {
+ 2130903302,
+ 2130903405};
+
+ // aapt resource value: 0
+ public const int CoordinatorLayout_keylines = 0;
+
+ // aapt resource value: { 0x10100B3,0x7F03010B,0x7F03010C,0x7F03010D,0x7F030110,0x7F030111,0x7F030112 }
+ public static int[] CoordinatorLayout_Layout = new int[] {
+ 16842931,
+ 2130903307,
+ 2130903308,
+ 2130903309,
+ 2130903312,
+ 2130903313,
+ 2130903314};
+
+ // aapt resource value: 0
+ public const int CoordinatorLayout_Layout_android_layout_gravity = 0;
+
+ // aapt resource value: 1
+ public const int CoordinatorLayout_Layout_layout_anchor = 1;
+
+ // aapt resource value: 2
+ public const int CoordinatorLayout_Layout_layout_anchorGravity = 2;
+
+ // aapt resource value: 3
+ public const int CoordinatorLayout_Layout_layout_behavior = 3;
+
+ // aapt resource value: 4
+ public const int CoordinatorLayout_Layout_layout_dodgeInsetEdges = 4;
+
+ // aapt resource value: 5
+ public const int CoordinatorLayout_Layout_layout_insetEdge = 5;
+
+ // aapt resource value: 6
+ public const int CoordinatorLayout_Layout_layout_keyline = 6;
+
+ // aapt resource value: 1
+ public const int CoordinatorLayout_statusBarBackground = 1;
+
+ // aapt resource value: { 0x7F030041,0x7F030042 }
+ public static int[] DesignTheme = new int[] {
+ 2130903105,
+ 2130903106};
+
+ // aapt resource value: 0
+ public const int DesignTheme_bottomSheetDialogTheme = 0;
+
+ // aapt resource value: 1
+ public const int DesignTheme_bottomSheetStyle = 1;
+
+ // aapt resource value: { 0x7F030029,0x7F03002A,0x7F030036,0x7F030083,0x7F0300AE,0x7F0300DC,0x7F030162,0x7F0301B2 }
+ public static int[] DrawerArrowToggle = new int[] {
+ 2130903081,
+ 2130903082,
+ 2130903094,
+ 2130903171,
+ 2130903214,
+ 2130903260,
+ 2130903394,
+ 2130903474};
+
+ // aapt resource value: 0
+ public const int DrawerArrowToggle_arrowHeadLength = 0;
+
+ // aapt resource value: 1
+ public const int DrawerArrowToggle_arrowShaftLength = 1;
+
+ // aapt resource value: 2
+ public const int DrawerArrowToggle_barLength = 2;
+
+ // aapt resource value: 3
+ public const int DrawerArrowToggle_color = 3;
+
+ // aapt resource value: 4
+ public const int DrawerArrowToggle_drawableSize = 4;
+
+ // aapt resource value: 5
+ public const int DrawerArrowToggle_gapBetweenBars = 5;
+
+ // aapt resource value: 6
+ public const int DrawerArrowToggle_spinBars = 6;
+
+ // aapt resource value: 7
+ public const int DrawerArrowToggle_thickness = 7;
+
+ // aapt resource value: { 0x7F030034,0x7F030035,0x7F03003D,0x7F0300B5,0x7F0300C7,0x7F0300C8,0x7F0300E3,0x7F0300EB,0x7F030129,0x7F030143,0x7F03014D,0x7F030159,0x7F0301D0 }
+ public static int[] FloatingActionButton = new int[] {
+ 2130903092,
+ 2130903093,
+ 2130903101,
+ 2130903221,
+ 2130903239,
+ 2130903240,
+ 2130903267,
+ 2130903275,
+ 2130903337,
+ 2130903363,
+ 2130903373,
+ 2130903385,
+ 2130903504};
+
+ // aapt resource value: 0
+ public const int FloatingActionButton_backgroundTint = 0;
+
+ // aapt resource value: 1
+ public const int FloatingActionButton_backgroundTintMode = 1;
+
+ // aapt resource value: { 0x7F030037 }
+ public static int[] FloatingActionButton_Behavior_Layout = new int[] {
+ 2130903095};
+
+ // aapt resource value: 0
+ public const int FloatingActionButton_Behavior_Layout_behavior_autoHide = 0;
+
+ // aapt resource value: 2
+ public const int FloatingActionButton_borderWidth = 2;
+
+ // aapt resource value: 3
+ public const int FloatingActionButton_elevation = 3;
+
+ // aapt resource value: 4
+ public const int FloatingActionButton_fabCustomSize = 4;
+
+ // aapt resource value: 5
+ public const int FloatingActionButton_fabSize = 5;
+
+ // aapt resource value: 6
+ public const int FloatingActionButton_hideMotionSpec = 6;
+
+ // aapt resource value: 7
+ public const int FloatingActionButton_hoveredFocusedTranslationZ = 7;
+
+ // aapt resource value: 8
+ public const int FloatingActionButton_maxImageSize = 8;
+
+ // aapt resource value: 9
+ public const int FloatingActionButton_pressedTranslationZ = 9;
+
+ // aapt resource value: 10
+ public const int FloatingActionButton_rippleColor = 10;
+
+ // aapt resource value: 11
+ public const int FloatingActionButton_showMotionSpec = 11;
+
+ // aapt resource value: 12
+ public const int FloatingActionButton_useCompatPadding = 12;
+
+ // aapt resource value: { 0x7F030101,0x7F030117 }
+ public static int[] FlowLayout = new int[] {
+ 2130903297,
+ 2130903319};
+
+ // aapt resource value: 0
+ public const int FlowLayout_itemSpacing = 0;
+
+ // aapt resource value: 1
+ public const int FlowLayout_lineSpacing = 1;
+
+ // aapt resource value: { 0x7F0300D2,0x7F0300D3,0x7F0300D4,0x7F0300D5,0x7F0300D6,0x7F0300D7 }
+ public static int[] FontFamily = new int[] {
+ 2130903250,
+ 2130903251,
+ 2130903252,
+ 2130903253,
+ 2130903254,
+ 2130903255};
+
+ // aapt resource value: { 0x1010532,0x1010533,0x101053F,0x101056F,0x1010570,0x7F0300D0,0x7F0300D8,0x7F0300D9,0x7F0300DA,0x7F0301CF }
+ public static int[] FontFamilyFont = new int[] {
+ 16844082,
+ 16844083,
+ 16844095,
+ 16844143,
+ 16844144,
+ 2130903248,
+ 2130903256,
+ 2130903257,
+ 2130903258,
+ 2130903503};
+
+ // aapt resource value: 0
+ public const int FontFamilyFont_android_font = 0;
+
+ // aapt resource value: 2
+ public const int FontFamilyFont_android_fontStyle = 2;
+
+ // aapt resource value: 4
+ public const int FontFamilyFont_android_fontVariationSettings = 4;
+
+ // aapt resource value: 1
+ public const int FontFamilyFont_android_fontWeight = 1;
+
+ // aapt resource value: 3
+ public const int FontFamilyFont_android_ttcIndex = 3;
+
+ // aapt resource value: 5
+ public const int FontFamilyFont_font = 5;
+
+ // aapt resource value: 6
+ public const int FontFamilyFont_fontStyle = 6;
+
+ // aapt resource value: 7
+ public const int FontFamilyFont_fontVariationSettings = 7;
+
+ // aapt resource value: 8
+ public const int FontFamilyFont_fontWeight = 8;
+
+ // aapt resource value: 9
+ public const int FontFamilyFont_ttcIndex = 9;
+
+ // aapt resource value: 0
+ public const int FontFamily_fontProviderAuthority = 0;
+
+ // aapt resource value: 1
+ public const int FontFamily_fontProviderCerts = 1;
+
+ // aapt resource value: 2
+ public const int FontFamily_fontProviderFetchStrategy = 2;
+
+ // aapt resource value: 3
+ public const int FontFamily_fontProviderFetchTimeout = 3;
+
+ // aapt resource value: 4
+ public const int FontFamily_fontProviderPackage = 4;
+
+ // aapt resource value: 5
+ public const int FontFamily_fontProviderQuery = 5;
+
+ // aapt resource value: { 0x1010109,0x1010200,0x7F0300DB }
+ public static int[] ForegroundLinearLayout = new int[] {
+ 16843017,
+ 16843264,
+ 2130903259};
+
+ // aapt resource value: 0
+ public const int ForegroundLinearLayout_android_foreground = 0;
+
+ // aapt resource value: 1
+ public const int ForegroundLinearLayout_android_foregroundGravity = 1;
+
+ // aapt resource value: 2
+ public const int ForegroundLinearLayout_foregroundInsidePadding = 2;
+
+ // aapt resource value: { 0x101019D,0x101019E,0x10101A1,0x10101A2,0x10101A3,0x10101A4,0x1010201,0x101020B,0x1010510,0x1010511,0x1010512,0x1010513 }
+ public static int[] GradientColor = new int[] {
+ 16843165,
+ 16843166,
+ 16843169,
+ 16843170,
+ 16843171,
+ 16843172,
+ 16843265,
+ 16843275,
+ 16844048,
+ 16844049,
+ 16844050,
+ 16844051};
+
+ // aapt resource value: { 0x10101A5,0x1010514 }
+ public static int[] GradientColorItem = new int[] {
+ 16843173,
+ 16844052};
+
+ // aapt resource value: 0
+ public const int GradientColorItem_android_color = 0;
+
+ // aapt resource value: 1
+ public const int GradientColorItem_android_offset = 1;
+
+ // aapt resource value: 7
+ public const int GradientColor_android_centerColor = 7;
+
+ // aapt resource value: 3
+ public const int GradientColor_android_centerX = 3;
+
+ // aapt resource value: 4
+ public const int GradientColor_android_centerY = 4;
+
+ // aapt resource value: 1
+ public const int GradientColor_android_endColor = 1;
+
+ // aapt resource value: 10
+ public const int GradientColor_android_endX = 10;
+
+ // aapt resource value: 11
+ public const int GradientColor_android_endY = 11;
+
+ // aapt resource value: 5
+ public const int GradientColor_android_gradientRadius = 5;
+
+ // aapt resource value: 0
+ public const int GradientColor_android_startColor = 0;
+
+ // aapt resource value: 8
+ public const int GradientColor_android_startX = 8;
+
+ // aapt resource value: 9
+ public const int GradientColor_android_startY = 9;
+
+ // aapt resource value: 6
+ public const int GradientColor_android_tileMode = 6;
+
+ // aapt resource value: 2
+ public const int GradientColor_android_type = 2;
+
+ // aapt resource value: { 0x10100AF,0x10100C4,0x1010126,0x1010127,0x1010128,0x7F0300AA,0x7F0300AC,0x7F03012A,0x7F030158 }
+ public static int[] LinearLayoutCompat = new int[] {
+ 16842927,
+ 16842948,
+ 16843046,
+ 16843047,
+ 16843048,
+ 2130903210,
+ 2130903212,
+ 2130903338,
+ 2130903384};
+
+ // aapt resource value: 2
+ public const int LinearLayoutCompat_android_baselineAligned = 2;
+
+ // aapt resource value: 3
+ public const int LinearLayoutCompat_android_baselineAlignedChildIndex = 3;
+
+ // aapt resource value: 0
+ public const int LinearLayoutCompat_android_gravity = 0;
+
+ // aapt resource value: 1
+ public const int LinearLayoutCompat_android_orientation = 1;
+
+ // aapt resource value: 4
+ public const int LinearLayoutCompat_android_weightSum = 4;
+
+ // aapt resource value: 5
+ public const int LinearLayoutCompat_divider = 5;
+
+ // aapt resource value: 6
+ public const int LinearLayoutCompat_dividerPadding = 6;
+
+ // aapt resource value: { 0x10100B3,0x10100F4,0x10100F5,0x1010181 }
+ public static int[] LinearLayoutCompat_Layout = new int[] {
+ 16842931,
+ 16842996,
+ 16842997,
+ 16843137};
+
+ // aapt resource value: 0
+ public const int LinearLayoutCompat_Layout_android_layout_gravity = 0;
+
+ // aapt resource value: 2
+ public const int LinearLayoutCompat_Layout_android_layout_height = 2;
+
+ // aapt resource value: 3
+ public const int LinearLayoutCompat_Layout_android_layout_weight = 3;
+
+ // aapt resource value: 1
+ public const int LinearLayoutCompat_Layout_android_layout_width = 1;
+
+ // aapt resource value: 7
+ public const int LinearLayoutCompat_measureWithLargestChild = 7;
+
+ // aapt resource value: 8
+ public const int LinearLayoutCompat_showDividers = 8;
+
+ // aapt resource value: { 0x10102AC,0x10102AD }
+ public static int[] ListPopupWindow = new int[] {
+ 16843436,
+ 16843437};
+
+ // aapt resource value: 0
+ public const int ListPopupWindow_android_dropDownHorizontalOffset = 0;
+
+ // aapt resource value: 1
+ public const int ListPopupWindow_android_dropDownVerticalOffset = 1;
+
+ // aapt resource value: { 0x10101B7,0x10101B8,0x10101B9,0x10101BA,0x7F030034,0x7F030035,0x7F03009F,0x7F0300EC,0x7F0300EE,0x7F0300EF,0x7F0300F0,0x7F0300F2,0x7F0300F3,0x7F03014D,0x7F03016F,0x7F030170 }
+ public static int[] MaterialButton = new int[] {
+ 16843191,
+ 16843192,
+ 16843193,
+ 16843194,
+ 2130903092,
+ 2130903093,
+ 2130903199,
+ 2130903276,
+ 2130903278,
+ 2130903279,
+ 2130903280,
+ 2130903282,
+ 2130903283,
+ 2130903373,
+ 2130903407,
+ 2130903408};
+
+ // aapt resource value: 3
+ public const int MaterialButton_android_insetBottom = 3;
+
+ // aapt resource value: 0
+ public const int MaterialButton_android_insetLeft = 0;
+
+ // aapt resource value: 1
+ public const int MaterialButton_android_insetRight = 1;
+
+ // aapt resource value: 2
+ public const int MaterialButton_android_insetTop = 2;
+
+ // aapt resource value: 4
+ public const int MaterialButton_backgroundTint = 4;
+
+ // aapt resource value: 5
+ public const int MaterialButton_backgroundTintMode = 5;
+
+ // aapt resource value: 6
+ public const int MaterialButton_cornerRadius = 6;
+
+ // aapt resource value: 7
+ public const int MaterialButton_icon = 7;
+
+ // aapt resource value: 8
+ public const int MaterialButton_iconGravity = 8;
+
+ // aapt resource value: 9
+ public const int MaterialButton_iconPadding = 9;
+
+ // aapt resource value: 10
+ public const int MaterialButton_iconSize = 10;
+
+ // aapt resource value: 11
+ public const int MaterialButton_iconTint = 11;
+
+ // aapt resource value: 12
+ public const int MaterialButton_iconTintMode = 12;
+
+ // aapt resource value: 13
+ public const int MaterialButton_rippleColor = 13;
+
+ // aapt resource value: 14
+ public const int MaterialButton_strokeColor = 14;
+
+ // aapt resource value: 15
+ public const int MaterialButton_strokeWidth = 15;
+
+ // aapt resource value: { 0x7F03016F,0x7F030170 }
+ public static int[] MaterialCardView = new int[] {
+ 2130903407,
+ 2130903408};
+
+ // aapt resource value: 0
+ public const int MaterialCardView_strokeColor = 0;
+
+ // aapt resource value: 1
+ public const int MaterialCardView_strokeWidth = 1;
+
+ // aapt resource value: { 0x7F030041,0x7F030042,0x7F030068,0x7F030072,0x7F030076,0x7F030084,0x7F030085,0x7F03008B,0x7F03008C,0x7F03008D,0x7F0300B4,0x7F0300CF,0x7F030125,0x7F030126,0x7F030130,0x7F03014F,0x7F03015F,0x7F030192,0x7F030197,0x7F030198,0x7F030199,0x7F03019A,0x7F03019B,0x7F03019C,0x7F03019D,0x7F03019E,0x7F03019F,0x7F0301A0,0x7F0301A5,0x7F0301AA,0x7F0301AB,0x7F0301AF }
+ public static int[] MaterialComponentsTheme = new int[] {
+ 2130903105,
+ 2130903106,
+ 2130903144,
+ 2130903154,
+ 2130903158,
+ 2130903172,
+ 2130903173,
+ 2130903179,
+ 2130903180,
+ 2130903181,
+ 2130903220,
+ 2130903247,
+ 2130903333,
+ 2130903334,
+ 2130903344,
+ 2130903375,
+ 2130903391,
+ 2130903442,
+ 2130903447,
+ 2130903448,
+ 2130903449,
+ 2130903450,
+ 2130903451,
+ 2130903452,
+ 2130903453,
+ 2130903454,
+ 2130903455,
+ 2130903456,
+ 2130903461,
+ 2130903466,
+ 2130903467,
+ 2130903471};
+
+ // aapt resource value: 0
+ public const int MaterialComponentsTheme_bottomSheetDialogTheme = 0;
+
+ // aapt resource value: 1
+ public const int MaterialComponentsTheme_bottomSheetStyle = 1;
+
+ // aapt resource value: 2
+ public const int MaterialComponentsTheme_chipGroupStyle = 2;
+
+ // aapt resource value: 3
+ public const int MaterialComponentsTheme_chipStandaloneStyle = 3;
+
+ // aapt resource value: 4
+ public const int MaterialComponentsTheme_chipStyle = 4;
+
+ // aapt resource value: 5
+ public const int MaterialComponentsTheme_colorAccent = 5;
+
+ // aapt resource value: 6
+ public const int MaterialComponentsTheme_colorBackgroundFloating = 6;
+
+ // aapt resource value: 7
+ public const int MaterialComponentsTheme_colorPrimary = 7;
+
+ // aapt resource value: 8
+ public const int MaterialComponentsTheme_colorPrimaryDark = 8;
+
+ // aapt resource value: 9
+ public const int MaterialComponentsTheme_colorSecondary = 9;
+
+ // aapt resource value: 10
+ public const int MaterialComponentsTheme_editTextStyle = 10;
+
+ // aapt resource value: 11
+ public const int MaterialComponentsTheme_floatingActionButtonStyle = 11;
+
+ // aapt resource value: 12
+ public const int MaterialComponentsTheme_materialButtonStyle = 12;
+
+ // aapt resource value: 13
+ public const int MaterialComponentsTheme_materialCardViewStyle = 13;
+
+ // aapt resource value: 14
+ public const int MaterialComponentsTheme_navigationViewStyle = 14;
+
+ // aapt resource value: 15
+ public const int MaterialComponentsTheme_scrimBackground = 15;
+
+ // aapt resource value: 16
+ public const int MaterialComponentsTheme_snackbarButtonStyle = 16;
+
+ // aapt resource value: 17
+ public const int MaterialComponentsTheme_tabStyle = 17;
+
+ // aapt resource value: 18
+ public const int MaterialComponentsTheme_textAppearanceBody1 = 18;
+
+ // aapt resource value: 19
+ public const int MaterialComponentsTheme_textAppearanceBody2 = 19;
+
+ // aapt resource value: 20
+ public const int MaterialComponentsTheme_textAppearanceButton = 20;
+
+ // aapt resource value: 21
+ public const int MaterialComponentsTheme_textAppearanceCaption = 21;
+
+ // aapt resource value: 22
+ public const int MaterialComponentsTheme_textAppearanceHeadline1 = 22;
+
+ // aapt resource value: 23
+ public const int MaterialComponentsTheme_textAppearanceHeadline2 = 23;
+
+ // aapt resource value: 24
+ public const int MaterialComponentsTheme_textAppearanceHeadline3 = 24;
+
+ // aapt resource value: 25
+ public const int MaterialComponentsTheme_textAppearanceHeadline4 = 25;
+
+ // aapt resource value: 26
+ public const int MaterialComponentsTheme_textAppearanceHeadline5 = 26;
+
+ // aapt resource value: 27
+ public const int MaterialComponentsTheme_textAppearanceHeadline6 = 27;
+
+ // aapt resource value: 28
+ public const int MaterialComponentsTheme_textAppearanceOverline = 28;
+
+ // aapt resource value: 29
+ public const int MaterialComponentsTheme_textAppearanceSubtitle1 = 29;
+
+ // aapt resource value: 30
+ public const int MaterialComponentsTheme_textAppearanceSubtitle2 = 30;
+
+ // aapt resource value: 31
+ public const int MaterialComponentsTheme_textInputStyle = 31;
+
+ // aapt resource value: { 0x101000E,0x10100D0,0x1010194,0x10101DE,0x10101DF,0x10101E0 }
+ public static int[] MenuGroup = new int[] {
+ 16842766,
+ 16842960,
+ 16843156,
+ 16843230,
+ 16843231,
+ 16843232};
+
+ // aapt resource value: 5
+ public const int MenuGroup_android_checkableBehavior = 5;
+
+ // aapt resource value: 0
+ public const int MenuGroup_android_enabled = 0;
+
+ // aapt resource value: 1
+ public const int MenuGroup_android_id = 1;
+
+ // aapt resource value: 3
+ public const int MenuGroup_android_menuCategory = 3;
+
+ // aapt resource value: 4
+ public const int MenuGroup_android_orderInCategory = 4;
+
+ // aapt resource value: 2
+ public const int MenuGroup_android_visible = 2;
+
+ // aapt resource value: { 0x1010002,0x101000E,0x10100D0,0x1010106,0x1010194,0x10101DE,0x10101DF,0x10101E1,0x10101E2,0x10101E3,0x10101E4,0x10101E5,0x101026F,0x7F03000D,0x7F03001F,0x7F030020,0x7F030028,0x7F030090,0x7F0300F2,0x7F0300F3,0x7F030131,0x7F030157,0x7F0301CB }
+ public static int[] MenuItem = new int[] {
+ 16842754,
+ 16842766,
+ 16842960,
+ 16843014,
+ 16843156,
+ 16843230,
+ 16843231,
+ 16843233,
+ 16843234,
+ 16843235,
+ 16843236,
+ 16843237,
+ 16843375,
+ 2130903053,
+ 2130903071,
+ 2130903072,
+ 2130903080,
+ 2130903184,
+ 2130903282,
+ 2130903283,
+ 2130903345,
+ 2130903383,
+ 2130903499};
+
+ // aapt resource value: 13
+ public const int MenuItem_actionLayout = 13;
+
+ // aapt resource value: 14
+ public const int MenuItem_actionProviderClass = 14;
+
+ // aapt resource value: 15
+ public const int MenuItem_actionViewClass = 15;
+
+ // aapt resource value: 16
+ public const int MenuItem_alphabeticModifiers = 16;
+
+ // aapt resource value: 9
+ public const int MenuItem_android_alphabeticShortcut = 9;
+
+ // aapt resource value: 11
+ public const int MenuItem_android_checkable = 11;
+
+ // aapt resource value: 3
+ public const int MenuItem_android_checked = 3;
+
+ // aapt resource value: 1
+ public const int MenuItem_android_enabled = 1;
+
+ // aapt resource value: 0
+ public const int MenuItem_android_icon = 0;
+
+ // aapt resource value: 2
+ public const int MenuItem_android_id = 2;
+
+ // aapt resource value: 5
+ public const int MenuItem_android_menuCategory = 5;
+
+ // aapt resource value: 10
+ public const int MenuItem_android_numericShortcut = 10;
+
+ // aapt resource value: 12
+ public const int MenuItem_android_onClick = 12;
+
+ // aapt resource value: 6
+ public const int MenuItem_android_orderInCategory = 6;
+
+ // aapt resource value: 7
+ public const int MenuItem_android_title = 7;
+
+ // aapt resource value: 8
+ public const int MenuItem_android_titleCondensed = 8;
+
+ // aapt resource value: 4
+ public const int MenuItem_android_visible = 4;
+
+ // aapt resource value: 17
+ public const int MenuItem_contentDescription = 17;
+
+ // aapt resource value: 18
+ public const int MenuItem_iconTint = 18;
+
+ // aapt resource value: 19
+ public const int MenuItem_iconTintMode = 19;
+
+ // aapt resource value: 20
+ public const int MenuItem_numericModifiers = 20;
+
+ // aapt resource value: 21
+ public const int MenuItem_showAsAction = 21;
+
+ // aapt resource value: 22
+ public const int MenuItem_tooltipText = 22;
+
+ // aapt resource value: { 0x10100AE,0x101012C,0x101012D,0x101012E,0x101012F,0x1010130,0x1010131,0x7F030142,0x7F030171 }
+ public static int[] MenuView = new int[] {
+ 16842926,
+ 16843052,
+ 16843053,
+ 16843054,
+ 16843055,
+ 16843056,
+ 16843057,
+ 2130903362,
+ 2130903409};
+
+ // aapt resource value: 4
+ public const int MenuView_android_headerBackground = 4;
+
+ // aapt resource value: 2
+ public const int MenuView_android_horizontalDivider = 2;
+
+ // aapt resource value: 5
+ public const int MenuView_android_itemBackground = 5;
+
+ // aapt resource value: 6
+ public const int MenuView_android_itemIconDisabledAlpha = 6;
+
+ // aapt resource value: 1
+ public const int MenuView_android_itemTextAppearance = 1;
+
+ // aapt resource value: 3
+ public const int MenuView_android_verticalDivider = 3;
+
+ // aapt resource value: 0
+ public const int MenuView_android_windowAnimationStyle = 0;
+
+ // aapt resource value: 7
+ public const int MenuView_preserveIconSpacing = 7;
+
+ // aapt resource value: 8
+ public const int MenuView_subMenuArrow = 8;
+
+ // aapt resource value: { 0x10100D4,0x10100DD,0x101011F,0x7F0300B5,0x7F0300DE,0x7F0300FA,0x7F0300FB,0x7F0300FD,0x7F0300FF,0x7F030102,0x7F030105,0x7F03012B }
+ public static int[] NavigationView = new int[] {
+ 16842964,
+ 16842973,
+ 16843039,
+ 2130903221,
+ 2130903262,
+ 2130903290,
+ 2130903291,
+ 2130903293,
+ 2130903295,
+ 2130903298,
+ 2130903301,
+ 2130903339};
+
+ // aapt resource value: 0
+ public const int NavigationView_android_background = 0;
+
+ // aapt resource value: 1
+ public const int NavigationView_android_fitsSystemWindows = 1;
+
+ // aapt resource value: 2
+ public const int NavigationView_android_maxWidth = 2;
+
+ // aapt resource value: 3
+ public const int NavigationView_elevation = 3;
+
+ // aapt resource value: 4
+ public const int NavigationView_headerLayout = 4;
+
+ // aapt resource value: 5
+ public const int NavigationView_itemBackground = 5;
+
+ // aapt resource value: 6
+ public const int NavigationView_itemHorizontalPadding = 6;
+
+ // aapt resource value: 7
+ public const int NavigationView_itemIconPadding = 7;
+
+ // aapt resource value: 8
+ public const int NavigationView_itemIconTint = 8;
+
+ // aapt resource value: 9
+ public const int NavigationView_itemTextAppearance = 9;
+
+ // aapt resource value: 10
+ public const int NavigationView_itemTextColor = 10;
+
+ // aapt resource value: 11
+ public const int NavigationView_menu = 11;
+
+ // aapt resource value: { 0x1010176,0x10102C9,0x7F030132 }
+ public static int[] PopupWindow = new int[] {
+ 16843126,
+ 16843465,
+ 2130903346};
+
+ // aapt resource value: { 0x7F030168 }
+ public static int[] PopupWindowBackgroundState = new int[] {
+ 2130903400};
+
+ // aapt resource value: 0
+ public const int PopupWindowBackgroundState_state_above_anchor = 0;
+
+ // aapt resource value: 1
+ public const int PopupWindow_android_popupAnimationStyle = 1;
+
+ // aapt resource value: 0
+ public const int PopupWindow_android_popupBackground = 0;
+
+ // aapt resource value: 2
+ public const int PopupWindow_overlapAnchor = 2;
+
+ // aapt resource value: { 0x7F030133,0x7F030136 }
+ public static int[] RecycleListView = new int[] {
+ 2130903347,
+ 2130903350};
+
+ // aapt resource value: 0
+ public const int RecycleListView_paddingBottomNoButtons = 0;
+
+ // aapt resource value: 1
+ public const int RecycleListView_paddingTopNoTitle = 1;
+
+ // aapt resource value: { 0x10100C4,0x10100F1,0x7F0300C9,0x7F0300CA,0x7F0300CB,0x7F0300CC,0x7F0300CD,0x7F03010A,0x7F03014C,0x7F030161,0x7F030167 }
+ public static int[] RecyclerView = new int[] {
+ 16842948,
+ 16842993,
+ 2130903241,
+ 2130903242,
+ 2130903243,
+ 2130903244,
+ 2130903245,
+ 2130903306,
+ 2130903372,
+ 2130903393,
+ 2130903399};
+
+ // aapt resource value: 1
+ public const int RecyclerView_android_descendantFocusability = 1;
+
+ // aapt resource value: 0
+ public const int RecyclerView_android_orientation = 0;
+
+ // aapt resource value: 2
+ public const int RecyclerView_fastScrollEnabled = 2;
+
+ // aapt resource value: 3
+ public const int RecyclerView_fastScrollHorizontalThumbDrawable = 3;
+
+ // aapt resource value: 4
+ public const int RecyclerView_fastScrollHorizontalTrackDrawable = 4;
+
+ // aapt resource value: 5
+ public const int RecyclerView_fastScrollVerticalThumbDrawable = 5;
+
+ // aapt resource value: 6
+ public const int RecyclerView_fastScrollVerticalTrackDrawable = 6;
+
+ // aapt resource value: 7
+ public const int RecyclerView_layoutManager = 7;
+
+ // aapt resource value: 8
+ public const int RecyclerView_reverseLayout = 8;
+
+ // aapt resource value: 9
+ public const int RecyclerView_spanCount = 9;
+
+ // aapt resource value: 10
+ public const int RecyclerView_stackFromEnd = 10;
+
+ // aapt resource value: { 0x7F0300F8 }
+ public static int[] ScrimInsetsFrameLayout = new int[] {
+ 2130903288};
+
+ // aapt resource value: 0
+ public const int ScrimInsetsFrameLayout_insetForeground = 0;
+
+ // aapt resource value: { 0x7F03003A }
+ public static int[] ScrollingViewBehavior_Layout = new int[] {
+ 2130903098};
+
+ // aapt resource value: 0
+ public const int ScrollingViewBehavior_Layout_behavior_overlapTop = 0;
+
+ // aapt resource value: { 0x10100DA,0x101011F,0x1010220,0x1010264,0x7F030077,0x7F03008F,0x7F0300A5,0x7F0300DD,0x7F0300F4,0x7F030109,0x7F030146,0x7F030147,0x7F030151,0x7F030152,0x7F030172,0x7F030177,0x7F0301D2 }
+ public static int[] SearchView = new int[] {
+ 16842970,
+ 16843039,
+ 16843296,
+ 16843364,
+ 2130903159,
+ 2130903183,
+ 2130903205,
+ 2130903261,
+ 2130903284,
+ 2130903305,
+ 2130903366,
+ 2130903367,
+ 2130903377,
+ 2130903378,
+ 2130903410,
+ 2130903415,
+ 2130903506};
+
+ // aapt resource value: 0
+ public const int SearchView_android_focusable = 0;
+
+ // aapt resource value: 3
+ public const int SearchView_android_imeOptions = 3;
+
+ // aapt resource value: 2
+ public const int SearchView_android_inputType = 2;
+
+ // aapt resource value: 1
+ public const int SearchView_android_maxWidth = 1;
+
+ // aapt resource value: 4
+ public const int SearchView_closeIcon = 4;
+
+ // aapt resource value: 5
+ public const int SearchView_commitIcon = 5;
+
+ // aapt resource value: 6
+ public const int SearchView_defaultQueryHint = 6;
+
+ // aapt resource value: 7
+ public const int SearchView_goIcon = 7;
+
+ // aapt resource value: 8
+ public const int SearchView_iconifiedByDefault = 8;
+
+ // aapt resource value: 9
+ public const int SearchView_layout = 9;
+
+ // aapt resource value: 10
+ public const int SearchView_queryBackground = 10;
+
+ // aapt resource value: 11
+ public const int SearchView_queryHint = 11;
+
+ // aapt resource value: 12
+ public const int SearchView_searchHintIcon = 12;
+
+ // aapt resource value: 13
+ public const int SearchView_searchIcon = 13;
+
+ // aapt resource value: 14
+ public const int SearchView_submitBackground = 14;
+
+ // aapt resource value: 15
+ public const int SearchView_suggestionRowLayout = 15;
+
+ // aapt resource value: 16
+ public const int SearchView_voiceIcon = 16;
+
+ // aapt resource value: { 0x7F03015F,0x7F030160 }
+ public static int[] Snackbar = new int[] {
+ 2130903391,
+ 2130903392};
+
+ // aapt resource value: { 0x101011F,0x7F0300B5,0x7F030127 }
+ public static int[] SnackbarLayout = new int[] {
+ 16843039,
+ 2130903221,
+ 2130903335};
+
+ // aapt resource value: 0
+ public const int SnackbarLayout_android_maxWidth = 0;
+
+ // aapt resource value: 1
+ public const int SnackbarLayout_elevation = 1;
+
+ // aapt resource value: 2
+ public const int SnackbarLayout_maxActionInlineWidth = 2;
+
+ // aapt resource value: 0
+ public const int Snackbar_snackbarButtonStyle = 0;
+
+ // aapt resource value: 1
+ public const int Snackbar_snackbarStyle = 1;
+
+ // aapt resource value: { 0x10100B2,0x1010176,0x101017B,0x1010262,0x7F030140 }
+ public static int[] Spinner = new int[] {
+ 16842930,
+ 16843126,
+ 16843131,
+ 16843362,
+ 2130903360};
+
+ // aapt resource value: 3
+ public const int Spinner_android_dropDownWidth = 3;
+
+ // aapt resource value: 0
+ public const int Spinner_android_entries = 0;
+
+ // aapt resource value: 1
+ public const int Spinner_android_popupBackground = 1;
+
+ // aapt resource value: 2
+ public const int Spinner_android_prompt = 2;
+
+ // aapt resource value: 4
+ public const int Spinner_popupTheme = 4;
+
+ // aapt resource value: { 0x101011C,0x1010194,0x1010195,0x1010196,0x101030C,0x101030D }
+ public static int[] StateListDrawable = new int[] {
+ 16843036,
+ 16843156,
+ 16843157,
+ 16843158,
+ 16843532,
+ 16843533};
+
+ // aapt resource value: { 0x1010199 }
+ public static int[] StateListDrawableItem = new int[] {
+ 16843161};
+
+ // aapt resource value: 0
+ public const int StateListDrawableItem_android_drawable = 0;
+
+ // aapt resource value: 3
+ public const int StateListDrawable_android_constantSize = 3;
+
+ // aapt resource value: 0
+ public const int StateListDrawable_android_dither = 0;
+
+ // aapt resource value: 4
+ public const int StateListDrawable_android_enterFadeDuration = 4;
+
+ // aapt resource value: 5
+ public const int StateListDrawable_android_exitFadeDuration = 5;
+
+ // aapt resource value: 2
+ public const int StateListDrawable_android_variablePadding = 2;
+
+ // aapt resource value: 1
+ public const int StateListDrawable_android_visible = 1;
+
+ // aapt resource value: { 0x1010124,0x1010125,0x1010142,0x7F03015A,0x7F030165,0x7F030178,0x7F030179,0x7F03017B,0x7F0301B3,0x7F0301B4,0x7F0301B5,0x7F0301CC,0x7F0301CD,0x7F0301CE }
+ public static int[] SwitchCompat = new int[] {
+ 16843044,
+ 16843045,
+ 16843074,
+ 2130903386,
+ 2130903397,
+ 2130903416,
+ 2130903417,
+ 2130903419,
+ 2130903475,
+ 2130903476,
+ 2130903477,
+ 2130903500,
+ 2130903501,
+ 2130903502};
+
+ // aapt resource value: 1
+ public const int SwitchCompat_android_textOff = 1;
+
+ // aapt resource value: 0
+ public const int SwitchCompat_android_textOn = 0;
+
+ // aapt resource value: 2
+ public const int SwitchCompat_android_thumb = 2;
+
+ // aapt resource value: 3
+ public const int SwitchCompat_showText = 3;
+
+ // aapt resource value: 4
+ public const int SwitchCompat_splitTrack = 4;
+
+ // aapt resource value: 5
+ public const int SwitchCompat_switchMinWidth = 5;
+
+ // aapt resource value: 6
+ public const int SwitchCompat_switchPadding = 6;
+
+ // aapt resource value: 7
+ public const int SwitchCompat_switchTextAppearance = 7;
+
+ // aapt resource value: 8
+ public const int SwitchCompat_thumbTextPadding = 8;
+
+ // aapt resource value: 9
+ public const int SwitchCompat_thumbTint = 9;
+
+ // aapt resource value: 10
+ public const int SwitchCompat_thumbTintMode = 10;
+
+ // aapt resource value: 11
+ public const int SwitchCompat_track = 11;
+
+ // aapt resource value: 12
+ public const int SwitchCompat_trackTint = 12;
+
+ // aapt resource value: 13
+ public const int SwitchCompat_trackTintMode = 13;
+
+ // aapt resource value: { 0x1010002,0x10100F2,0x101014F }
+ public static int[] TabItem = new int[] {
+ 16842754,
+ 16842994,
+ 16843087};
+
+ // aapt resource value: 0
+ public const int TabItem_android_icon = 0;
+
+ // aapt resource value: 1
+ public const int TabItem_android_layout = 1;
+
+ // aapt resource value: 2
+ public const int TabItem_android_text = 2;
+
+ // aapt resource value: { 0x7F03017C,0x7F03017D,0x7F03017E,0x7F03017F,0x7F030180,0x7F030181,0x7F030182,0x7F030183,0x7F030184,0x7F030185,0x7F030186,0x7F030187,0x7F030188,0x7F030189,0x7F03018A,0x7F03018B,0x7F03018C,0x7F03018D,0x7F03018E,0x7F03018F,0x7F030190,0x7F030191,0x7F030193,0x7F030194,0x7F030195 }
+ public static int[] TabLayout = new int[] {
+ 2130903420,
+ 2130903421,
+ 2130903422,
+ 2130903423,
+ 2130903424,
+ 2130903425,
+ 2130903426,
+ 2130903427,
+ 2130903428,
+ 2130903429,
+ 2130903430,
+ 2130903431,
+ 2130903432,
+ 2130903433,
+ 2130903434,
+ 2130903435,
+ 2130903436,
+ 2130903437,
+ 2130903438,
+ 2130903439,
+ 2130903440,
+ 2130903441,
+ 2130903443,
+ 2130903444,
+ 2130903445};
+
+ // aapt resource value: 0
+ public const int TabLayout_tabBackground = 0;
+
+ // aapt resource value: 1
+ public const int TabLayout_tabContentStart = 1;
+
+ // aapt resource value: 2
+ public const int TabLayout_tabGravity = 2;
+
+ // aapt resource value: 3
+ public const int TabLayout_tabIconTint = 3;
+
+ // aapt resource value: 4
+ public const int TabLayout_tabIconTintMode = 4;
+
+ // aapt resource value: 5
+ public const int TabLayout_tabIndicator = 5;
+
+ // aapt resource value: 6
+ public const int TabLayout_tabIndicatorAnimationDuration = 6;
+
+ // aapt resource value: 7
+ public const int TabLayout_tabIndicatorColor = 7;
+
+ // aapt resource value: 8
+ public const int TabLayout_tabIndicatorFullWidth = 8;
+
+ // aapt resource value: 9
+ public const int TabLayout_tabIndicatorGravity = 9;
+
+ // aapt resource value: 10
+ public const int TabLayout_tabIndicatorHeight = 10;
+
+ // aapt resource value: 11
+ public const int TabLayout_tabInlineLabel = 11;
+
+ // aapt resource value: 12
+ public const int TabLayout_tabMaxWidth = 12;
+
+ // aapt resource value: 13
+ public const int TabLayout_tabMinWidth = 13;
+
+ // aapt resource value: 14
+ public const int TabLayout_tabMode = 14;
+
+ // aapt resource value: 15
+ public const int TabLayout_tabPadding = 15;
+
+ // aapt resource value: 16
+ public const int TabLayout_tabPaddingBottom = 16;
+
+ // aapt resource value: 17
+ public const int TabLayout_tabPaddingEnd = 17;
+
+ // aapt resource value: 18
+ public const int TabLayout_tabPaddingStart = 18;
+
+ // aapt resource value: 19
+ public const int TabLayout_tabPaddingTop = 19;
+
+ // aapt resource value: 20
+ public const int TabLayout_tabRippleColor = 20;
+
+ // aapt resource value: 21
+ public const int TabLayout_tabSelectedTextColor = 21;
+
+ // aapt resource value: 22
+ public const int TabLayout_tabTextAppearance = 22;
+
+ // aapt resource value: 23
+ public const int TabLayout_tabTextColor = 23;
+
+ // aapt resource value: 24
+ public const int TabLayout_tabUnboundedRipple = 24;
+
+ // aapt resource value: { 0x1010095,0x1010096,0x1010097,0x1010098,0x101009A,0x101009B,0x1010161,0x1010162,0x1010163,0x1010164,0x10103AC,0x7F0300D1,0x7F030196 }
+ public static int[] TextAppearance = new int[] {
+ 16842901,
+ 16842902,
+ 16842903,
+ 16842904,
+ 16842906,
+ 16842907,
+ 16843105,
+ 16843106,
+ 16843107,
+ 16843108,
+ 16843692,
+ 2130903249,
+ 2130903446};
+
+ // aapt resource value: 10
+ public const int TextAppearance_android_fontFamily = 10;
+
+ // aapt resource value: 6
+ public const int TextAppearance_android_shadowColor = 6;
+
+ // aapt resource value: 7
+ public const int TextAppearance_android_shadowDx = 7;
+
+ // aapt resource value: 8
+ public const int TextAppearance_android_shadowDy = 8;
+
+ // aapt resource value: 9
+ public const int TextAppearance_android_shadowRadius = 9;
+
+ // aapt resource value: 3
+ public const int TextAppearance_android_textColor = 3;
+
+ // aapt resource value: 4
+ public const int TextAppearance_android_textColorHint = 4;
+
+ // aapt resource value: 5
+ public const int TextAppearance_android_textColorLink = 5;
+
+ // aapt resource value: 0
+ public const int TextAppearance_android_textSize = 0;
+
+ // aapt resource value: 2
+ public const int TextAppearance_android_textStyle = 2;
+
+ // aapt resource value: 1
+ public const int TextAppearance_android_typeface = 1;
+
+ // aapt resource value: 11
+ public const int TextAppearance_fontFamily = 11;
+
+ // aapt resource value: 12
+ public const int TextAppearance_textAllCaps = 12;
+
+ // aapt resource value: { 0x101009A,0x1010150,0x7F030043,0x7F030044,0x7F030045,0x7F030046,0x7F030047,0x7F030048,0x7F030049,0x7F03004A,0x7F03004B,0x7F0300A0,0x7F0300A1,0x7F0300A2,0x7F0300A3,0x7F0300B8,0x7F0300B9,0x7F0300E0,0x7F0300E1,0x7F0300E2,0x7F0300E6,0x7F0300E7,0x7F0300E8,0x7F03013A,0x7F03013B,0x7F03013C,0x7F03013D,0x7F03013E }
+ public static int[] TextInputLayout = new int[] {
+ 16842906,
+ 16843088,
+ 2130903107,
+ 2130903108,
+ 2130903109,
+ 2130903110,
+ 2130903111,
+ 2130903112,
+ 2130903113,
+ 2130903114,
+ 2130903115,
+ 2130903200,
+ 2130903201,
+ 2130903202,
+ 2130903203,
+ 2130903224,
+ 2130903225,
+ 2130903264,
+ 2130903265,
+ 2130903266,
+ 2130903270,
+ 2130903271,
+ 2130903272,
+ 2130903354,
+ 2130903355,
+ 2130903356,
+ 2130903357,
+ 2130903358};
+
+ // aapt resource value: 1
+ public const int TextInputLayout_android_hint = 1;
+
+ // aapt resource value: 0
+ public const int TextInputLayout_android_textColorHint = 0;
+
+ // aapt resource value: 2
+ public const int TextInputLayout_boxBackgroundColor = 2;
+
+ // aapt resource value: 3
+ public const int TextInputLayout_boxBackgroundMode = 3;
+
+ // aapt resource value: 4
+ public const int TextInputLayout_boxCollapsedPaddingTop = 4;
+
+ // aapt resource value: 5
+ public const int TextInputLayout_boxCornerRadiusBottomEnd = 5;
+
+ // aapt resource value: 6
+ public const int TextInputLayout_boxCornerRadiusBottomStart = 6;
+
+ // aapt resource value: 7
+ public const int TextInputLayout_boxCornerRadiusTopEnd = 7;
+
+ // aapt resource value: 8
+ public const int TextInputLayout_boxCornerRadiusTopStart = 8;
+
+ // aapt resource value: 9
+ public const int TextInputLayout_boxStrokeColor = 9;
+
+ // aapt resource value: 10
+ public const int TextInputLayout_boxStrokeWidth = 10;
+
+ // aapt resource value: 11
+ public const int TextInputLayout_counterEnabled = 11;
+
+ // aapt resource value: 12
+ public const int TextInputLayout_counterMaxLength = 12;
+
+ // aapt resource value: 13
+ public const int TextInputLayout_counterOverflowTextAppearance = 13;
+
+ // aapt resource value: 14
+ public const int TextInputLayout_counterTextAppearance = 14;
+
+ // aapt resource value: 15
+ public const int TextInputLayout_errorEnabled = 15;
+
+ // aapt resource value: 16
+ public const int TextInputLayout_errorTextAppearance = 16;
+
+ // aapt resource value: 17
+ public const int TextInputLayout_helperText = 17;
+
+ // aapt resource value: 18
+ public const int TextInputLayout_helperTextEnabled = 18;
+
+ // aapt resource value: 19
+ public const int TextInputLayout_helperTextTextAppearance = 19;
+
+ // aapt resource value: 20
+ public const int TextInputLayout_hintAnimationEnabled = 20;
+
+ // aapt resource value: 21
+ public const int TextInputLayout_hintEnabled = 21;
+
+ // aapt resource value: 22
+ public const int TextInputLayout_hintTextAppearance = 22;
+
+ // aapt resource value: 23
+ public const int TextInputLayout_passwordToggleContentDescription = 23;
+
+ // aapt resource value: 24
+ public const int TextInputLayout_passwordToggleDrawable = 24;
+
+ // aapt resource value: 25
+ public const int TextInputLayout_passwordToggleEnabled = 25;
+
+ // aapt resource value: 26
+ public const int TextInputLayout_passwordToggleTint = 26;
+
+ // aapt resource value: 27
+ public const int TextInputLayout_passwordToggleTintMode = 27;
+
+ // aapt resource value: { 0x1010034,0x7F0300B6,0x7F0300B7 }
+ public static int[] ThemeEnforcement = new int[] {
+ 16842804,
+ 2130903222,
+ 2130903223};
+
+ // aapt resource value: 0
+ public const int ThemeEnforcement_android_textAppearance = 0;
+
+ // aapt resource value: 1
+ public const int ThemeEnforcement_enforceMaterialTheme = 1;
+
+ // aapt resource value: 2
+ public const int ThemeEnforcement_enforceTextAppearance = 2;
+
+ // aapt resource value: { 0x10100AF,0x1010140,0x7F030051,0x7F03007F,0x7F030080,0x7F030091,0x7F030092,0x7F030093,0x7F030094,0x7F030095,0x7F030096,0x7F030123,0x7F030124,0x7F030128,0x7F03012D,0x7F03012E,0x7F030140,0x7F030173,0x7F030174,0x7F030175,0x7F0301BB,0x7F0301BD,0x7F0301BE,0x7F0301BF,0x7F0301C0,0x7F0301C1,0x7F0301C2,0x7F0301C3,0x7F0301C4 }
+ public static int[] Toolbar = new int[] {
+ 16842927,
+ 16843072,
+ 2130903121,
+ 2130903167,
+ 2130903168,
+ 2130903185,
+ 2130903186,
+ 2130903187,
+ 2130903188,
+ 2130903189,
+ 2130903190,
+ 2130903331,
+ 2130903332,
+ 2130903336,
+ 2130903341,
+ 2130903342,
+ 2130903360,
+ 2130903411,
+ 2130903412,
+ 2130903413,
+ 2130903483,
+ 2130903485,
+ 2130903486,
+ 2130903487,
+ 2130903488,
+ 2130903489,
+ 2130903490,
+ 2130903491,
+ 2130903492};
+
+ // aapt resource value: 0
+ public const int Toolbar_android_gravity = 0;
+
+ // aapt resource value: 1
+ public const int Toolbar_android_minHeight = 1;
+
+ // aapt resource value: 2
+ public const int Toolbar_buttonGravity = 2;
+
+ // aapt resource value: 3
+ public const int Toolbar_collapseContentDescription = 3;
+
+ // aapt resource value: 4
+ public const int Toolbar_collapseIcon = 4;
+
+ // aapt resource value: 5
+ public const int Toolbar_contentInsetEnd = 5;
+
+ // aapt resource value: 6
+ public const int Toolbar_contentInsetEndWithActions = 6;
+
+ // aapt resource value: 7
+ public const int Toolbar_contentInsetLeft = 7;
+
+ // aapt resource value: 8
+ public const int Toolbar_contentInsetRight = 8;
+
+ // aapt resource value: 9
+ public const int Toolbar_contentInsetStart = 9;
+
+ // aapt resource value: 10
+ public const int Toolbar_contentInsetStartWithNavigation = 10;
+
+ // aapt resource value: 11
+ public const int Toolbar_logo = 11;
+
+ // aapt resource value: 12
+ public const int Toolbar_logoDescription = 12;
+
+ // aapt resource value: 13
+ public const int Toolbar_maxButtonHeight = 13;
+
+ // aapt resource value: 14
+ public const int Toolbar_navigationContentDescription = 14;
+
+ // aapt resource value: 15
+ public const int Toolbar_navigationIcon = 15;
+
+ // aapt resource value: 16
+ public const int Toolbar_popupTheme = 16;
+
+ // aapt resource value: 17
+ public const int Toolbar_subtitle = 17;
+
+ // aapt resource value: 18
+ public const int Toolbar_subtitleTextAppearance = 18;
+
+ // aapt resource value: 19
+ public const int Toolbar_subtitleTextColor = 19;
+
+ // aapt resource value: 20
+ public const int Toolbar_title = 20;
+
+ // aapt resource value: 21
+ public const int Toolbar_titleMargin = 21;
+
+ // aapt resource value: 22
+ public const int Toolbar_titleMarginBottom = 22;
+
+ // aapt resource value: 23
+ public const int Toolbar_titleMarginEnd = 23;
+
+ // aapt resource value: 26
+ public const int Toolbar_titleMargins = 26;
+
+ // aapt resource value: 24
+ public const int Toolbar_titleMarginStart = 24;
+
+ // aapt resource value: 25
+ public const int Toolbar_titleMarginTop = 25;
+
+ // aapt resource value: 27
+ public const int Toolbar_titleTextAppearance = 27;
+
+ // aapt resource value: 28
+ public const int Toolbar_titleTextColor = 28;
+
+ // aapt resource value: { 0x1010000,0x10100DA,0x7F030134,0x7F030135,0x7F0301B1 }
+ public static int[] View = new int[] {
+ 16842752,
+ 16842970,
+ 2130903348,
+ 2130903349,
+ 2130903473};
+
+ // aapt resource value: { 0x10100D4,0x7F030034,0x7F030035 }
+ public static int[] ViewBackgroundHelper = new int[] {
+ 16842964,
+ 2130903092,
+ 2130903093};
+
+ // aapt resource value: 0
+ public const int ViewBackgroundHelper_android_background = 0;
+
+ // aapt resource value: 1
+ public const int ViewBackgroundHelper_backgroundTint = 1;
+
+ // aapt resource value: 2
+ public const int ViewBackgroundHelper_backgroundTintMode = 2;
+
+ // aapt resource value: { 0x10100D0,0x10100F2,0x10100F3 }
+ public static int[] ViewStubCompat = new int[] {
+ 16842960,
+ 16842994,
+ 16842995};
+
+ // aapt resource value: 0
+ public const int ViewStubCompat_android_id = 0;
+
+ // aapt resource value: 2
+ public const int ViewStubCompat_android_inflatedId = 2;
+
+ // aapt resource value: 1
+ public const int ViewStubCompat_android_layout = 1;
+
+ // aapt resource value: 1
+ public const int View_android_focusable = 1;
+
+ // aapt resource value: 0
+ public const int View_android_theme = 0;
+
+ // aapt resource value: 2
+ public const int View_paddingEnd = 2;
+
+ // aapt resource value: 3
+ public const int View_paddingStart = 3;
+
+ // aapt resource value: 4
+ public const int View_theme = 4;
+
+ static Styleable()
+ {
+ global::Android.Runtime.ResourceIdManager.UpdateIdValues();
+ }
+
+ private Styleable()
+ {
+ }
+ }
+
+ public partial class Xml
+ {
+
+ // aapt resource value: 0x7F100000
+ public const int xamarin_essentials_fileprovider_file_paths = 2131755008;
+
+ static Xml()
+ {
+ global::Android.Runtime.ResourceIdManager.UpdateIdValues();
+ }
+
+ private Xml()
+ {
+ }
+ }
+ }
+}
+#pragma warning restore 1591
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<android.support.design.widget.TabLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:app="http://schemas.android.com/apk/res-auto"
+ android:id="@+id/sliding_tabs"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:background="?attr/colorPrimary"
+ android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
+ app:tabIndicatorColor="@android:color/white"
+ app:tabGravity="fill"
+ app:tabMode="fixed" />
--- /dev/null
+<android.support.v7.widget.Toolbar
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:id="@+id/toolbar"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:background="?attr/colorPrimary"
+ android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
+ android:popupTheme="@style/ThemeOverlay.AppCompat.Light" />
+
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
+ <background android:drawable="@color/launcher_background" />
+ <foreground android:drawable="@mipmap/launcher_foreground" />
+</adaptive-icon>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
+ <background android:drawable="@color/launcher_background" />
+ <foreground android:drawable="@mipmap/launcher_foreground" />
+</adaptive-icon>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+ <color name="launcher_background">#FFFFFF</color>
+ <color name="colorPrimary">#3F51B5</color>
+ <color name="colorPrimaryDark">#303F9F</color>
+ <color name="colorAccent">#FF4081</color>
+</resources>
--- /dev/null
+<?xml version="1.0" encoding="utf-8" ?>
+<resources>
+
+ <style name="MainTheme" parent="MainTheme.Base">
+ <!-- As of Xamarin.Forms 4.6 the theme has moved into the Forms binary -->
+ <!-- If you want to override anything you can do that here. -->
+ <!-- Underneath are a couple of entries to get you started. -->
+
+ <!-- Set theme colors from https://aka.ms/material-colors -->
+ <!-- colorPrimary is used for the default action bar background -->
+ <!--<item name="colorPrimary">#2196F3</item>-->
+ <!-- colorPrimaryDark is used for the status bar -->
+ <!--<item name="colorPrimaryDark">#1976D2</item>-->
+ <!-- colorAccent is used as the default value for colorControlActivated
+ which is used to tint widgets -->
+ <!--<item name="colorAccent">#FF4081</item>-->
+ </style>
+</resources>
\ No newline at end of file
--- /dev/null
+#region Copyright notice and license
+// Copyright 2020 The gRPC Authors
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+
+using Foundation;
+using UIKit;
+
+namespace HelloworldXamarin.iOS
+{
+ // The UIApplicationDelegate for the application. This class is responsible for launching the
+ // User Interface of the application, as well as listening (and optionally responding) to
+ // application events from iOS.
+ [Register("AppDelegate")]
+ public partial class AppDelegate : global::Xamarin.Forms.Platform.iOS.FormsApplicationDelegate
+ {
+ //
+ // This method is invoked when the application has loaded and is ready to run. In this
+ // method you should instantiate the window, load the UI into it and then make the window
+ // visible.
+ //
+ // You have 17 seconds to return from this method, or iOS will terminate your application.
+ //
+ public override bool FinishedLaunching(UIApplication app, NSDictionary options)
+ {
+ global::Xamarin.Forms.Forms.Init();
+ LoadApplication(new App());
+
+ return base.FinishedLaunching(app, options);
+ }
+ }
+}
--- /dev/null
+{
+ "images": [
+ {
+ "scale": "2x",
+ "size": "20x20",
+ "idiom": "iphone",
+ "filename": "Icon40.png"
+ },
+ {
+ "scale": "3x",
+ "size": "20x20",
+ "idiom": "iphone",
+ "filename": "Icon60.png"
+ },
+ {
+ "scale": "2x",
+ "size": "29x29",
+ "idiom": "iphone",
+ "filename": "Icon58.png"
+ },
+ {
+ "scale": "3x",
+ "size": "29x29",
+ "idiom": "iphone",
+ "filename": "Icon87.png"
+ },
+ {
+ "scale": "2x",
+ "size": "40x40",
+ "idiom": "iphone",
+ "filename": "Icon80.png"
+ },
+ {
+ "scale": "3x",
+ "size": "40x40",
+ "idiom": "iphone",
+ "filename": "Icon120.png"
+ },
+ {
+ "scale": "2x",
+ "size": "60x60",
+ "idiom": "iphone",
+ "filename": "Icon120.png"
+ },
+ {
+ "scale": "3x",
+ "size": "60x60",
+ "idiom": "iphone",
+ "filename": "Icon180.png"
+ },
+ {
+ "scale": "1x",
+ "size": "20x20",
+ "idiom": "ipad",
+ "filename": "Icon20.png"
+ },
+ {
+ "scale": "2x",
+ "size": "20x20",
+ "idiom": "ipad",
+ "filename": "Icon40.png"
+ },
+ {
+ "scale": "1x",
+ "size": "29x29",
+ "idiom": "ipad",
+ "filename": "Icon29.png"
+ },
+ {
+ "scale": "2x",
+ "size": "29x29",
+ "idiom": "ipad",
+ "filename": "Icon58.png"
+ },
+ {
+ "scale": "1x",
+ "size": "40x40",
+ "idiom": "ipad",
+ "filename": "Icon40.png"
+ },
+ {
+ "scale": "2x",
+ "size": "40x40",
+ "idiom": "ipad",
+ "filename": "Icon80.png"
+ },
+ {
+ "scale": "1x",
+ "size": "76x76",
+ "idiom": "ipad",
+ "filename": "Icon76.png"
+ },
+ {
+ "scale": "2x",
+ "size": "76x76",
+ "idiom": "ipad",
+ "filename": "Icon152.png"
+ },
+ {
+ "scale": "2x",
+ "size": "83.5x83.5",
+ "idiom": "ipad",
+ "filename": "Icon167.png"
+ },
+ {
+ "scale": "1x",
+ "size": "1024x1024",
+ "idiom": "ios-marketing",
+ "filename": "Icon1024.png"
+ }
+ ],
+ "properties": {},
+ "info": {
+ "version": 1,
+ "author": "xcode"
+ }
+}
\ No newline at end of file
<dict>
</dict>
</plist>
+
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <PropertyGroup>
+ <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+ <Platform Condition=" '$(Platform)' == '' ">iPhoneSimulator</Platform>
+ <ProductVersion>8.0.30703</ProductVersion>
+ <SchemaVersion>2.0</SchemaVersion>
+ <ProjectGuid>{101480C8-667F-45F0-9E3B-1201CE5F3D9F}</ProjectGuid>
+ <ProjectTypeGuids>{FEACFBD2-3405-455C-9665-78FE426C6842};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+ <TemplateGuid>{6143fdea-f3c2-4a09-aafa-6e230626515e}</TemplateGuid>
+ <OutputType>Exe</OutputType>
+ <RootNamespace>HelloworldXamarin.iOS</RootNamespace>
+ <IPhoneResourcePrefix>Resources</IPhoneResourcePrefix>
+ <AssemblyName>HelloworldXamarin.iOS</AssemblyName>
+ <MtouchEnableSGenConc>true</MtouchEnableSGenConc>
+ <MtouchHttpClientHandler>NSUrlSessionHandler</MtouchHttpClientHandler>
+ <ProvisioningType>automatic</ProvisioningType>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|iPhoneSimulator' ">
+ <DebugSymbols>true</DebugSymbols>
+ <DebugType>full</DebugType>
+ <Optimize>false</Optimize>
+ <OutputPath>bin\iPhoneSimulator\Debug</OutputPath>
+ <DefineConstants>DEBUG</DefineConstants>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ <MtouchArch>x86_64</MtouchArch>
+ <MtouchLink>None</MtouchLink>
+ <MtouchDebug>true</MtouchDebug>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|iPhoneSimulator' ">
+ <DebugType>none</DebugType>
+ <Optimize>true</Optimize>
+ <OutputPath>bin\iPhoneSimulator\Release</OutputPath>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ <MtouchLink>None</MtouchLink>
+ <MtouchArch>x86_64</MtouchArch>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|iPhone' ">
+ <DebugSymbols>true</DebugSymbols>
+ <DebugType>full</DebugType>
+ <Optimize>false</Optimize>
+ <OutputPath>bin\iPhone\Debug</OutputPath>
+ <DefineConstants>DEBUG</DefineConstants>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ <MtouchArch>ARM64</MtouchArch>
+ <CodesignKey>iPhone Developer</CodesignKey>
+ <MtouchDebug>true</MtouchDebug>
+ <CodesignEntitlements>Entitlements.plist</CodesignEntitlements>
+ <MtouchLink>None</MtouchLink>
+ <MtouchInterpreter>-all</MtouchInterpreter>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|iPhone' ">
+ <DebugType>none</DebugType>
+ <Optimize>true</Optimize>
+ <OutputPath>bin\iPhone\Release</OutputPath>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ <MtouchArch>ARM64</MtouchArch>
+ <CodesignKey>iPhone Developer</CodesignKey>
+ <CodesignEntitlements>Entitlements.plist</CodesignEntitlements>
+ </PropertyGroup>
+ <ItemGroup>
+ <Compile Include="Main.cs" />
+ <Compile Include="AppDelegate.cs" />
+ <None Include="Entitlements.plist" />
+ <None Include="Info.plist" />
+ <Compile Include="Properties\AssemblyInfo.cs" />
+ </ItemGroup>
+ <ItemGroup>
+ <InterfaceDefinition Include="Resources\LaunchScreen.storyboard" />
+ <ImageAsset Include="Assets.xcassets\AppIcon.appiconset\Contents.json">
+ <Visible>false</Visible>
+ </ImageAsset>
+ <ImageAsset Include="Assets.xcassets\AppIcon.appiconset\Icon1024.png">
+ <Visible>false</Visible>
+ </ImageAsset>
+ <ImageAsset Include="Assets.xcassets\AppIcon.appiconset\Icon180.png">
+ <Visible>false</Visible>
+ </ImageAsset>
+ <ImageAsset Include="Assets.xcassets\AppIcon.appiconset\Icon167.png">
+ <Visible>false</Visible>
+ </ImageAsset>
+ <ImageAsset Include="Assets.xcassets\AppIcon.appiconset\Icon152.png">
+ <Visible>false</Visible>
+ </ImageAsset>
+ <ImageAsset Include="Assets.xcassets\AppIcon.appiconset\Icon120.png">
+ <Visible>false</Visible>
+ </ImageAsset>
+ <ImageAsset Include="Assets.xcassets\AppIcon.appiconset\Icon87.png">
+ <Visible>false</Visible>
+ </ImageAsset>
+ <ImageAsset Include="Assets.xcassets\AppIcon.appiconset\Icon80.png">
+ <Visible>false</Visible>
+ </ImageAsset>
+ <ImageAsset Include="Assets.xcassets\AppIcon.appiconset\Icon76.png">
+ <Visible>false</Visible>
+ </ImageAsset>
+ <ImageAsset Include="Assets.xcassets\AppIcon.appiconset\Icon60.png">
+ <Visible>false</Visible>
+ </ImageAsset>
+ <ImageAsset Include="Assets.xcassets\AppIcon.appiconset\Icon58.png">
+ <Visible>false</Visible>
+ </ImageAsset>
+ <ImageAsset Include="Assets.xcassets\AppIcon.appiconset\Icon40.png">
+ <Visible>false</Visible>
+ </ImageAsset>
+ <ImageAsset Include="Assets.xcassets\AppIcon.appiconset\Icon29.png">
+ <Visible>false</Visible>
+ </ImageAsset>
+ <ImageAsset Include="Assets.xcassets\AppIcon.appiconset\Icon20.png">
+ <Visible>false</Visible>
+ </ImageAsset>
+ </ItemGroup>
+ <ItemGroup>
+ <Reference Include="System" />
+ <Reference Include="System.Xml" />
+ <Reference Include="System.Core" />
+ <Reference Include="Xamarin.iOS" />
+ <Reference Include="System.Numerics" />
+ <Reference Include="System.Numerics.Vectors" />
+ </ItemGroup>
+ <ItemGroup>
+ <PackageReference Include="Grpc.Core">
+ <Version>2.32.0</Version>
+ </PackageReference>
+ <PackageReference Include="Xamarin.Forms" Version="4.6.0.1141" />
+ <PackageReference Include="Xamarin.Essentials" Version="1.5.3.2" />
+ </ItemGroup>
+ <Import Project="$(MSBuildExtensionsPath)\Xamarin\iOS\Xamarin.iOS.CSharp.targets" />
+ <ItemGroup>
+ <ProjectReference Include="..\HelloworldXamarin\HelloworldXamarin.csproj">
+ <Project>{5900A2BD-3407-4F05-8CF2-DFF2A98B54F3}</Project>
+ <Name>HelloworldXamarin</Name>
+ </ProjectReference>
+ </ItemGroup>
+</Project>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>UIDeviceFamily</key>
+ <array>
+ <integer>1</integer>
+ <integer>2</integer>
+ </array>
+ <key>UISupportedInterfaceOrientations</key>
+ <array>
+ <string>UIInterfaceOrientationPortrait</string>
+ <string>UIInterfaceOrientationLandscapeLeft</string>
+ <string>UIInterfaceOrientationLandscapeRight</string>
+ </array>
+ <key>UISupportedInterfaceOrientations~ipad</key>
+ <array>
+ <string>UIInterfaceOrientationPortrait</string>
+ <string>UIInterfaceOrientationPortraitUpsideDown</string>
+ <string>UIInterfaceOrientationLandscapeLeft</string>
+ <string>UIInterfaceOrientationLandscapeRight</string>
+ </array>
+ <key>MinimumOSVersion</key>
+ <string>8.0</string>
+ <key>CFBundleDisplayName</key>
+ <string>HelloworldXamarin</string>
+ <key>CFBundleIdentifier</key>
+ <string>com.companyname.HelloworldXamarin</string>
+ <key>CFBundleVersion</key>
+ <string>1.0</string>
+ <key>UILaunchStoryboardName</key>
+ <string>LaunchScreen</string>
+ <key>CFBundleName</key>
+ <string>HelloworldXamarin</string>
+ <key>XSAppIconAssets</key>
+ <string>Assets.xcassets/AppIcon.appiconset</string>
+</dict>
+</plist>
#region Copyright notice and license
-
-// Copyright 2018 The gRPC Authors
+// Copyright 2020 The gRPC Authors
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
-
#endregion
using System;
--- /dev/null
+#region Copyright notice and license
+// Copyright 2020 The gRPC Authors
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+#endregion
+
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("HelloworldXamarin.iOS")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("HelloworldXamarin.iOS")]
+[assembly: AssemblyCopyright("Copyright © 2020")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible
+// to COM components. If you need to access a type in this assembly from
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("72bdc44f-c588-44f3-b6df-9aace7daafdd")]
+
+// Version information for an assembly consists of the following four values:
+//
+// Major Version
+// Minor Version
+// Build Number
+// Revision
+//
+// You can specify all the values or you can default the Build and Revision Numbers
+// by using the '*' as shown below:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="6245" systemVersion="13F34" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" initialViewController="X5k-f2-b5h">
+ <dependencies>
+ <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="6238"/>
+ </dependencies>
+ <scenes>
+ <!--View Controller-->
+ <scene sceneID="gAE-YM-kbH">
+ <objects>
+ <viewController id="X5k-f2-b5h" sceneMemberID="viewController">
+ <layoutGuides>
+ <viewControllerLayoutGuide type="top" id="Y8P-hJ-Z43"/>
+ <viewControllerLayoutGuide type="bottom" id="9ZL-r4-8FZ"/>
+ </layoutGuides>
+ <view key="view" contentMode="scaleToFill" id="yd7-JS-zBw">
+ <rect key="frame" x="0.0" y="0.0" width="600" height="600"/>
+ <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+ <subviews>
+ <imageView userInteractionEnabled="NO" contentMode="scaleToFill" misplaced="YES" image="Icon-60.png" translatesAutoresizingMaskIntoConstraints="NO" id="23">
+ <rect key="frame" x="270" y="270" width="60" height="60"/>
+ <rect key="contentStretch" x="0.0" y="0.0" width="0.0" height="0.0"/>
+ </imageView>
+ </subviews>
+ <color key="backgroundColor" red="0.20392156862745098" green="0.59607843137254901" blue="0.85882352941176465" alpha="1" colorSpace="calibratedRGB"/>
+ <constraints>
+ <constraint firstItem="23" firstAttribute="centerY" secondItem="yd7-JS-zBw" secondAttribute="centerY" priority="1" id="39"/>
+ <constraint firstItem="23" firstAttribute="centerX" secondItem="yd7-JS-zBw" secondAttribute="centerX" priority="1" id="41"/>
+ </constraints>
+ </view>
+ </viewController>
+ <placeholder placeholderIdentifier="IBFirstResponder" id="XAI-xm-WK6" userLabel="First Responder" sceneMemberID="firstResponder"/>
+ </objects>
+ <point key="canvasLocation" x="349" y="339"/>
+ </scene>
+ </scenes>
+ <resources>
+ <image name="Icon-60.png" width="180" height="180"/>
+ </resources>
+</document>
+\r
Microsoft Visual Studio Solution File, Format Version 12.00\r
-# Visual Studio 15\r
-VisualStudioVersion = 15.0.28307.329\r
+# Visual Studio Version 16\r
+VisualStudioVersion = 16.0.30523.141\r
MinimumVisualStudioVersion = 10.0.40219.1\r
-Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "HelloworldXamarin", "HelloworldXamarin\HelloworldXamarin.shproj", "{42FFF3D8-934F-4475-8E68-08DA340BF6E8}"\r
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HelloworldXamarin.Android", "HelloworldXamarin.Android\HelloworldXamarin.Android.csproj", "{FB8D18D2-51AF-432C-8EA0-21B4454F45A9}"\r
EndProject\r
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HelloworldXamarin.Droid", "Droid\HelloworldXamarin.Droid.csproj", "{B9B0D41C-1C07-4590-A919-5865E741B2EA}"\r
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HelloworldXamarin.iOS", "HelloworldXamarin.iOS\HelloworldXamarin.iOS.csproj", "{101480C8-667F-45F0-9E3B-1201CE5F3D9F}"\r
EndProject\r
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HelloworldXamarin.iOS", "iOS\HelloworldXamarin.iOS.csproj", "{62336DF0-60D8-478F-8140-B3CB089B417E}"\r
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HelloworldXamarin", "HelloworldXamarin\HelloworldXamarin.csproj", "{5C8483A1-8135-481A-880A-6C83DF3D92C4}"\r
EndProject\r
Global\r
- GlobalSection(SharedMSBuildProjectFiles) = preSolution\r
- HelloworldXamarin\HelloworldXamarin.projitems*{42fff3d8-934f-4475-8e68-08da340bf6e8}*SharedItemsImports = 13\r
- HelloworldXamarin\HelloworldXamarin.projitems*{62336df0-60d8-478f-8140-b3cb089b417e}*SharedItemsImports = 4\r
- HelloworldXamarin\HelloworldXamarin.projitems*{b9b0d41c-1c07-4590-a919-5865e741b2ea}*SharedItemsImports = 4\r
- EndGlobalSection\r
GlobalSection(SolutionConfigurationPlatforms) = preSolution\r
Debug|Any CPU = Debug|Any CPU\r
Debug|iPhone = Debug|iPhone\r
Release|iPhoneSimulator = Release|iPhoneSimulator\r
EndGlobalSection\r
GlobalSection(ProjectConfigurationPlatforms) = postSolution\r
- {B9B0D41C-1C07-4590-A919-5865E741B2EA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU\r
- {B9B0D41C-1C07-4590-A919-5865E741B2EA}.Debug|Any CPU.Build.0 = Debug|Any CPU\r
- {B9B0D41C-1C07-4590-A919-5865E741B2EA}.Debug|iPhone.ActiveCfg = Debug|Any CPU\r
- {B9B0D41C-1C07-4590-A919-5865E741B2EA}.Debug|iPhone.Build.0 = Debug|Any CPU\r
- {B9B0D41C-1C07-4590-A919-5865E741B2EA}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU\r
- {B9B0D41C-1C07-4590-A919-5865E741B2EA}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU\r
- {B9B0D41C-1C07-4590-A919-5865E741B2EA}.Release|Any CPU.ActiveCfg = Release|Any CPU\r
- {B9B0D41C-1C07-4590-A919-5865E741B2EA}.Release|Any CPU.Build.0 = Release|Any CPU\r
- {B9B0D41C-1C07-4590-A919-5865E741B2EA}.Release|iPhone.ActiveCfg = Release|Any CPU\r
- {B9B0D41C-1C07-4590-A919-5865E741B2EA}.Release|iPhone.Build.0 = Release|Any CPU\r
- {B9B0D41C-1C07-4590-A919-5865E741B2EA}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU\r
- {B9B0D41C-1C07-4590-A919-5865E741B2EA}.Release|iPhoneSimulator.Build.0 = Release|Any CPU\r
- {62336DF0-60D8-478F-8140-B3CB089B417E}.Debug|Any CPU.ActiveCfg = Debug|iPhoneSimulator\r
- {62336DF0-60D8-478F-8140-B3CB089B417E}.Debug|Any CPU.Build.0 = Debug|iPhoneSimulator\r
- {62336DF0-60D8-478F-8140-B3CB089B417E}.Debug|iPhone.ActiveCfg = Debug|iPhone\r
- {62336DF0-60D8-478F-8140-B3CB089B417E}.Debug|iPhone.Build.0 = Debug|iPhone\r
- {62336DF0-60D8-478F-8140-B3CB089B417E}.Debug|iPhoneSimulator.ActiveCfg = Debug|iPhoneSimulator\r
- {62336DF0-60D8-478F-8140-B3CB089B417E}.Debug|iPhoneSimulator.Build.0 = Debug|iPhoneSimulator\r
- {62336DF0-60D8-478F-8140-B3CB089B417E}.Release|Any CPU.ActiveCfg = Release|iPhone\r
- {62336DF0-60D8-478F-8140-B3CB089B417E}.Release|Any CPU.Build.0 = Release|iPhone\r
- {62336DF0-60D8-478F-8140-B3CB089B417E}.Release|iPhone.ActiveCfg = Release|iPhone\r
- {62336DF0-60D8-478F-8140-B3CB089B417E}.Release|iPhone.Build.0 = Release|iPhone\r
- {62336DF0-60D8-478F-8140-B3CB089B417E}.Release|iPhoneSimulator.ActiveCfg = Release|iPhoneSimulator\r
- {62336DF0-60D8-478F-8140-B3CB089B417E}.Release|iPhoneSimulator.Build.0 = Release|iPhoneSimulator\r
+ {FB8D18D2-51AF-432C-8EA0-21B4454F45A9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU\r
+ {FB8D18D2-51AF-432C-8EA0-21B4454F45A9}.Debug|Any CPU.Build.0 = Debug|Any CPU\r
+ {FB8D18D2-51AF-432C-8EA0-21B4454F45A9}.Debug|Any CPU.Deploy.0 = Debug|Any CPU\r
+ {FB8D18D2-51AF-432C-8EA0-21B4454F45A9}.Debug|iPhone.ActiveCfg = Debug|Any CPU\r
+ {FB8D18D2-51AF-432C-8EA0-21B4454F45A9}.Debug|iPhone.Build.0 = Debug|Any CPU\r
+ {FB8D18D2-51AF-432C-8EA0-21B4454F45A9}.Debug|iPhone.Deploy.0 = Debug|Any CPU\r
+ {FB8D18D2-51AF-432C-8EA0-21B4454F45A9}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU\r
+ {FB8D18D2-51AF-432C-8EA0-21B4454F45A9}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU\r
+ {FB8D18D2-51AF-432C-8EA0-21B4454F45A9}.Debug|iPhoneSimulator.Deploy.0 = Debug|Any CPU\r
+ {FB8D18D2-51AF-432C-8EA0-21B4454F45A9}.Release|Any CPU.ActiveCfg = Release|Any CPU\r
+ {FB8D18D2-51AF-432C-8EA0-21B4454F45A9}.Release|Any CPU.Build.0 = Release|Any CPU\r
+ {FB8D18D2-51AF-432C-8EA0-21B4454F45A9}.Release|Any CPU.Deploy.0 = Release|Any CPU\r
+ {FB8D18D2-51AF-432C-8EA0-21B4454F45A9}.Release|iPhone.ActiveCfg = Release|Any CPU\r
+ {FB8D18D2-51AF-432C-8EA0-21B4454F45A9}.Release|iPhone.Build.0 = Release|Any CPU\r
+ {FB8D18D2-51AF-432C-8EA0-21B4454F45A9}.Release|iPhone.Deploy.0 = Release|Any CPU\r
+ {FB8D18D2-51AF-432C-8EA0-21B4454F45A9}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU\r
+ {FB8D18D2-51AF-432C-8EA0-21B4454F45A9}.Release|iPhoneSimulator.Build.0 = Release|Any CPU\r
+ {FB8D18D2-51AF-432C-8EA0-21B4454F45A9}.Release|iPhoneSimulator.Deploy.0 = Release|Any CPU\r
+ {101480C8-667F-45F0-9E3B-1201CE5F3D9F}.Debug|Any CPU.ActiveCfg = Debug|iPhone\r
+ {101480C8-667F-45F0-9E3B-1201CE5F3D9F}.Debug|Any CPU.Build.0 = Debug|iPhone\r
+ {101480C8-667F-45F0-9E3B-1201CE5F3D9F}.Debug|Any CPU.Deploy.0 = Debug|iPhone\r
+ {101480C8-667F-45F0-9E3B-1201CE5F3D9F}.Debug|iPhone.ActiveCfg = Debug|iPhone\r
+ {101480C8-667F-45F0-9E3B-1201CE5F3D9F}.Debug|iPhone.Build.0 = Debug|iPhone\r
+ {101480C8-667F-45F0-9E3B-1201CE5F3D9F}.Debug|iPhone.Deploy.0 = Debug|iPhone\r
+ {101480C8-667F-45F0-9E3B-1201CE5F3D9F}.Debug|iPhoneSimulator.ActiveCfg = Debug|iPhoneSimulator\r
+ {101480C8-667F-45F0-9E3B-1201CE5F3D9F}.Debug|iPhoneSimulator.Build.0 = Debug|iPhoneSimulator\r
+ {101480C8-667F-45F0-9E3B-1201CE5F3D9F}.Debug|iPhoneSimulator.Deploy.0 = Debug|iPhoneSimulator\r
+ {101480C8-667F-45F0-9E3B-1201CE5F3D9F}.Release|Any CPU.ActiveCfg = Release|iPhoneSimulator\r
+ {101480C8-667F-45F0-9E3B-1201CE5F3D9F}.Release|Any CPU.Build.0 = Release|iPhoneSimulator\r
+ {101480C8-667F-45F0-9E3B-1201CE5F3D9F}.Release|Any CPU.Deploy.0 = Release|iPhoneSimulator\r
+ {101480C8-667F-45F0-9E3B-1201CE5F3D9F}.Release|iPhone.ActiveCfg = Release|iPhone\r
+ {101480C8-667F-45F0-9E3B-1201CE5F3D9F}.Release|iPhone.Build.0 = Release|iPhone\r
+ {101480C8-667F-45F0-9E3B-1201CE5F3D9F}.Release|iPhone.Deploy.0 = Release|iPhone\r
+ {101480C8-667F-45F0-9E3B-1201CE5F3D9F}.Release|iPhoneSimulator.ActiveCfg = Release|iPhoneSimulator\r
+ {101480C8-667F-45F0-9E3B-1201CE5F3D9F}.Release|iPhoneSimulator.Build.0 = Release|iPhoneSimulator\r
+ {101480C8-667F-45F0-9E3B-1201CE5F3D9F}.Release|iPhoneSimulator.Deploy.0 = Release|iPhoneSimulator\r
+ {5C8483A1-8135-481A-880A-6C83DF3D92C4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU\r
+ {5C8483A1-8135-481A-880A-6C83DF3D92C4}.Debug|Any CPU.Build.0 = Debug|Any CPU\r
+ {5C8483A1-8135-481A-880A-6C83DF3D92C4}.Debug|Any CPU.Deploy.0 = Debug|Any CPU\r
+ {5C8483A1-8135-481A-880A-6C83DF3D92C4}.Debug|iPhone.ActiveCfg = Debug|Any CPU\r
+ {5C8483A1-8135-481A-880A-6C83DF3D92C4}.Debug|iPhone.Build.0 = Debug|Any CPU\r
+ {5C8483A1-8135-481A-880A-6C83DF3D92C4}.Debug|iPhone.Deploy.0 = Debug|Any CPU\r
+ {5C8483A1-8135-481A-880A-6C83DF3D92C4}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU\r
+ {5C8483A1-8135-481A-880A-6C83DF3D92C4}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU\r
+ {5C8483A1-8135-481A-880A-6C83DF3D92C4}.Debug|iPhoneSimulator.Deploy.0 = Debug|Any CPU\r
+ {5C8483A1-8135-481A-880A-6C83DF3D92C4}.Release|Any CPU.ActiveCfg = Release|Any CPU\r
+ {5C8483A1-8135-481A-880A-6C83DF3D92C4}.Release|Any CPU.Build.0 = Release|Any CPU\r
+ {5C8483A1-8135-481A-880A-6C83DF3D92C4}.Release|Any CPU.Deploy.0 = Release|Any CPU\r
+ {5C8483A1-8135-481A-880A-6C83DF3D92C4}.Release|iPhone.ActiveCfg = Release|Any CPU\r
+ {5C8483A1-8135-481A-880A-6C83DF3D92C4}.Release|iPhone.Build.0 = Release|Any CPU\r
+ {5C8483A1-8135-481A-880A-6C83DF3D92C4}.Release|iPhone.Deploy.0 = Release|Any CPU\r
+ {5C8483A1-8135-481A-880A-6C83DF3D92C4}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU\r
+ {5C8483A1-8135-481A-880A-6C83DF3D92C4}.Release|iPhoneSimulator.Build.0 = Release|Any CPU\r
+ {5C8483A1-8135-481A-880A-6C83DF3D92C4}.Release|iPhoneSimulator.Deploy.0 = Release|Any CPU\r
EndGlobalSection\r
GlobalSection(SolutionProperties) = preSolution\r
HideSolutionNode = FALSE\r
EndGlobalSection\r
GlobalSection(ExtensibilityGlobals) = postSolution\r
- SolutionGuid = {CDC6F6DC-E1C6-45A7-ACC2-A61CDCCA1436}\r
+ SolutionGuid = {1C99C057-EAF9-413C-AC67-2595665C0444}\r
EndGlobalSection\r
EndGlobal\r
--- /dev/null
+<?xml version="1.0" encoding="utf-8" ?>
+<Application xmlns="http://xamarin.com/schemas/2014/forms"
+ xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
+ x:Class="HelloworldXamarin.App">
+ <Application.Resources>
+
+ </Application.Resources>
+</Application>
\ No newline at end of file
--- /dev/null
+#region Copyright notice and license
+// Copyright 2020 The gRPC Authors
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+#endregion
+
+using System;
+using Xamarin.Forms;
+using Xamarin.Forms.Xaml;
+
+namespace HelloworldXamarin
+{
+ public partial class App : Application
+ {
+ public App()
+ {
+ InitializeComponent();
+
+ MainPage = new MainPage();
+ }
+
+ protected override void OnStart()
+ {
+ }
+
+ protected override void OnSleep()
+ {
+ }
+
+ protected override void OnResume()
+ {
+ }
+ }
+}
--- /dev/null
+#region Copyright notice and license
+// Copyright 2020 The gRPC Authors
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+#endregion
+
+using Xamarin.Forms.Xaml;
+
+[assembly: XamlCompilation(XamlCompilationOptions.Compile)]
--- /dev/null
+<Project Sdk="Microsoft.NET.Sdk">
+
+ <PropertyGroup>
+ <TargetFramework>netstandard2.0</TargetFramework>
+ <ProduceReferenceAssembly>true</ProduceReferenceAssembly>
+ </PropertyGroup>
+
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
+ <DebugType>portable</DebugType>
+ <DebugSymbols>true</DebugSymbols>
+ </PropertyGroup>
+
+ <ItemGroup>
+ <PackageReference Include="Google.Protobuf" Version="3.13.0" />
+ <PackageReference Include="Grpc.Core" Version="2.32.0" />
+ <PackageReference Include="Xamarin.Forms" Version="4.6.0.1141" />
+ <PackageReference Include="Xamarin.Essentials" Version="1.5.3.2" />
+ </ItemGroup>
+</Project>
\ No newline at end of file
+++ /dev/null
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
- <PropertyGroup>\r
- <MSBuildAllProjects>$(MSBuildAllProjects);$(MSBuildThisFileFullPath)</MSBuildAllProjects>\r
- <HasSharedItems>true</HasSharedItems>\r
- <SharedGUID>{42FFF3D8-934F-4475-8E68-08DA340BF6E8}</SharedGUID>\r
- </PropertyGroup>\r
- <PropertyGroup Label="Configuration">\r
- <Import_RootNamespace>HelloworldXamarin</Import_RootNamespace>\r
- </PropertyGroup>\r
- <ItemGroup>\r
- <Compile Include="$(MSBuildThisFileDirectory)Helloworld.cs" />\r
- <Compile Include="$(MSBuildThisFileDirectory)HelloworldGrpc.cs" />\r
- </ItemGroup>\r
-</Project>
\ No newline at end of file
+++ /dev/null
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
- <PropertyGroup>\r
- <ProjectGuid>{42FFF3D8-934F-4475-8E68-08DA340BF6E8}</ProjectGuid>\r
- </PropertyGroup>\r
- <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />\r
- <Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\CodeSharing\Microsoft.CodeSharing.Common.Default.props" />\r
- <Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\CodeSharing\Microsoft.CodeSharing.Common.props" />\r
- <Import Project="HelloworldXamarin.projitems" Label="Shared" />\r
- <Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\CodeSharing\Microsoft.CodeSharing.CSharp.targets" />\r
-</Project>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="utf-8" ?>
+<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
+ xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
+ x:Class="HelloworldXamarin.MainPage">
+
+ <StackLayout>
+ <Frame BackgroundColor="#2196F3" Padding="24" CornerRadius="0">
+ <Label Text="Helloworld, gRPC + Xamarin" HorizontalTextAlignment="Center" TextColor="White" FontSize="36"/>
+ </Frame>
+ <Label Text="Click the button to try gRPC on Xamarin" FontSize="16" Padding="30,0,30,0"/>
+ <Button Text="Click here!" Clicked="Button_Clicked"/>
+ </StackLayout>
+
+</ContentPage>
#region Copyright notice and license
-
-// Copyright 2018 The gRPC Authors
+// Copyright 2020 The gRPC Authors
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
-
#endregion
using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Linq;
+using System.Text;
using System.Threading.Tasks;
-
+using Xamarin.Forms;
using Grpc.Core;
using Helloworld;
-using UIKit;
-
-namespace HelloworldXamarin.iOS
+namespace HelloworldXamarin
{
- public partial class ViewController : UIViewController
+ public partial class MainPage : ContentPage
{
const int Port = 30051;
int count = 1;
- public ViewController(IntPtr handle) : base(handle)
+ public MainPage()
{
+ InitializeComponent();
}
- public override void ViewDidLoad()
+ private void Button_Clicked(object sender, EventArgs e)
{
- base.ViewDidLoad();
-
- // Perform any additional setup after loading the view, typically from a nib.
- Button.AccessibilityIdentifier = "myButton";
- Button.TouchUpInside += delegate
- {
- var title = SayHello();
- Button.SetTitle(title, UIControlState.Normal);
- };
+ SayHello(sender as Button);
}
- public override void DidReceiveMemoryWarning()
- {
- base.DidReceiveMemoryWarning();
- // Release any cached data, images, etc that aren't in use.
- }
-
- private string SayHello()
+ private void SayHello(Button button)
{
Server server = new Server
{
};
server.Start();
+ // use loopback on host machine: https://developer.android.com/studio/run/emulator-networking
+ // 10.0.2.2:30051
Channel channel = new Channel("localhost:30051", ChannelCredentials.Insecure);
var client = new Greeter.GreeterClient(channel);
var reply = client.SayHello(new HelloRequest { Name = user });
+ button.Text = "Greeting: " + reply.Message;
+
channel.ShutdownAsync().Wait();
server.ShutdownAsync().Wait();
count++;
-
- return "Greeting: " + reply.Message;
}
-
class GreeterImpl : Greeter.GreeterBase
{
// Server side handler of the SayHello RPC
public override Task<HelloReply> SayHello(HelloRequest request, ServerCallContext context)
{
- return Task.FromResult(new HelloReply { Message = "Hello " + request.Name });
+ return Task.FromResult(new HelloReply { Message = "Hello " + request.Name });
}
}
}
+++ /dev/null
-#region Copyright notice and license
-
-// Copyright 2018 The gRPC Authors
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#endregion
-
-using Foundation;
-using UIKit;
-
-namespace HelloworldXamarin.iOS
-{
- // The UIApplicationDelegate for the application. This class is responsible for launching the
- // User Interface of the application, as well as listening (and optionally responding) to application events from iOS.
- [Register("AppDelegate")]
- public class AppDelegate : UIApplicationDelegate
- {
- // class-level declarations
-
- public override UIWindow Window
- {
- get;
- set;
- }
-
- public override bool FinishedLaunching(UIApplication application, NSDictionary launchOptions)
- {
- // Override point for customization after application launch.
- // If not required for your application you can safely delete this method
-
- return true;
- }
-
- public override void OnResignActivation(UIApplication application)
- {
- // Invoked when the application is about to move from active to inactive state.
- // This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message)
- // or when the user quits the application and it begins the transition to the background state.
- // Games should use this method to pause the game.
- }
-
- public override void DidEnterBackground(UIApplication application)
- {
- // Use this method to release shared resources, save user data, invalidate timers and store the application state.
- // If your application supports background execution this method is called instead of WillTerminate when the user quits.
- }
-
- public override void WillEnterForeground(UIApplication application)
- {
- // Called as part of the transition from background to active state.
- // Here you can undo many of the changes made on entering the background.
- }
-
- public override void OnActivated(UIApplication application)
- {
- // Restart any tasks that were paused (or not yet started) while the application was inactive.
- // If the application was previously in the background, optionally refresh the user interface.
- }
-
- public override void WillTerminate(UIApplication application)
- {
- // Called when the application is about to terminate. Save data, if needed. See also DidEnterBackground.
- }
- }
-}
-
+++ /dev/null
-{
- "images" : [
- {
- "idiom" : "iphone",
- "size" : "20x20",
- "scale" : "2x"
- },
- {
- "idiom" : "iphone",
- "size" : "20x20",
- "scale" : "3x"
- },
- {
- "idiom" : "iphone",
- "size" : "29x29",
- "scale" : "2x"
- },
- {
- "idiom" : "iphone",
- "size" : "29x29",
- "scale" : "3x"
- },
- {
- "idiom" : "iphone",
- "size" : "40x40",
- "scale" : "2x"
- },
- {
- "idiom" : "iphone",
- "size" : "40x40",
- "scale" : "3x"
- },
- {
- "idiom" : "iphone",
- "size" : "60x60",
- "scale" : "2x"
- },
- {
- "idiom" : "iphone",
- "size" : "60x60",
- "scale" : "3x"
- },
- {
- "idiom" : "ipad",
- "size" : "20x20",
- "scale" : "1x"
- },
- {
- "idiom" : "ipad",
- "size" : "20x20",
- "scale" : "2x"
- },
- {
- "idiom" : "ipad",
- "size" : "29x29",
- "scale" : "1x"
- },
- {
- "idiom" : "ipad",
- "size" : "29x29",
- "scale" : "2x"
- },
- {
- "idiom" : "ipad",
- "size" : "40x40",
- "scale" : "1x"
- },
- {
- "idiom" : "ipad",
- "size" : "40x40",
- "scale" : "2x"
- },
- {
- "idiom" : "ipad",
- "size" : "76x76",
- "scale" : "1x"
- },
- {
- "idiom" : "ipad",
- "size" : "76x76",
- "scale" : "2x"
- },
- {
- "idiom" : "ipad",
- "size" : "83.5x83.5",
- "scale" : "2x"
- },
- {
- "idiom" : "ios-marketing",
- "size" : "1024x1024",
- "scale" : "1x"
- },
- {
- "size" : "24x24",
- "idiom" : "watch",
- "scale" : "2x",
- "role" : "notificationCenter",
- "subtype" : "38mm"
- },
- {
- "size" : "27.5x27.5",
- "idiom" : "watch",
- "scale" : "2x",
- "role" : "notificationCenter",
- "subtype" : "42mm"
- },
- {
- "size" : "29x29",
- "idiom" : "watch",
- "role" : "companionSettings",
- "scale" : "2x"
- },
- {
- "size" : "29x29",
- "idiom" : "watch",
- "role" : "companionSettings",
- "scale" : "3x"
- },
- {
- "size" : "40x40",
- "idiom" : "watch",
- "scale" : "2x",
- "role" : "appLauncher",
- "subtype" : "38mm"
- },
- {
- "size" : "44x44",
- "idiom" : "watch",
- "scale" : "2x",
- "role" : "longLook",
- "subtype" : "42mm"
- },
- {
- "size" : "86x86",
- "idiom" : "watch",
- "scale" : "2x",
- "role" : "quickLook",
- "subtype" : "38mm"
- },
- {
- "size" : "98x98",
- "idiom" : "watch",
- "scale" : "2x",
- "role" : "quickLook",
- "subtype" : "42mm"
- },
- {
- "idiom" : "mac",
- "size" : "16x16",
- "scale" : "1x"
- },
- {
- "idiom" : "mac",
- "size" : "16x16",
- "scale" : "2x"
- },
- {
- "idiom" : "mac",
- "size" : "32x32",
- "scale" : "1x"
- },
- {
- "idiom" : "mac",
- "size" : "32x32",
- "scale" : "2x"
- },
- {
- "idiom" : "mac",
- "size" : "128x128",
- "scale" : "1x"
- },
- {
- "idiom" : "mac",
- "size" : "128x128",
- "scale" : "2x"
- },
- {
- "idiom" : "mac",
- "size" : "256x256",
- "scale" : "1x"
- },
- {
- "idiom" : "mac",
- "size" : "256x256",
- "scale" : "2x"
- },
- {
- "idiom" : "mac",
- "size" : "512x512",
- "scale" : "1x"
- },
- {
- "idiom" : "mac",
- "size" : "512x512",
- "scale" : "2x"
- }
- ],
- "info" : {
- "version" : 1,
- "author" : "xcode"
- }
-}
+++ /dev/null
-{
- "info" : {
- "version" : 1,
- "author" : "xcode"
- }
-}
\ No newline at end of file
+++ /dev/null
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
- <PropertyGroup>\r
- <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
- <Platform Condition=" '$(Platform)' == '' ">iPhoneSimulator</Platform>\r
- <ProjectGuid>{62336DF0-60D8-478F-8140-B3CB089B417E}</ProjectGuid>\r
- <ProjectTypeGuids>{FEACFBD2-3405-455C-9665-78FE426C6842};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>\r
- <OutputType>Exe</OutputType>\r
- <RootNamespace>HelloworldXamarin.iOS</RootNamespace>\r
- <AssemblyName>HelloworldXamarin.iOS</AssemblyName>\r
- <IPhoneResourcePrefix>Resources</IPhoneResourcePrefix>\r
- <NuGetPackageImportStamp>\r
- </NuGetPackageImportStamp>\r
- </PropertyGroup>\r
- <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|iPhoneSimulator' ">\r
- <DebugSymbols>true</DebugSymbols>\r
- <DebugType>full</DebugType>\r
- <Optimize>false</Optimize>\r
- <OutputPath>bin\iPhoneSimulator\Debug</OutputPath>\r
- <DefineConstants>DEBUG;ENABLE_TEST_CLOUD;</DefineConstants>\r
- <ErrorReport>prompt</ErrorReport>\r
- <WarningLevel>4</WarningLevel>\r
- <CodesignKey>iPhone Developer</CodesignKey>\r
- <MtouchDebug>true</MtouchDebug>\r
- <MtouchNoSymbolStrip>true</MtouchNoSymbolStrip>\r
- <MtouchFastDev>true</MtouchFastDev>\r
- <IOSDebuggerPort>45216</IOSDebuggerPort>\r
- <MtouchLink>None</MtouchLink>\r
- <MtouchArch>x86_64</MtouchArch>\r
- <MtouchHttpClientHandler>HttpClientHandler</MtouchHttpClientHandler>\r
- <PlatformTarget>x86</PlatformTarget>\r
- </PropertyGroup>\r
- <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|iPhone' ">\r
- <DebugType>pdbonly</DebugType>\r
- <Optimize>true</Optimize>\r
- <OutputPath>bin\iPhone\Release</OutputPath>\r
- <ErrorReport>prompt</ErrorReport>\r
- <WarningLevel>4</WarningLevel>\r
- <CodesignKey>iPhone Developer</CodesignKey>\r
- <MtouchFloat32>true</MtouchFloat32>\r
- <CodesignEntitlements>Entitlements.plist</CodesignEntitlements>\r
- <MtouchLink>SdkOnly</MtouchLink>\r
- <MtouchArch>ARM64</MtouchArch>\r
- <MtouchHttpClientHandler>HttpClientHandler</MtouchHttpClientHandler>\r
- <PlatformTarget>x86</PlatformTarget>\r
- </PropertyGroup>\r
- <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|iPhoneSimulator' ">\r
- <DebugType>pdbonly</DebugType>\r
- <Optimize>true</Optimize>\r
- <OutputPath>bin\iPhoneSimulator\Release</OutputPath>\r
- <ErrorReport>prompt</ErrorReport>\r
- <WarningLevel>4</WarningLevel>\r
- <CodesignKey>iPhone Developer</CodesignKey>\r
- <MtouchNoSymbolStrip>true</MtouchNoSymbolStrip>\r
- <MtouchLink>None</MtouchLink>\r
- <MtouchArch>x86_64</MtouchArch>\r
- <MtouchHttpClientHandler>HttpClientHandler</MtouchHttpClientHandler>\r
- <PlatformTarget>x86</PlatformTarget>\r
- </PropertyGroup>\r
- <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|iPhone' ">\r
- <DebugSymbols>true</DebugSymbols>\r
- <DebugType>full</DebugType>\r
- <Optimize>false</Optimize>\r
- <OutputPath>bin\iPhone\Debug</OutputPath>\r
- <DefineConstants>DEBUG;ENABLE_TEST_CLOUD;</DefineConstants>\r
- <ErrorReport>prompt</ErrorReport>\r
- <WarningLevel>4</WarningLevel>\r
- <CodesignKey>iPhone Developer</CodesignKey>\r
- <DeviceSpecificBuild>true</DeviceSpecificBuild>\r
- <MtouchDebug>true</MtouchDebug>\r
- <MtouchNoSymbolStrip>true</MtouchNoSymbolStrip>\r
- <MtouchFastDev>true</MtouchFastDev>\r
- <MtouchFloat32>true</MtouchFloat32>\r
- <CodesignEntitlements>Entitlements.plist</CodesignEntitlements>\r
- <IOSDebuggerPort>35164</IOSDebuggerPort>\r
- <MtouchLink>SdkOnly</MtouchLink>\r
- <MtouchArch>ARM64</MtouchArch>\r
- <MtouchHttpClientHandler>HttpClientHandler</MtouchHttpClientHandler>\r
- <PlatformTarget>x86</PlatformTarget>\r
- </PropertyGroup>\r
- <ItemGroup>\r
- <Reference Include="Google.Protobuf, Version=3.8.0.0, Culture=neutral, PublicKeyToken=a7d26565bac4d604, processorArchitecture=MSIL">\r
- <HintPath>..\packages\Google.Protobuf.3.8.0\lib\netstandard2.0\Google.Protobuf.dll</HintPath>\r
- </Reference>\r
- <Reference Include="Grpc.Core, Version=2.0.0.0, Culture=neutral, PublicKeyToken=d754f35622e28bad, processorArchitecture=MSIL">\r
- <HintPath>..\packages\Grpc.Core.2.23.0\lib\netstandard2.0\Grpc.Core.dll</HintPath>\r
- </Reference>\r
- <Reference Include="Grpc.Core.Api, Version=2.0.0.0, Culture=neutral, PublicKeyToken=d754f35622e28bad, processorArchitecture=MSIL">\r
- <HintPath>..\packages\Grpc.Core.Api.2.23.0\lib\netstandard2.0\Grpc.Core.Api.dll</HintPath>\r
- </Reference>\r
- <Reference Include="System" />\r
- <Reference Include="System.Buffers, Version=4.0.2.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">\r
- <HintPath>..\packages\System.Buffers.4.4.0\lib\netstandard2.0\System.Buffers.dll</HintPath>\r
- </Reference>\r
- <Reference Include="System.Memory, Version=4.0.1.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">\r
- <HintPath>..\packages\System.Memory.4.5.3\lib\netstandard2.0\System.Memory.dll</HintPath>\r
- </Reference>\r
- <Reference Include="System.Runtime.CompilerServices.Unsafe, Version=4.0.4.1, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">\r
- <HintPath>..\packages\System.Runtime.CompilerServices.Unsafe.4.5.2\lib\netstandard2.0\System.Runtime.CompilerServices.Unsafe.dll</HintPath>\r
- </Reference>\r
- <Reference Include="System.Xml" />\r
- <Reference Include="System.Core" />\r
- <Reference Include="Xamarin.iOS" />\r
- <Reference Include="System.IO.Compression" />\r
- <Reference Include="System.Net.Http" />\r
- <Reference Include="System.Runtime.Loader">\r
- <HintPath>..\packages\System.Runtime.Loader.4.0.0\lib\netstandard1.5\System.Runtime.Loader.dll</HintPath>\r
- </Reference>\r
- <Reference Include="System.Interactive.Async">\r
- <HintPath>..\packages\System.Interactive.Async.3.1.1\lib\netstandard1.3\System.Interactive.Async.dll</HintPath>\r
- </Reference>\r
- </ItemGroup>\r
- <ItemGroup>\r
- <ImageAsset Include="Assets.xcassets\AppIcon.appiconset\Contents.json">\r
- <Visible>false</Visible>\r
- </ImageAsset>\r
- <ImageAsset Include="Assets.xcassets\Contents.json">\r
- <Visible>false</Visible>\r
- </ImageAsset>\r
- </ItemGroup>\r
- <ItemGroup>\r
- <Folder Include="Resources\" />\r
- </ItemGroup>\r
- <ItemGroup>\r
- <InterfaceDefinition Include="LaunchScreen.storyboard" />\r
- <InterfaceDefinition Include="Main.storyboard" />\r
- </ItemGroup>\r
- <ItemGroup>\r
- <None Include="app.config" />\r
- <None Include="Info.plist" />\r
- <None Include="Entitlements.plist" />\r
- <None Include="packages.config" />\r
- </ItemGroup>\r
- <ItemGroup>\r
- <Compile Include="Main.cs" />\r
- <Compile Include="AppDelegate.cs" />\r
- <Compile Include="ViewController.cs" />\r
- <Compile Include="ViewController.designer.cs">\r
- <DependentUpon>ViewController.cs</DependentUpon>\r
- </Compile>\r
- </ItemGroup>\r
- <Import Project="..\HelloworldXamarin\HelloworldXamarin.projitems" Label="Shared" Condition="Exists('..\HelloworldXamarin\HelloworldXamarin.projitems')" />\r
- <Import Project="$(MSBuildExtensionsPath)\Xamarin\iOS\Xamarin.iOS.CSharp.targets" />\r
- <Import Project="..\packages\Grpc.Core.2.23.0\build\Xamarin.iOS10\Grpc.Core.targets" Condition="Exists('..\packages\Grpc.Core.2.23.0\build\Xamarin.iOS10\Grpc.Core.targets')" />\r
- <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">\r
- <PropertyGroup>\r
- <ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>\r
- </PropertyGroup>\r
- <Error Condition="!Exists('..\packages\Grpc.Core.2.23.0\build\Xamarin.iOS10\Grpc.Core.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Grpc.Core.2.23.0\build\Xamarin.iOS10\Grpc.Core.targets'))" />\r
- </Target>\r
-</Project>
\ No newline at end of file
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
- <key>CFBundleName</key>
- <string>HelloworldXamarin</string>
- <key>CFBundleIdentifier</key>
- <string>io.grpc.examples.HelloworldXamarin</string>
- <key>CFBundleShortVersionString</key>
- <string>1.0</string>
- <key>CFBundleVersion</key>
- <string>1.0</string>
- <key>LSRequiresIPhoneOS</key>
- <true/>
- <key>MinimumOSVersion</key>
- <string>8.0</string>
- <key>UIDeviceFamily</key>
- <array>
- <integer>1</integer>
- <integer>2</integer>
- </array>
- <key>UILaunchStoryboardName</key>
- <string>LaunchScreen</string>
- <key>UIMainStoryboardFile</key>
- <string>Main</string>
- <key>UIMainStoryboardFile~ipad</key>
- <string>Main</string>
- <key>UIRequiredDeviceCapabilities</key>
- <array>
- <string>armv7</string>
- </array>
- <key>UISupportedInterfaceOrientations</key>
- <array>
- <string>UIInterfaceOrientationPortrait</string>
- <string>UIInterfaceOrientationLandscapeLeft</string>
- <string>UIInterfaceOrientationLandscapeRight</string>
- </array>
- <key>UISupportedInterfaceOrientations~ipad</key>
- <array>
- <string>UIInterfaceOrientationPortrait</string>
- <string>UIInterfaceOrientationPortraitUpsideDown</string>
- <string>UIInterfaceOrientationLandscapeLeft</string>
- <string>UIInterfaceOrientationLandscapeRight</string>
- </array>
- <key>XSAppIconAssets</key>
- <string>Assets.xcassets/AppIcon.appiconset</string>
-</dict>
-</plist>
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="9532" systemVersion="15D21" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES" initialViewController="01J-lp-oVM">
- <dependencies>
- <deployment identifier="iOS" />
- <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="9530" />
- </dependencies>
- <scenes>
- <!--View Controller-->
- <scene sceneID="EHf-IW-A2E">
- <objects>
- <viewController id="01J-lp-oVM" sceneMemberID="viewController">
- <layoutGuides>
- <viewControllerLayoutGuide type="top" id="Llm-lL-Icb" />
- <viewControllerLayoutGuide type="bottom" id="xb3-aO-Qok" />
- </layoutGuides>
- <view key="view" contentMode="scaleToFill" id="Ze5-6b-2t3">
- <rect key="frame" x="0.0" y="0.0" width="600" height="600" />
- <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES" />
- <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite" />
- </view>
- </viewController>
- <placeholder placeholderIdentifier="IBFirstResponder" id="iYj-Kq-Ea1" userLabel="First Responder" sceneMemberID="firstResponder" />
- </objects>
- <point key="canvasLocation" x="53" y="375" />
- </scene>
- </scenes>
-</document>
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="6750" systemVersion="14C109" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" initialViewController="BYZ-38-t0r">
- <dependencies>
- <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="6735" />
- </dependencies>
- <scenes>
- <!--View Controller-->
- <scene sceneID="tne-QT-ifu">
- <objects>
- <viewController id="BYZ-38-t0r" customClass="ViewController" sceneMemberID="viewController">
- <layoutGuides>
- <viewControllerLayoutGuide type="top" id="y3c-jy-aDJ" />
- <viewControllerLayoutGuide type="bottom" id="wfy-db-euE" />
- </layoutGuides>
- <view key="view" contentMode="scaleToFill" id="8bC-Xf-vdC">
- <rect key="frame" x="0.0" y="0.0" width="600" height="600" />
- <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES" />
- <subviews>
- <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="oBE-Ac-vcx">
- <rect key="frame" x="224" y="285" width="152" height="30" />
- <state key="normal" title="Hello World, Click Me!">
- <color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite" />
- </state>
- </button>
- </subviews>
- <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite" />
- <constraints>
- <constraint firstItem="oBE-Ac-vcx" firstAttribute="centerX" secondItem="8bC-Xf-vdC" secondAttribute="centerX" id="HiD-uS-i16" />
- <constraint firstItem="oBE-Ac-vcx" firstAttribute="centerY" secondItem="8bC-Xf-vdC" secondAttribute="centerY" id="YgX-7e-bMc" />
- </constraints>
- </view>
- <connections>
- <outlet property="Button" destination="oBE-Ac-vcx" id="OkX-0Z-gth" />
- </connections>
- </viewController>
- <placeholder placeholderIdentifier="IBFirstResponder" id="dkx-z0-nzr" sceneMemberID="firstResponder" />
- </objects>
- </scene>
- </scenes>
-</document>
+++ /dev/null
-//
-// This file has been generated automatically by MonoDevelop to store outlets and
-// actions made in the Xcode designer. If it is removed, they will be lost.
-// Manual changes to this file may not be handled correctly.
-//
-using Foundation;
-
-namespace HelloworldXamarin.iOS
-{
- [Register("ViewController")]
- partial class ViewController
- {
- [Outlet]
- UIKit.UIButton Button { get; set; }
-
- void ReleaseDesignerOutlets()
- {
- if (Button != null)
- {
- Button.Dispose();
- Button = null;
- }
- }
- }
-}
+++ /dev/null
-<?xml version="1.0" encoding="utf-8"?>
-<packages>
- <package id="Google.Protobuf" version="3.8.0" targetFramework="xamarinios10" />
- <package id="Grpc.Core" version="2.23.0" targetFramework="xamarinios10" />
- <package id="Grpc.Core.Api" version="2.23.0" targetFramework="xamarinios10" />
- <package id="Microsoft.NETCore.Platforms" version="1.1.0" targetFramework="xamarinios10" />
- <package id="Microsoft.Win32.Primitives" version="4.3.0" targetFramework="xamarinios10" />
- <package id="NETStandard.Library" version="1.6.1" targetFramework="xamarinios10" />
- <package id="System.AppContext" version="4.3.0" targetFramework="xamarinios10" />
- <package id="System.Buffers" version="4.4.0" targetFramework="xamarinios10" />
- <package id="System.Collections" version="4.3.0" targetFramework="xamarinios10" />
- <package id="System.Collections.Concurrent" version="4.3.0" targetFramework="xamarinios10" />
- <package id="System.Console" version="4.3.0" targetFramework="xamarinios10" />
- <package id="System.Diagnostics.Debug" version="4.3.0" targetFramework="xamarinios10" />
- <package id="System.Diagnostics.Tools" version="4.3.0" targetFramework="xamarinios10" />
- <package id="System.Diagnostics.Tracing" version="4.3.0" targetFramework="xamarinios10" />
- <package id="System.Globalization" version="4.3.0" targetFramework="xamarinios10" />
- <package id="System.Globalization.Calendars" version="4.3.0" targetFramework="xamarinios10" />
- <package id="System.Interactive.Async" version="3.1.1" targetFramework="xamarinios10" />
- <package id="System.IO" version="4.3.0" targetFramework="xamarinios10" />
- <package id="System.IO.Compression" version="4.3.0" targetFramework="xamarinios10" />
- <package id="System.IO.Compression.ZipFile" version="4.3.0" targetFramework="xamarinios10" />
- <package id="System.IO.FileSystem" version="4.3.0" targetFramework="xamarinios10" />
- <package id="System.IO.FileSystem.Primitives" version="4.3.0" targetFramework="xamarinios10" />
- <package id="System.Linq" version="4.3.0" targetFramework="xamarinios10" />
- <package id="System.Linq.Expressions" version="4.3.0" targetFramework="xamarinios10" />
- <package id="System.Memory" version="4.5.3" targetFramework="xamarinios10" />
- <package id="System.Net.Http" version="4.3.0" targetFramework="xamarinios10" />
- <package id="System.Net.Primitives" version="4.3.0" targetFramework="xamarinios10" />
- <package id="System.Net.Sockets" version="4.3.0" targetFramework="xamarinios10" />
- <package id="System.ObjectModel" version="4.3.0" targetFramework="xamarinios10" />
- <package id="System.Reflection" version="4.3.0" targetFramework="xamarinios10" />
- <package id="System.Reflection.Extensions" version="4.3.0" targetFramework="xamarinios10" />
- <package id="System.Reflection.Primitives" version="4.3.0" targetFramework="xamarinios10" />
- <package id="System.Resources.ResourceManager" version="4.3.0" targetFramework="xamarinios10" />
- <package id="System.Runtime" version="4.3.0" targetFramework="xamarinios10" />
- <package id="System.Runtime.CompilerServices.Unsafe" version="4.5.2" targetFramework="xamarinios10" />
- <package id="System.Runtime.Extensions" version="4.3.0" targetFramework="xamarinios10" />
- <package id="System.Runtime.Handles" version="4.3.0" targetFramework="xamarinios10" />
- <package id="System.Runtime.InteropServices" version="4.3.0" targetFramework="xamarinios10" />
- <package id="System.Runtime.InteropServices.RuntimeInformation" version="4.3.0" targetFramework="xamarinios10" />
- <package id="System.Runtime.Loader" version="4.0.0" targetFramework="xamarinios10" />
- <package id="System.Runtime.Numerics" version="4.3.0" targetFramework="xamarinios10" />
- <package id="System.Security.Cryptography.Algorithms" version="4.3.0" targetFramework="xamarinios10" />
- <package id="System.Security.Cryptography.Encoding" version="4.3.0" targetFramework="xamarinios10" />
- <package id="System.Security.Cryptography.Primitives" version="4.3.0" targetFramework="xamarinios10" />
- <package id="System.Security.Cryptography.X509Certificates" version="4.3.0" targetFramework="xamarinios10" />
- <package id="System.Text.Encoding" version="4.3.0" targetFramework="xamarinios10" />
- <package id="System.Text.Encoding.Extensions" version="4.3.0" targetFramework="xamarinios10" />
- <package id="System.Text.RegularExpressions" version="4.3.0" targetFramework="xamarinios10" />
- <package id="System.Threading" version="4.3.0" targetFramework="xamarinios10" />
- <package id="System.Threading.Tasks" version="4.3.0" targetFramework="xamarinios10" />
- <package id="System.Threading.Thread" version="4.0.0" targetFramework="xamarinios10" />
- <package id="System.Threading.ThreadPool" version="4.0.10" targetFramework="xamarinios10" />
- <package id="System.Threading.Timer" version="4.3.0" targetFramework="xamarinios10" />
- <package id="System.Xml.ReaderWriter" version="4.3.0" targetFramework="xamarinios10" />
- <package id="System.Xml.XDocument" version="4.3.0" targetFramework="xamarinios10" />
-</packages>
\ No newline at end of file
var PROTO_PATH = __dirname + '/../../protos/helloworld.proto';
-var grpc = require('grpc');
+var parseArgs = require('minimist');
+var grpc = require('@grpc/grpc-js');
var protoLoader = require('@grpc/proto-loader');
var packageDefinition = protoLoader.loadSync(
PROTO_PATH,
var hello_proto = grpc.loadPackageDefinition(packageDefinition).helloworld;
function main() {
- var client = new hello_proto.Greeter('localhost:50051',
+ var argv = parseArgs(process.argv.slice(2), {
+ string: 'target'
+ });
+ var target;
+ if (argv.target) {
+ target = argv.target;
+ } else {
+ target = 'localhost:50051';
+ }
+ var client = new hello_proto.Greeter(target,
grpc.credentials.createInsecure());
var user;
- if (process.argv.length >= 3) {
- user = process.argv[2];
+ if (argv._.length > 0) {
+ user = argv._[0];
} else {
user = 'world';
}
var PROTO_PATH = __dirname + '/../../protos/helloworld.proto';
-var grpc = require('grpc');
+var grpc = require('@grpc/grpc-js');
var protoLoader = require('@grpc/proto-loader');
var packageDefinition = protoLoader.loadSync(
PROTO_PATH,
function main() {
var server = new grpc.Server();
server.addService(hello_proto.Greeter.service, {sayHello: sayHello});
- server.bind('0.0.0.0:50051', grpc.ServerCredentials.createInsecure());
- server.start();
+ server.bindAsync('0.0.0.0:50051', grpc.ServerCredentials.createInsecure(), () => {
+ server.start();
+ });
}
main();
var parseArgs = require('minimist');
var path = require('path');
var _ = require('lodash');
-var grpc = require('grpc');
+var grpc = require('@grpc/grpc-js');
var protoLoader = require('@grpc/proto-loader');
var packageDefinition = protoLoader.loadSync(
PROTO_PATH,
var parseArgs = require('minimist');
var path = require('path');
var _ = require('lodash');
-var grpc = require('grpc');
+var grpc = require('@grpc/grpc-js');
var protoLoader = require('@grpc/proto-loader');
var packageDefinition = protoLoader.loadSync(
PROTO_PATH,
if (require.main === module) {
// If this is run as a script, start a server on an unused port
var routeServer = getServer();
- routeServer.bind('0.0.0.0:50051', grpc.ServerCredentials.createInsecure());
- var argv = parseArgs(process.argv, {
- string: 'db_path'
- });
- fs.readFile(path.resolve(argv.db_path), function(err, data) {
- if (err) throw err;
- feature_list = JSON.parse(data);
- routeServer.start();
+ routeServer.bindAsync('0.0.0.0:50051', grpc.ServerCredentials.createInsecure(), () => {
+ var argv = parseArgs(process.argv, {
+ string: 'db_path'
+ });
+ fs.readFile(path.resolve(argv.db_path), function(err, data) {
+ if (err) throw err;
+ feature_list = JSON.parse(data);
+ routeServer.start();
+ });
});
}
--- /dev/null
+{
+ "name": "grpc-examples",
+ "version": "0.1.0",
+ "lockfileVersion": 1,
+ "requires": true,
+ "dependencies": {
+ "@grpc/grpc-js": {
+ "version": "1.1.8",
+ "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.1.8.tgz",
+ "integrity": "sha512-64hg5rmEm6F/NvlWERhHmmgxbWU8nD2TMWE+9TvG7/WcOrFT3fzg/Uu631pXRFwmJ4aWO/kp9vVSlr8FUjBDLA==",
+ "requires": {
+ "@grpc/proto-loader": "^0.6.0-pre14",
+ "@types/node": "^12.12.47",
+ "google-auth-library": "^6.0.0",
+ "semver": "^6.2.0"
+ },
+ "dependencies": {
+ "@grpc/proto-loader": {
+ "version": "0.6.0-pre9",
+ "resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.6.0-pre9.tgz",
+ "integrity": "sha512-oM+LjpEjNzW5pNJjt4/hq1HYayNeQT+eGrOPABJnYHv7TyNPDNzkQ76rDYZF86X5swJOa4EujEMzQ9iiTdPgww==",
+ "requires": {
+ "@types/long": "^4.0.1",
+ "lodash.camelcase": "^4.3.0",
+ "long": "^4.0.0",
+ "protobufjs": "^6.9.0",
+ "yargs": "^15.3.1"
+ }
+ },
+ "ansi-regex": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz",
+ "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg=="
+ },
+ "cliui": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz",
+ "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==",
+ "requires": {
+ "string-width": "^4.2.0",
+ "strip-ansi": "^6.0.0",
+ "wrap-ansi": "^6.2.0"
+ }
+ },
+ "is-fullwidth-code-point": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+ "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg=="
+ },
+ "semver": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw=="
+ },
+ "string-width": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz",
+ "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==",
+ "requires": {
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.0"
+ }
+ },
+ "strip-ansi": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz",
+ "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==",
+ "requires": {
+ "ansi-regex": "^5.0.0"
+ }
+ },
+ "wrap-ansi": {
+ "version": "6.2.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz",
+ "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==",
+ "requires": {
+ "ansi-styles": "^4.0.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0"
+ }
+ },
+ "y18n": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz",
+ "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w=="
+ },
+ "yargs": {
+ "version": "15.4.1",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz",
+ "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==",
+ "requires": {
+ "cliui": "^6.0.0",
+ "decamelize": "^1.2.0",
+ "find-up": "^4.1.0",
+ "get-caller-file": "^2.0.1",
+ "require-directory": "^2.1.1",
+ "require-main-filename": "^2.0.0",
+ "set-blocking": "^2.0.0",
+ "string-width": "^4.2.0",
+ "which-module": "^2.0.0",
+ "y18n": "^4.0.0",
+ "yargs-parser": "^18.1.2"
+ }
+ }
+ }
+ },
+ "@grpc/proto-loader": {
+ "version": "0.5.5",
+ "resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.5.5.tgz",
+ "integrity": "sha512-WwN9jVNdHRQoOBo9FDH7qU+mgfjPc8GygPYms3M+y3fbQLfnCe/Kv/E01t7JRgnrsOHH8euvSbed3mIalXhwqQ==",
+ "requires": {
+ "lodash.camelcase": "^4.3.0",
+ "protobufjs": "^6.8.6"
+ }
+ },
+ "@protobufjs/aspromise": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz",
+ "integrity": "sha1-m4sMxmPWaafY9vXQiToU00jzD78="
+ },
+ "@protobufjs/base64": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz",
+ "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg=="
+ },
+ "@protobufjs/codegen": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz",
+ "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg=="
+ },
+ "@protobufjs/eventemitter": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz",
+ "integrity": "sha1-NVy8mLr61ZePntCV85diHx0Ga3A="
+ },
+ "@protobufjs/fetch": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz",
+ "integrity": "sha1-upn7WYYUr2VwDBYZ/wbUVLDYTEU=",
+ "requires": {
+ "@protobufjs/aspromise": "^1.1.1",
+ "@protobufjs/inquire": "^1.1.0"
+ }
+ },
+ "@protobufjs/float": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz",
+ "integrity": "sha1-Xp4avctz/Ap8uLKR33jIy9l7h9E="
+ },
+ "@protobufjs/inquire": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz",
+ "integrity": "sha1-/yAOPnzyQp4tyvwRQIKOjMY48Ik="
+ },
+ "@protobufjs/path": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz",
+ "integrity": "sha1-bMKyDFya1q0NzP0hynZz2Nf79o0="
+ },
+ "@protobufjs/pool": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz",
+ "integrity": "sha1-Cf0V8tbTq/qbZbw2ZQbWrXhG/1Q="
+ },
+ "@protobufjs/utf8": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz",
+ "integrity": "sha1-p3c2C1s5oaLlEG+OhY8v0tBgxXA="
+ },
+ "@types/long": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.1.tgz",
+ "integrity": "sha512-5tXH6Bx/kNGd3MgffdmP4dy2Z+G4eaXw0SE81Tq3BNadtnMR5/ySMzX4SLEzHJzSmPNn4HIdpQsBvXMUykr58w=="
+ },
+ "@types/node": {
+ "version": "12.19.3",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-12.19.3.tgz",
+ "integrity": "sha512-8Jduo8wvvwDzEVJCOvS/G6sgilOLvvhn1eMmK3TW8/T217O7u1jdrK6ImKLv80tVryaPSVeKu6sjDEiFjd4/eg=="
+ },
+ "abort-controller": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz",
+ "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==",
+ "requires": {
+ "event-target-shim": "^5.0.0"
+ }
+ },
+ "agent-base": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz",
+ "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==",
+ "requires": {
+ "debug": "4"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.2.0.tgz",
+ "integrity": "sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg==",
+ "requires": {
+ "ms": "2.1.2"
+ }
+ }
+ }
+ },
+ "ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "requires": {
+ "color-convert": "^2.0.1"
+ }
+ },
+ "arrify": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz",
+ "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug=="
+ },
+ "async": {
+ "version": "1.5.2",
+ "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz",
+ "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo="
+ },
+ "base64-js": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz",
+ "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g=="
+ },
+ "bignumber.js": {
+ "version": "9.0.1",
+ "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.0.1.tgz",
+ "integrity": "sha512-IdZR9mh6ahOBv/hYGiXyVuyCetmGJhtYkqLBpTStdhEGjegpPlUawydyaF3pbIOFynJTpllEs+NP+CS9jKFLjA=="
+ },
+ "buffer-equal-constant-time": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz",
+ "integrity": "sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk="
+ },
+ "color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "requires": {
+ "color-name": "~1.1.4"
+ }
+ },
+ "color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
+ },
+ "decamelize": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
+ "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA="
+ },
+ "ecdsa-sig-formatter": {
+ "version": "1.0.11",
+ "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz",
+ "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==",
+ "requires": {
+ "safe-buffer": "^5.0.1"
+ }
+ },
+ "emoji-regex": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="
+ },
+ "event-target-shim": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz",
+ "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ=="
+ },
+ "extend": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
+ "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g=="
+ },
+ "fast-text-encoding": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/fast-text-encoding/-/fast-text-encoding-1.0.3.tgz",
+ "integrity": "sha512-dtm4QZH9nZtcDt8qJiOH9fcQd1NAgi+K1O2DbE6GG1PPCK/BWfOH3idCTRQ4ImXRUOyopDEgDEnVEE7Y/2Wrig=="
+ },
+ "find-up": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
+ "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
+ "requires": {
+ "locate-path": "^5.0.0",
+ "path-exists": "^4.0.0"
+ }
+ },
+ "gaxios": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-4.0.1.tgz",
+ "integrity": "sha512-jOin8xRZ/UytQeBpSXFqIzqU7Fi5TqgPNLlUsSB8kjJ76+FiGBfImF8KJu++c6J4jOldfJUtt0YmkRj2ZpSHTQ==",
+ "requires": {
+ "abort-controller": "^3.0.0",
+ "extend": "^3.0.2",
+ "https-proxy-agent": "^5.0.0",
+ "is-stream": "^2.0.0",
+ "node-fetch": "^2.3.0"
+ }
+ },
+ "gcp-metadata": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-4.2.1.tgz",
+ "integrity": "sha512-tSk+REe5iq/N+K+SK1XjZJUrFPuDqGZVzCy2vocIHIGmPlTGsa8owXMJwGkrXr73NO0AzhPW4MF2DEHz7P2AVw==",
+ "requires": {
+ "gaxios": "^4.0.0",
+ "json-bigint": "^1.0.0"
+ }
+ },
+ "get-caller-file": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
+ "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg=="
+ },
+ "google-auth-library": {
+ "version": "6.1.3",
+ "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-6.1.3.tgz",
+ "integrity": "sha512-m9mwvY3GWbr7ZYEbl61isWmk+fvTmOt0YNUfPOUY2VH8K5pZlAIWJjxEi0PqR3OjMretyiQLI6GURMrPSwHQ2g==",
+ "requires": {
+ "arrify": "^2.0.0",
+ "base64-js": "^1.3.0",
+ "ecdsa-sig-formatter": "^1.0.11",
+ "fast-text-encoding": "^1.0.0",
+ "gaxios": "^4.0.0",
+ "gcp-metadata": "^4.2.0",
+ "gtoken": "^5.0.4",
+ "jws": "^4.0.0",
+ "lru-cache": "^6.0.0"
+ }
+ },
+ "google-p12-pem": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/google-p12-pem/-/google-p12-pem-3.0.3.tgz",
+ "integrity": "sha512-wS0ek4ZtFx/ACKYF3JhyGe5kzH7pgiQ7J5otlumqR9psmWMYc+U9cErKlCYVYHoUaidXHdZ2xbo34kB+S+24hA==",
+ "requires": {
+ "node-forge": "^0.10.0"
+ }
+ },
+ "google-protobuf": {
+ "version": "3.13.0",
+ "resolved": "https://registry.npmjs.org/google-protobuf/-/google-protobuf-3.13.0.tgz",
+ "integrity": "sha512-ZIf3qfLFayVrPvAjeKKxO5FRF1/NwRxt6Dko+fWEMuHwHbZx8/fcaAao9b0wCM6kr8qeg2te8XTpyuvKuD9aKw=="
+ },
+ "gtoken": {
+ "version": "5.0.5",
+ "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-5.0.5.tgz",
+ "integrity": "sha512-wvjkecutFh8kVfbcdBdUWqDRrXb+WrgD79DBDEYf1Om8S1FluhylhtFjrL7Tx69vNhh259qA3Q1P4sPtb+kUYw==",
+ "requires": {
+ "gaxios": "^4.0.0",
+ "google-p12-pem": "^3.0.3",
+ "jws": "^4.0.0",
+ "mime": "^2.2.0"
+ }
+ },
+ "https-proxy-agent": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz",
+ "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==",
+ "requires": {
+ "agent-base": "6",
+ "debug": "4"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.2.0.tgz",
+ "integrity": "sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg==",
+ "requires": {
+ "ms": "2.1.2"
+ }
+ }
+ }
+ },
+ "is-stream": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz",
+ "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw=="
+ },
+ "json-bigint": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/json-bigint/-/json-bigint-1.0.0.tgz",
+ "integrity": "sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ==",
+ "requires": {
+ "bignumber.js": "^9.0.0"
+ }
+ },
+ "jwa": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.0.tgz",
+ "integrity": "sha512-jrZ2Qx916EA+fq9cEAeCROWPTfCwi1IVHqT2tapuqLEVVDKFDENFw1oL+MwrTvH6msKxsd1YTDVw6uKEcsrLEA==",
+ "requires": {
+ "buffer-equal-constant-time": "1.0.1",
+ "ecdsa-sig-formatter": "1.0.11",
+ "safe-buffer": "^5.0.1"
+ }
+ },
+ "jws": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/jws/-/jws-4.0.0.tgz",
+ "integrity": "sha512-KDncfTmOZoOMTFG4mBlG0qUIOlc03fmzH+ru6RgYVZhPkyiy/92Owlt/8UEN+a4TXR1FQetfIpJE8ApdvdVxTg==",
+ "requires": {
+ "jwa": "^2.0.0",
+ "safe-buffer": "^5.0.1"
+ }
+ },
+ "locate-path": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
+ "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
+ "requires": {
+ "p-locate": "^4.1.0"
+ }
+ },
+ "lodash": {
+ "version": "4.17.20",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz",
+ "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA=="
+ },
+ "lodash.camelcase": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz",
+ "integrity": "sha1-soqmKIorn8ZRA1x3EfZathkDMaY="
+ },
+ "long": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz",
+ "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA=="
+ },
+ "lru-cache": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+ "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+ "requires": {
+ "yallist": "^4.0.0"
+ },
+ "dependencies": {
+ "yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
+ }
+ }
+ },
+ "mime": {
+ "version": "2.4.6",
+ "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.6.tgz",
+ "integrity": "sha512-RZKhC3EmpBchfTGBVb8fb+RL2cWyw/32lshnsETttkBAyAUXSGHxbEJWWRXc751DrIxG1q04b8QwMbAwkRPpUA=="
+ },
+ "minimist": {
+ "version": "1.2.5",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
+ "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw=="
+ },
+ "ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
+ },
+ "node-fetch": {
+ "version": "2.6.1",
+ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz",
+ "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw=="
+ },
+ "node-forge": {
+ "version": "0.10.0",
+ "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.10.0.tgz",
+ "integrity": "sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA=="
+ },
+ "p-limit": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
+ "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
+ "requires": {
+ "p-try": "^2.0.0"
+ }
+ },
+ "p-locate": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
+ "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
+ "requires": {
+ "p-limit": "^2.2.0"
+ }
+ },
+ "p-try": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
+ "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ=="
+ },
+ "path-exists": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
+ "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w=="
+ },
+ "protobufjs": {
+ "version": "6.10.1",
+ "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-6.10.1.tgz",
+ "integrity": "sha512-pb8kTchL+1Ceg4lFd5XUpK8PdWacbvV5SK2ULH2ebrYtl4GjJmS24m6CKME67jzV53tbJxHlnNOSqQHbTsR9JQ==",
+ "requires": {
+ "@protobufjs/aspromise": "^1.1.2",
+ "@protobufjs/base64": "^1.1.2",
+ "@protobufjs/codegen": "^2.0.4",
+ "@protobufjs/eventemitter": "^1.1.0",
+ "@protobufjs/fetch": "^1.1.0",
+ "@protobufjs/float": "^1.0.2",
+ "@protobufjs/inquire": "^1.1.0",
+ "@protobufjs/path": "^1.1.2",
+ "@protobufjs/pool": "^1.1.0",
+ "@protobufjs/utf8": "^1.1.0",
+ "@types/long": "^4.0.1",
+ "@types/node": "^13.7.0",
+ "long": "^4.0.0"
+ },
+ "dependencies": {
+ "@types/node": {
+ "version": "13.13.30",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-13.13.30.tgz",
+ "integrity": "sha512-HmqFpNzp3TSELxU/bUuRK+xzarVOAsR00hzcvM0TXrMlt/+wcSLa5q6YhTb6/cA6wqDCZLDcfd8fSL95x5h7AA=="
+ }
+ }
+ },
+ "require-directory": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
+ "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I="
+ },
+ "require-main-filename": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz",
+ "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg=="
+ },
+ "safe-buffer": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
+ },
+ "set-blocking": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
+ "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc="
+ },
+ "which-module": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz",
+ "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho="
+ },
+ "yargs-parser": {
+ "version": "18.1.3",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz",
+ "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==",
+ "requires": {
+ "camelcase": "^5.0.0",
+ "decamelize": "^1.2.0"
+ },
+ "dependencies": {
+ "camelcase": {
+ "version": "5.3.1",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
+ "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg=="
+ }
+ }
+ }
+ }
+}
"name": "grpc-examples",
"version": "0.1.0",
"dependencies": {
- "@grpc/proto-loader": "^0.1.0",
+ "@grpc/proto-loader": "^0.5.0",
"async": "^1.5.2",
"google-protobuf": "^3.0.0",
- "grpc": "^1.11.0",
+ "@grpc/grpc-js": "^1.1.0",
"lodash": "^4.6.1",
"minimist": "^1.2.0"
}
```sh
cd ../../protos
npm install -g grpc-tools
-grpc_tools_node_protoc --js_out=import_style=commonjs,binary:../node/static_codegen/ --grpc_out=../node/static_codegen --plugin=protoc-gen-grpc=`which grpc_tools_node_protoc_plugin` helloworld.proto
-grpc_tools_node_protoc --js_out=import_style=commonjs,binary:../node/static_codegen/route_guide/ --grpc_out=../node/static_codegen/route_guide/ --plugin=protoc-gen-grpc=`which grpc_tools_node_protoc_plugin` route_guide.proto
+grpc_tools_node_protoc --js_out=import_style=commonjs,binary:../node/static_codegen/ --grpc_out=grpc_js:../node/static_codegen helloworld.proto
+grpc_tools_node_protoc --js_out=import_style=commonjs,binary:../node/static_codegen/route_guide/ --grpc_out=grpc_js:../node/static_codegen/route_guide/ route_guide.proto
```
var messages = require('./helloworld_pb');
var services = require('./helloworld_grpc_pb');
-var grpc = require('grpc');
+var grpc = require('@grpc/grpc-js');
function main() {
- var client = new services.GreeterClient('localhost:50051',
+ var argv = parseArgs(process.argv.slice(2), {
+ string: 'target'
+ });
+ var target;
+ if (argv.target) {
+ target = argv.target;
+ } else {
+ target = 'localhost:50051';
+ }
+ var client = new services.GreeterClient(target,
grpc.credentials.createInsecure());
var request = new messages.HelloRequest();
var user;
- if (process.argv.length >= 3) {
- user = process.argv[2];
+ if (argv._.length > 0) {
+ user = argv._[0];
} else {
user = 'world';
}
var messages = require('./helloworld_pb');
var services = require('./helloworld_grpc_pb');
-var grpc = require('grpc');
+var grpc = require('@grpc/grpc-js');
/**
* Implements the SayHello RPC method.
function main() {
var server = new grpc.Server();
server.addService(services.GreeterService, {sayHello: sayHello});
- server.bind('0.0.0.0:50051', grpc.ServerCredentials.createInsecure());
- server.start();
+ server.bindAsync('0.0.0.0:50051', grpc.ServerCredentials.createInsecure(), () => {
+ server.start();
+ });
}
main();
// limitations under the License.
//
'use strict';
-var grpc = require('grpc');
+var grpc = require('@grpc/grpc-js');
var helloworld_pb = require('./helloworld_pb.js');
-function serialize_HelloReply(arg) {
+function serialize_helloworld_HelloReply(arg) {
if (!(arg instanceof helloworld_pb.HelloReply)) {
- throw new Error('Expected argument of type HelloReply');
+ throw new Error('Expected argument of type helloworld.HelloReply');
}
- return new Buffer(arg.serializeBinary());
+ return Buffer.from(arg.serializeBinary());
}
-function deserialize_HelloReply(buffer_arg) {
+function deserialize_helloworld_HelloReply(buffer_arg) {
return helloworld_pb.HelloReply.deserializeBinary(new Uint8Array(buffer_arg));
}
-function serialize_HelloRequest(arg) {
+function serialize_helloworld_HelloRequest(arg) {
if (!(arg instanceof helloworld_pb.HelloRequest)) {
- throw new Error('Expected argument of type HelloRequest');
+ throw new Error('Expected argument of type helloworld.HelloRequest');
}
- return new Buffer(arg.serializeBinary());
+ return Buffer.from(arg.serializeBinary());
}
-function deserialize_HelloRequest(buffer_arg) {
+function deserialize_helloworld_HelloRequest(buffer_arg) {
return helloworld_pb.HelloRequest.deserializeBinary(new Uint8Array(buffer_arg));
}
// The greeting service definition.
var GreeterService = exports.GreeterService = {
// Sends a greeting
- sayHello: {
+sayHello: {
path: '/helloworld.Greeter/SayHello',
requestStream: false,
responseStream: false,
requestType: helloworld_pb.HelloRequest,
responseType: helloworld_pb.HelloReply,
- requestSerialize: serialize_HelloRequest,
- requestDeserialize: deserialize_HelloRequest,
- responseSerialize: serialize_HelloReply,
- responseDeserialize: deserialize_HelloReply,
+ requestSerialize: serialize_helloworld_HelloRequest,
+ requestDeserialize: deserialize_helloworld_HelloRequest,
+ responseSerialize: serialize_helloworld_HelloReply,
+ responseDeserialize: deserialize_helloworld_HelloReply,
},
};
+// source: helloworld.proto
/**
* @fileoverview
* @enhanceable
+ * @suppress {messageConventions} JS Compiler reports an error if a variable or
+ * field starts with 'MSG_' and isn't a translatable message.
* @public
*/
// GENERATED CODE -- DO NOT EDIT!
goog.exportSymbol('proto.helloworld.HelloReply', null, global);
goog.exportSymbol('proto.helloworld.HelloRequest', null, global);
-
/**
* Generated by JsPbCodeGenerator.
* @param {Array=} opt_data Optional initial data array, typically from a
};
goog.inherits(proto.helloworld.HelloRequest, jspb.Message);
if (goog.DEBUG && !COMPILED) {
+ /**
+ * @public
+ * @override
+ */
proto.helloworld.HelloRequest.displayName = 'proto.helloworld.HelloRequest';
}
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.helloworld.HelloReply = function(opt_data) {
+ jspb.Message.initialize(this, opt_data, 0, -1, null, null);
+};
+goog.inherits(proto.helloworld.HelloReply, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+ /**
+ * @public
+ * @override
+ */
+ proto.helloworld.HelloReply.displayName = 'proto.helloworld.HelloReply';
+}
+
if (jspb.Message.GENERATE_TO_OBJECT) {
/**
- * Creates an object representation of this proto suitable for use in Soy templates.
+ * Creates an object representation of this proto.
* Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * Optional fields that are not set will be set to undefined.
* To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
* For the list of reserved names please see:
- * com.google.apps.jspb.JsClassTemplate.JS_RESERVED_WORDS.
- * @param {boolean=} opt_includeInstance Whether to include the JSPB instance
- * for transitional soy proto support: http://goto/soy-param-migration
+ * net/proto2/compiler/js/internal/generator.cc#kKeyword.
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
+ * JSPB instance for transitional soy proto support:
+ * http://goto/soy-param-migration
* @return {!Object}
*/
proto.helloworld.HelloRequest.prototype.toObject = function(opt_includeInstance) {
/**
* Static version of the {@see toObject} method.
- * @param {boolean|undefined} includeInstance Whether to include the JSPB
- * instance for transitional soy proto support:
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
+ * the JSPB instance for transitional soy proto support:
* http://goto/soy-param-migration
* @param {!proto.helloworld.HelloRequest} msg The msg instance to transform.
* @return {!Object}
+ * @suppress {unusedLocalVariables} f is only used for nested messages
*/
proto.helloworld.HelloRequest.toObject = function(includeInstance, msg) {
var f, obj = {
- name: msg.getName()
+ name: jspb.Message.getFieldWithDefault(msg, 1, "")
};
if (includeInstance) {
/**
- * Class method variant: serializes the given message to binary data
- * (in protobuf wire format), writing to the given BinaryWriter.
- * @param {!proto.helloworld.HelloRequest} message
- * @param {!jspb.BinaryWriter} writer
- */
-proto.helloworld.HelloRequest.serializeBinaryToWriter = function(message, writer) {
- message.serializeBinaryToWriter(writer);
-};
-
-
-/**
* Serializes the message to binary data (in protobuf wire format).
* @return {!Uint8Array}
*/
proto.helloworld.HelloRequest.prototype.serializeBinary = function() {
var writer = new jspb.BinaryWriter();
- this.serializeBinaryToWriter(writer);
+ proto.helloworld.HelloRequest.serializeBinaryToWriter(this, writer);
return writer.getResultBuffer();
};
/**
- * Serializes the message to binary data (in protobuf wire format),
- * writing to the given BinaryWriter.
+ * Serializes the given message to binary data (in protobuf wire
+ * format), writing to the given BinaryWriter.
+ * @param {!proto.helloworld.HelloRequest} message
* @param {!jspb.BinaryWriter} writer
+ * @suppress {unusedLocalVariables} f is only used for nested messages
*/
-proto.helloworld.HelloRequest.prototype.serializeBinaryToWriter = function (writer) {
+proto.helloworld.HelloRequest.serializeBinaryToWriter = function(message, writer) {
var f = undefined;
- f = this.getName();
+ f = message.getName();
if (f.length > 0) {
writer.writeString(
1,
/**
- * Creates a deep clone of this proto. No data is shared with the original.
- * @return {!proto.helloworld.HelloRequest} The clone.
- */
-proto.helloworld.HelloRequest.prototype.cloneMessage = function() {
- return /** @type {!proto.helloworld.HelloRequest} */ (jspb.Message.cloneMessage(this));
-};
-
-
-/**
* optional string name = 1;
* @return {string}
*/
proto.helloworld.HelloRequest.prototype.getName = function() {
- return /** @type {string} */ (jspb.Message.getFieldProto3(this, 1, ""));
+ return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, ""));
};
-/** @param {string} value */
+/**
+ * @param {string} value
+ * @return {!proto.helloworld.HelloRequest} returns this
+ */
proto.helloworld.HelloRequest.prototype.setName = function(value) {
- jspb.Message.setField(this, 1, value);
+ return jspb.Message.setProto3StringField(this, 1, value);
};
-/**
- * Generated by JsPbCodeGenerator.
- * @param {Array=} opt_data Optional initial data array, typically from a
- * server response, or constructed directly in Javascript. The array is used
- * in place and becomes part of the constructed object. It is not cloned.
- * If no data is provided, the constructed object will be empty, but still
- * valid.
- * @extends {jspb.Message}
- * @constructor
- */
-proto.helloworld.HelloReply = function(opt_data) {
- jspb.Message.initialize(this, opt_data, 0, -1, null, null);
-};
-goog.inherits(proto.helloworld.HelloReply, jspb.Message);
-if (goog.DEBUG && !COMPILED) {
- proto.helloworld.HelloReply.displayName = 'proto.helloworld.HelloReply';
-}
if (jspb.Message.GENERATE_TO_OBJECT) {
/**
- * Creates an object representation of this proto suitable for use in Soy templates.
+ * Creates an object representation of this proto.
* Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * Optional fields that are not set will be set to undefined.
* To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
* For the list of reserved names please see:
- * com.google.apps.jspb.JsClassTemplate.JS_RESERVED_WORDS.
- * @param {boolean=} opt_includeInstance Whether to include the JSPB instance
- * for transitional soy proto support: http://goto/soy-param-migration
+ * net/proto2/compiler/js/internal/generator.cc#kKeyword.
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
+ * JSPB instance for transitional soy proto support:
+ * http://goto/soy-param-migration
* @return {!Object}
*/
proto.helloworld.HelloReply.prototype.toObject = function(opt_includeInstance) {
/**
* Static version of the {@see toObject} method.
- * @param {boolean|undefined} includeInstance Whether to include the JSPB
- * instance for transitional soy proto support:
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
+ * the JSPB instance for transitional soy proto support:
* http://goto/soy-param-migration
* @param {!proto.helloworld.HelloReply} msg The msg instance to transform.
* @return {!Object}
+ * @suppress {unusedLocalVariables} f is only used for nested messages
*/
proto.helloworld.HelloReply.toObject = function(includeInstance, msg) {
var f, obj = {
- message: msg.getMessage()
+ message: jspb.Message.getFieldWithDefault(msg, 1, "")
};
if (includeInstance) {
/**
- * Class method variant: serializes the given message to binary data
- * (in protobuf wire format), writing to the given BinaryWriter.
- * @param {!proto.helloworld.HelloReply} message
- * @param {!jspb.BinaryWriter} writer
- */
-proto.helloworld.HelloReply.serializeBinaryToWriter = function(message, writer) {
- message.serializeBinaryToWriter(writer);
-};
-
-
-/**
* Serializes the message to binary data (in protobuf wire format).
* @return {!Uint8Array}
*/
proto.helloworld.HelloReply.prototype.serializeBinary = function() {
var writer = new jspb.BinaryWriter();
- this.serializeBinaryToWriter(writer);
+ proto.helloworld.HelloReply.serializeBinaryToWriter(this, writer);
return writer.getResultBuffer();
};
/**
- * Serializes the message to binary data (in protobuf wire format),
- * writing to the given BinaryWriter.
+ * Serializes the given message to binary data (in protobuf wire
+ * format), writing to the given BinaryWriter.
+ * @param {!proto.helloworld.HelloReply} message
* @param {!jspb.BinaryWriter} writer
+ * @suppress {unusedLocalVariables} f is only used for nested messages
*/
-proto.helloworld.HelloReply.prototype.serializeBinaryToWriter = function (writer) {
+proto.helloworld.HelloReply.serializeBinaryToWriter = function(message, writer) {
var f = undefined;
- f = this.getMessage();
+ f = message.getMessage();
if (f.length > 0) {
writer.writeString(
1,
/**
- * Creates a deep clone of this proto. No data is shared with the original.
- * @return {!proto.helloworld.HelloReply} The clone.
- */
-proto.helloworld.HelloReply.prototype.cloneMessage = function() {
- return /** @type {!proto.helloworld.HelloReply} */ (jspb.Message.cloneMessage(this));
-};
-
-
-/**
* optional string message = 1;
* @return {string}
*/
proto.helloworld.HelloReply.prototype.getMessage = function() {
- return /** @type {string} */ (jspb.Message.getFieldProto3(this, 1, ""));
+ return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, ""));
};
-/** @param {string} value */
+/**
+ * @param {string} value
+ * @return {!proto.helloworld.HelloReply} returns this
+ */
proto.helloworld.HelloReply.prototype.setMessage = function(value) {
- jspb.Message.setField(this, 1, value);
+ return jspb.Message.setProto3StringField(this, 1, value);
};
var parseArgs = require('minimist');
var path = require('path');
var _ = require('lodash');
-var grpc = require('grpc');
+var grpc = require('@grpc/grpc-js');
var client = new services.RouteGuideClient('localhost:50051',
grpc.credentials.createInsecure());
// limitations under the License.
//
'use strict';
-var grpc = require('grpc');
+var grpc = require('@grpc/grpc-js');
var route_guide_pb = require('./route_guide_pb.js');
-function serialize_Feature(arg) {
+function serialize_routeguide_Feature(arg) {
if (!(arg instanceof route_guide_pb.Feature)) {
- throw new Error('Expected argument of type Feature');
+ throw new Error('Expected argument of type routeguide.Feature');
}
- return new Buffer(arg.serializeBinary());
+ return Buffer.from(arg.serializeBinary());
}
-function deserialize_Feature(buffer_arg) {
+function deserialize_routeguide_Feature(buffer_arg) {
return route_guide_pb.Feature.deserializeBinary(new Uint8Array(buffer_arg));
}
-function serialize_Point(arg) {
+function serialize_routeguide_Point(arg) {
if (!(arg instanceof route_guide_pb.Point)) {
- throw new Error('Expected argument of type Point');
+ throw new Error('Expected argument of type routeguide.Point');
}
- return new Buffer(arg.serializeBinary());
+ return Buffer.from(arg.serializeBinary());
}
-function deserialize_Point(buffer_arg) {
+function deserialize_routeguide_Point(buffer_arg) {
return route_guide_pb.Point.deserializeBinary(new Uint8Array(buffer_arg));
}
-function serialize_Rectangle(arg) {
+function serialize_routeguide_Rectangle(arg) {
if (!(arg instanceof route_guide_pb.Rectangle)) {
- throw new Error('Expected argument of type Rectangle');
+ throw new Error('Expected argument of type routeguide.Rectangle');
}
- return new Buffer(arg.serializeBinary());
+ return Buffer.from(arg.serializeBinary());
}
-function deserialize_Rectangle(buffer_arg) {
+function deserialize_routeguide_Rectangle(buffer_arg) {
return route_guide_pb.Rectangle.deserializeBinary(new Uint8Array(buffer_arg));
}
-function serialize_RouteNote(arg) {
+function serialize_routeguide_RouteNote(arg) {
if (!(arg instanceof route_guide_pb.RouteNote)) {
- throw new Error('Expected argument of type RouteNote');
+ throw new Error('Expected argument of type routeguide.RouteNote');
}
- return new Buffer(arg.serializeBinary());
+ return Buffer.from(arg.serializeBinary());
}
-function deserialize_RouteNote(buffer_arg) {
+function deserialize_routeguide_RouteNote(buffer_arg) {
return route_guide_pb.RouteNote.deserializeBinary(new Uint8Array(buffer_arg));
}
-function serialize_RouteSummary(arg) {
+function serialize_routeguide_RouteSummary(arg) {
if (!(arg instanceof route_guide_pb.RouteSummary)) {
- throw new Error('Expected argument of type RouteSummary');
+ throw new Error('Expected argument of type routeguide.RouteSummary');
}
- return new Buffer(arg.serializeBinary());
+ return Buffer.from(arg.serializeBinary());
}
-function deserialize_RouteSummary(buffer_arg) {
+function deserialize_routeguide_RouteSummary(buffer_arg) {
return route_guide_pb.RouteSummary.deserializeBinary(new Uint8Array(buffer_arg));
}
// Interface exported by the server.
var RouteGuideService = exports.RouteGuideService = {
// A simple RPC.
- //
- // Obtains the feature at a given position.
- //
- // A feature with an empty name is returned if there's no feature at the given
- // position.
- getFeature: {
+//
+// Obtains the feature at a given position.
+//
+// A feature with an empty name is returned if there's no feature at the given
+// position.
+getFeature: {
path: '/routeguide.RouteGuide/GetFeature',
requestStream: false,
responseStream: false,
requestType: route_guide_pb.Point,
responseType: route_guide_pb.Feature,
- requestSerialize: serialize_Point,
- requestDeserialize: deserialize_Point,
- responseSerialize: serialize_Feature,
- responseDeserialize: deserialize_Feature,
+ requestSerialize: serialize_routeguide_Point,
+ requestDeserialize: deserialize_routeguide_Point,
+ responseSerialize: serialize_routeguide_Feature,
+ responseDeserialize: deserialize_routeguide_Feature,
},
// A server-to-client streaming RPC.
- //
- // Obtains the Features available within the given Rectangle. Results are
- // streamed rather than returned at once (e.g. in a response message with a
- // repeated field), as the rectangle may cover a large area and contain a
- // huge number of features.
- listFeatures: {
+//
+// Obtains the Features available within the given Rectangle. Results are
+// streamed rather than returned at once (e.g. in a response message with a
+// repeated field), as the rectangle may cover a large area and contain a
+// huge number of features.
+listFeatures: {
path: '/routeguide.RouteGuide/ListFeatures',
requestStream: false,
responseStream: true,
requestType: route_guide_pb.Rectangle,
responseType: route_guide_pb.Feature,
- requestSerialize: serialize_Rectangle,
- requestDeserialize: deserialize_Rectangle,
- responseSerialize: serialize_Feature,
- responseDeserialize: deserialize_Feature,
+ requestSerialize: serialize_routeguide_Rectangle,
+ requestDeserialize: deserialize_routeguide_Rectangle,
+ responseSerialize: serialize_routeguide_Feature,
+ responseDeserialize: deserialize_routeguide_Feature,
},
// A client-to-server streaming RPC.
- //
- // Accepts a stream of Points on a route being traversed, returning a
- // RouteSummary when traversal is completed.
- recordRoute: {
+//
+// Accepts a stream of Points on a route being traversed, returning a
+// RouteSummary when traversal is completed.
+recordRoute: {
path: '/routeguide.RouteGuide/RecordRoute',
requestStream: true,
responseStream: false,
requestType: route_guide_pb.Point,
responseType: route_guide_pb.RouteSummary,
- requestSerialize: serialize_Point,
- requestDeserialize: deserialize_Point,
- responseSerialize: serialize_RouteSummary,
- responseDeserialize: deserialize_RouteSummary,
+ requestSerialize: serialize_routeguide_Point,
+ requestDeserialize: deserialize_routeguide_Point,
+ responseSerialize: serialize_routeguide_RouteSummary,
+ responseDeserialize: deserialize_routeguide_RouteSummary,
},
// A Bidirectional streaming RPC.
- //
- // Accepts a stream of RouteNotes sent while a route is being traversed,
- // while receiving other RouteNotes (e.g. from other users).
- routeChat: {
+//
+// Accepts a stream of RouteNotes sent while a route is being traversed,
+// while receiving other RouteNotes (e.g. from other users).
+routeChat: {
path: '/routeguide.RouteGuide/RouteChat',
requestStream: true,
responseStream: true,
requestType: route_guide_pb.RouteNote,
responseType: route_guide_pb.RouteNote,
- requestSerialize: serialize_RouteNote,
- requestDeserialize: deserialize_RouteNote,
- responseSerialize: serialize_RouteNote,
- responseDeserialize: deserialize_RouteNote,
+ requestSerialize: serialize_routeguide_RouteNote,
+ requestDeserialize: deserialize_routeguide_RouteNote,
+ responseSerialize: serialize_routeguide_RouteNote,
+ responseDeserialize: deserialize_routeguide_RouteNote,
},
};
+// source: route_guide.proto
/**
* @fileoverview
* @enhanceable
+ * @suppress {messageConventions} JS Compiler reports an error if a variable or
+ * field starts with 'MSG_' and isn't a translatable message.
* @public
*/
// GENERATED CODE -- DO NOT EDIT!
goog.exportSymbol('proto.routeguide.Rectangle', null, global);
goog.exportSymbol('proto.routeguide.RouteNote', null, global);
goog.exportSymbol('proto.routeguide.RouteSummary', null, global);
-
/**
* Generated by JsPbCodeGenerator.
* @param {Array=} opt_data Optional initial data array, typically from a
};
goog.inherits(proto.routeguide.Point, jspb.Message);
if (goog.DEBUG && !COMPILED) {
+ /**
+ * @public
+ * @override
+ */
proto.routeguide.Point.displayName = 'proto.routeguide.Point';
}
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.routeguide.Rectangle = function(opt_data) {
+ jspb.Message.initialize(this, opt_data, 0, -1, null, null);
+};
+goog.inherits(proto.routeguide.Rectangle, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+ /**
+ * @public
+ * @override
+ */
+ proto.routeguide.Rectangle.displayName = 'proto.routeguide.Rectangle';
+}
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.routeguide.Feature = function(opt_data) {
+ jspb.Message.initialize(this, opt_data, 0, -1, null, null);
+};
+goog.inherits(proto.routeguide.Feature, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+ /**
+ * @public
+ * @override
+ */
+ proto.routeguide.Feature.displayName = 'proto.routeguide.Feature';
+}
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.routeguide.RouteNote = function(opt_data) {
+ jspb.Message.initialize(this, opt_data, 0, -1, null, null);
+};
+goog.inherits(proto.routeguide.RouteNote, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+ /**
+ * @public
+ * @override
+ */
+ proto.routeguide.RouteNote.displayName = 'proto.routeguide.RouteNote';
+}
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.routeguide.RouteSummary = function(opt_data) {
+ jspb.Message.initialize(this, opt_data, 0, -1, null, null);
+};
+goog.inherits(proto.routeguide.RouteSummary, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+ /**
+ * @public
+ * @override
+ */
+ proto.routeguide.RouteSummary.displayName = 'proto.routeguide.RouteSummary';
+}
+
if (jspb.Message.GENERATE_TO_OBJECT) {
/**
- * Creates an object representation of this proto suitable for use in Soy templates.
+ * Creates an object representation of this proto.
* Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * Optional fields that are not set will be set to undefined.
* To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
* For the list of reserved names please see:
- * com.google.apps.jspb.JsClassTemplate.JS_RESERVED_WORDS.
- * @param {boolean=} opt_includeInstance Whether to include the JSPB instance
- * for transitional soy proto support: http://goto/soy-param-migration
+ * net/proto2/compiler/js/internal/generator.cc#kKeyword.
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
+ * JSPB instance for transitional soy proto support:
+ * http://goto/soy-param-migration
* @return {!Object}
*/
proto.routeguide.Point.prototype.toObject = function(opt_includeInstance) {
/**
* Static version of the {@see toObject} method.
- * @param {boolean|undefined} includeInstance Whether to include the JSPB
- * instance for transitional soy proto support:
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
+ * the JSPB instance for transitional soy proto support:
* http://goto/soy-param-migration
* @param {!proto.routeguide.Point} msg The msg instance to transform.
* @return {!Object}
+ * @suppress {unusedLocalVariables} f is only used for nested messages
*/
proto.routeguide.Point.toObject = function(includeInstance, msg) {
var f, obj = {
- latitude: msg.getLatitude(),
- longitude: msg.getLongitude()
+ latitude: jspb.Message.getFieldWithDefault(msg, 1, 0),
+ longitude: jspb.Message.getFieldWithDefault(msg, 2, 0)
};
if (includeInstance) {
/**
- * Class method variant: serializes the given message to binary data
- * (in protobuf wire format), writing to the given BinaryWriter.
- * @param {!proto.routeguide.Point} message
- * @param {!jspb.BinaryWriter} writer
- */
-proto.routeguide.Point.serializeBinaryToWriter = function(message, writer) {
- message.serializeBinaryToWriter(writer);
-};
-
-
-/**
* Serializes the message to binary data (in protobuf wire format).
* @return {!Uint8Array}
*/
proto.routeguide.Point.prototype.serializeBinary = function() {
var writer = new jspb.BinaryWriter();
- this.serializeBinaryToWriter(writer);
+ proto.routeguide.Point.serializeBinaryToWriter(this, writer);
return writer.getResultBuffer();
};
/**
- * Serializes the message to binary data (in protobuf wire format),
- * writing to the given BinaryWriter.
+ * Serializes the given message to binary data (in protobuf wire
+ * format), writing to the given BinaryWriter.
+ * @param {!proto.routeguide.Point} message
* @param {!jspb.BinaryWriter} writer
+ * @suppress {unusedLocalVariables} f is only used for nested messages
*/
-proto.routeguide.Point.prototype.serializeBinaryToWriter = function (writer) {
+proto.routeguide.Point.serializeBinaryToWriter = function(message, writer) {
var f = undefined;
- f = this.getLatitude();
+ f = message.getLatitude();
if (f !== 0) {
writer.writeInt32(
1,
f
);
}
- f = this.getLongitude();
+ f = message.getLongitude();
if (f !== 0) {
writer.writeInt32(
2,
/**
- * Creates a deep clone of this proto. No data is shared with the original.
- * @return {!proto.routeguide.Point} The clone.
- */
-proto.routeguide.Point.prototype.cloneMessage = function() {
- return /** @type {!proto.routeguide.Point} */ (jspb.Message.cloneMessage(this));
-};
-
-
-/**
* optional int32 latitude = 1;
* @return {number}
*/
proto.routeguide.Point.prototype.getLatitude = function() {
- return /** @type {number} */ (jspb.Message.getFieldProto3(this, 1, 0));
+ return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 1, 0));
};
-/** @param {number} value */
+/**
+ * @param {number} value
+ * @return {!proto.routeguide.Point} returns this
+ */
proto.routeguide.Point.prototype.setLatitude = function(value) {
- jspb.Message.setField(this, 1, value);
+ return jspb.Message.setProto3IntField(this, 1, value);
};
* @return {number}
*/
proto.routeguide.Point.prototype.getLongitude = function() {
- return /** @type {number} */ (jspb.Message.getFieldProto3(this, 2, 0));
+ return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 2, 0));
};
-/** @param {number} value */
+/**
+ * @param {number} value
+ * @return {!proto.routeguide.Point} returns this
+ */
proto.routeguide.Point.prototype.setLongitude = function(value) {
- jspb.Message.setField(this, 2, value);
+ return jspb.Message.setProto3IntField(this, 2, value);
};
-/**
- * Generated by JsPbCodeGenerator.
- * @param {Array=} opt_data Optional initial data array, typically from a
- * server response, or constructed directly in Javascript. The array is used
- * in place and becomes part of the constructed object. It is not cloned.
- * If no data is provided, the constructed object will be empty, but still
- * valid.
- * @extends {jspb.Message}
- * @constructor
- */
-proto.routeguide.Rectangle = function(opt_data) {
- jspb.Message.initialize(this, opt_data, 0, -1, null, null);
-};
-goog.inherits(proto.routeguide.Rectangle, jspb.Message);
-if (goog.DEBUG && !COMPILED) {
- proto.routeguide.Rectangle.displayName = 'proto.routeguide.Rectangle';
-}
if (jspb.Message.GENERATE_TO_OBJECT) {
/**
- * Creates an object representation of this proto suitable for use in Soy templates.
+ * Creates an object representation of this proto.
* Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * Optional fields that are not set will be set to undefined.
* To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
* For the list of reserved names please see:
- * com.google.apps.jspb.JsClassTemplate.JS_RESERVED_WORDS.
- * @param {boolean=} opt_includeInstance Whether to include the JSPB instance
- * for transitional soy proto support: http://goto/soy-param-migration
+ * net/proto2/compiler/js/internal/generator.cc#kKeyword.
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
+ * JSPB instance for transitional soy proto support:
+ * http://goto/soy-param-migration
* @return {!Object}
*/
proto.routeguide.Rectangle.prototype.toObject = function(opt_includeInstance) {
/**
* Static version of the {@see toObject} method.
- * @param {boolean|undefined} includeInstance Whether to include the JSPB
- * instance for transitional soy proto support:
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
+ * the JSPB instance for transitional soy proto support:
* http://goto/soy-param-migration
* @param {!proto.routeguide.Rectangle} msg The msg instance to transform.
* @return {!Object}
+ * @suppress {unusedLocalVariables} f is only used for nested messages
*/
proto.routeguide.Rectangle.toObject = function(includeInstance, msg) {
var f, obj = {
/**
- * Class method variant: serializes the given message to binary data
- * (in protobuf wire format), writing to the given BinaryWriter.
- * @param {!proto.routeguide.Rectangle} message
- * @param {!jspb.BinaryWriter} writer
- */
-proto.routeguide.Rectangle.serializeBinaryToWriter = function(message, writer) {
- message.serializeBinaryToWriter(writer);
-};
-
-
-/**
* Serializes the message to binary data (in protobuf wire format).
* @return {!Uint8Array}
*/
proto.routeguide.Rectangle.prototype.serializeBinary = function() {
var writer = new jspb.BinaryWriter();
- this.serializeBinaryToWriter(writer);
+ proto.routeguide.Rectangle.serializeBinaryToWriter(this, writer);
return writer.getResultBuffer();
};
/**
- * Serializes the message to binary data (in protobuf wire format),
- * writing to the given BinaryWriter.
+ * Serializes the given message to binary data (in protobuf wire
+ * format), writing to the given BinaryWriter.
+ * @param {!proto.routeguide.Rectangle} message
* @param {!jspb.BinaryWriter} writer
+ * @suppress {unusedLocalVariables} f is only used for nested messages
*/
-proto.routeguide.Rectangle.prototype.serializeBinaryToWriter = function (writer) {
+proto.routeguide.Rectangle.serializeBinaryToWriter = function(message, writer) {
var f = undefined;
- f = this.getLo();
+ f = message.getLo();
if (f != null) {
writer.writeMessage(
1,
proto.routeguide.Point.serializeBinaryToWriter
);
}
- f = this.getHi();
+ f = message.getHi();
if (f != null) {
writer.writeMessage(
2,
/**
- * Creates a deep clone of this proto. No data is shared with the original.
- * @return {!proto.routeguide.Rectangle} The clone.
- */
-proto.routeguide.Rectangle.prototype.cloneMessage = function() {
- return /** @type {!proto.routeguide.Rectangle} */ (jspb.Message.cloneMessage(this));
-};
-
-
-/**
* optional Point lo = 1;
- * @return {proto.routeguide.Point}
+ * @return {?proto.routeguide.Point}
*/
proto.routeguide.Rectangle.prototype.getLo = function() {
- return /** @type{proto.routeguide.Point} */ (
+ return /** @type{?proto.routeguide.Point} */ (
jspb.Message.getWrapperField(this, proto.routeguide.Point, 1));
};
-/** @param {proto.routeguide.Point|undefined} value */
+/**
+ * @param {?proto.routeguide.Point|undefined} value
+ * @return {!proto.routeguide.Rectangle} returns this
+*/
proto.routeguide.Rectangle.prototype.setLo = function(value) {
- jspb.Message.setWrapperField(this, 1, value);
+ return jspb.Message.setWrapperField(this, 1, value);
};
+/**
+ * Clears the message field making it undefined.
+ * @return {!proto.routeguide.Rectangle} returns this
+ */
proto.routeguide.Rectangle.prototype.clearLo = function() {
- this.setLo(undefined);
+ return this.setLo(undefined);
+};
+
+
+/**
+ * Returns whether this field is set.
+ * @return {boolean}
+ */
+proto.routeguide.Rectangle.prototype.hasLo = function() {
+ return jspb.Message.getField(this, 1) != null;
};
/**
* optional Point hi = 2;
- * @return {proto.routeguide.Point}
+ * @return {?proto.routeguide.Point}
*/
proto.routeguide.Rectangle.prototype.getHi = function() {
- return /** @type{proto.routeguide.Point} */ (
+ return /** @type{?proto.routeguide.Point} */ (
jspb.Message.getWrapperField(this, proto.routeguide.Point, 2));
};
-/** @param {proto.routeguide.Point|undefined} value */
+/**
+ * @param {?proto.routeguide.Point|undefined} value
+ * @return {!proto.routeguide.Rectangle} returns this
+*/
proto.routeguide.Rectangle.prototype.setHi = function(value) {
- jspb.Message.setWrapperField(this, 2, value);
+ return jspb.Message.setWrapperField(this, 2, value);
};
+/**
+ * Clears the message field making it undefined.
+ * @return {!proto.routeguide.Rectangle} returns this
+ */
proto.routeguide.Rectangle.prototype.clearHi = function() {
- this.setHi(undefined);
+ return this.setHi(undefined);
};
-
/**
- * Generated by JsPbCodeGenerator.
- * @param {Array=} opt_data Optional initial data array, typically from a
- * server response, or constructed directly in Javascript. The array is used
- * in place and becomes part of the constructed object. It is not cloned.
- * If no data is provided, the constructed object will be empty, but still
- * valid.
- * @extends {jspb.Message}
- * @constructor
+ * Returns whether this field is set.
+ * @return {boolean}
*/
-proto.routeguide.Feature = function(opt_data) {
- jspb.Message.initialize(this, opt_data, 0, -1, null, null);
+proto.routeguide.Rectangle.prototype.hasHi = function() {
+ return jspb.Message.getField(this, 2) != null;
};
-goog.inherits(proto.routeguide.Feature, jspb.Message);
-if (goog.DEBUG && !COMPILED) {
- proto.routeguide.Feature.displayName = 'proto.routeguide.Feature';
-}
+
+
+
if (jspb.Message.GENERATE_TO_OBJECT) {
/**
- * Creates an object representation of this proto suitable for use in Soy templates.
+ * Creates an object representation of this proto.
* Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * Optional fields that are not set will be set to undefined.
* To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
* For the list of reserved names please see:
- * com.google.apps.jspb.JsClassTemplate.JS_RESERVED_WORDS.
- * @param {boolean=} opt_includeInstance Whether to include the JSPB instance
- * for transitional soy proto support: http://goto/soy-param-migration
+ * net/proto2/compiler/js/internal/generator.cc#kKeyword.
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
+ * JSPB instance for transitional soy proto support:
+ * http://goto/soy-param-migration
* @return {!Object}
*/
proto.routeguide.Feature.prototype.toObject = function(opt_includeInstance) {
/**
* Static version of the {@see toObject} method.
- * @param {boolean|undefined} includeInstance Whether to include the JSPB
- * instance for transitional soy proto support:
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
+ * the JSPB instance for transitional soy proto support:
* http://goto/soy-param-migration
* @param {!proto.routeguide.Feature} msg The msg instance to transform.
* @return {!Object}
+ * @suppress {unusedLocalVariables} f is only used for nested messages
*/
proto.routeguide.Feature.toObject = function(includeInstance, msg) {
var f, obj = {
- name: msg.getName(),
+ name: jspb.Message.getFieldWithDefault(msg, 1, ""),
location: (f = msg.getLocation()) && proto.routeguide.Point.toObject(includeInstance, f)
};
/**
- * Class method variant: serializes the given message to binary data
- * (in protobuf wire format), writing to the given BinaryWriter.
- * @param {!proto.routeguide.Feature} message
- * @param {!jspb.BinaryWriter} writer
- */
-proto.routeguide.Feature.serializeBinaryToWriter = function(message, writer) {
- message.serializeBinaryToWriter(writer);
-};
-
-
-/**
* Serializes the message to binary data (in protobuf wire format).
* @return {!Uint8Array}
*/
proto.routeguide.Feature.prototype.serializeBinary = function() {
var writer = new jspb.BinaryWriter();
- this.serializeBinaryToWriter(writer);
+ proto.routeguide.Feature.serializeBinaryToWriter(this, writer);
return writer.getResultBuffer();
};
/**
- * Serializes the message to binary data (in protobuf wire format),
- * writing to the given BinaryWriter.
+ * Serializes the given message to binary data (in protobuf wire
+ * format), writing to the given BinaryWriter.
+ * @param {!proto.routeguide.Feature} message
* @param {!jspb.BinaryWriter} writer
+ * @suppress {unusedLocalVariables} f is only used for nested messages
*/
-proto.routeguide.Feature.prototype.serializeBinaryToWriter = function (writer) {
+proto.routeguide.Feature.serializeBinaryToWriter = function(message, writer) {
var f = undefined;
- f = this.getName();
+ f = message.getName();
if (f.length > 0) {
writer.writeString(
1,
f
);
}
- f = this.getLocation();
+ f = message.getLocation();
if (f != null) {
writer.writeMessage(
2,
/**
- * Creates a deep clone of this proto. No data is shared with the original.
- * @return {!proto.routeguide.Feature} The clone.
- */
-proto.routeguide.Feature.prototype.cloneMessage = function() {
- return /** @type {!proto.routeguide.Feature} */ (jspb.Message.cloneMessage(this));
-};
-
-
-/**
* optional string name = 1;
* @return {string}
*/
proto.routeguide.Feature.prototype.getName = function() {
- return /** @type {string} */ (jspb.Message.getFieldProto3(this, 1, ""));
+ return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, ""));
};
-/** @param {string} value */
+/**
+ * @param {string} value
+ * @return {!proto.routeguide.Feature} returns this
+ */
proto.routeguide.Feature.prototype.setName = function(value) {
- jspb.Message.setField(this, 1, value);
+ return jspb.Message.setProto3StringField(this, 1, value);
};
/**
* optional Point location = 2;
- * @return {proto.routeguide.Point}
+ * @return {?proto.routeguide.Point}
*/
proto.routeguide.Feature.prototype.getLocation = function() {
- return /** @type{proto.routeguide.Point} */ (
+ return /** @type{?proto.routeguide.Point} */ (
jspb.Message.getWrapperField(this, proto.routeguide.Point, 2));
};
-/** @param {proto.routeguide.Point|undefined} value */
+/**
+ * @param {?proto.routeguide.Point|undefined} value
+ * @return {!proto.routeguide.Feature} returns this
+*/
proto.routeguide.Feature.prototype.setLocation = function(value) {
- jspb.Message.setWrapperField(this, 2, value);
+ return jspb.Message.setWrapperField(this, 2, value);
};
+/**
+ * Clears the message field making it undefined.
+ * @return {!proto.routeguide.Feature} returns this
+ */
proto.routeguide.Feature.prototype.clearLocation = function() {
- this.setLocation(undefined);
+ return this.setLocation(undefined);
};
-
/**
- * Generated by JsPbCodeGenerator.
- * @param {Array=} opt_data Optional initial data array, typically from a
- * server response, or constructed directly in Javascript. The array is used
- * in place and becomes part of the constructed object. It is not cloned.
- * If no data is provided, the constructed object will be empty, but still
- * valid.
- * @extends {jspb.Message}
- * @constructor
+ * Returns whether this field is set.
+ * @return {boolean}
*/
-proto.routeguide.RouteNote = function(opt_data) {
- jspb.Message.initialize(this, opt_data, 0, -1, null, null);
+proto.routeguide.Feature.prototype.hasLocation = function() {
+ return jspb.Message.getField(this, 2) != null;
};
-goog.inherits(proto.routeguide.RouteNote, jspb.Message);
-if (goog.DEBUG && !COMPILED) {
- proto.routeguide.RouteNote.displayName = 'proto.routeguide.RouteNote';
-}
+
+
+
if (jspb.Message.GENERATE_TO_OBJECT) {
/**
- * Creates an object representation of this proto suitable for use in Soy templates.
+ * Creates an object representation of this proto.
* Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * Optional fields that are not set will be set to undefined.
* To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
* For the list of reserved names please see:
- * com.google.apps.jspb.JsClassTemplate.JS_RESERVED_WORDS.
- * @param {boolean=} opt_includeInstance Whether to include the JSPB instance
- * for transitional soy proto support: http://goto/soy-param-migration
+ * net/proto2/compiler/js/internal/generator.cc#kKeyword.
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
+ * JSPB instance for transitional soy proto support:
+ * http://goto/soy-param-migration
* @return {!Object}
*/
proto.routeguide.RouteNote.prototype.toObject = function(opt_includeInstance) {
/**
* Static version of the {@see toObject} method.
- * @param {boolean|undefined} includeInstance Whether to include the JSPB
- * instance for transitional soy proto support:
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
+ * the JSPB instance for transitional soy proto support:
* http://goto/soy-param-migration
* @param {!proto.routeguide.RouteNote} msg The msg instance to transform.
* @return {!Object}
+ * @suppress {unusedLocalVariables} f is only used for nested messages
*/
proto.routeguide.RouteNote.toObject = function(includeInstance, msg) {
var f, obj = {
location: (f = msg.getLocation()) && proto.routeguide.Point.toObject(includeInstance, f),
- message: msg.getMessage()
+ message: jspb.Message.getFieldWithDefault(msg, 2, "")
};
if (includeInstance) {
/**
- * Class method variant: serializes the given message to binary data
- * (in protobuf wire format), writing to the given BinaryWriter.
- * @param {!proto.routeguide.RouteNote} message
- * @param {!jspb.BinaryWriter} writer
- */
-proto.routeguide.RouteNote.serializeBinaryToWriter = function(message, writer) {
- message.serializeBinaryToWriter(writer);
-};
-
-
-/**
* Serializes the message to binary data (in protobuf wire format).
* @return {!Uint8Array}
*/
proto.routeguide.RouteNote.prototype.serializeBinary = function() {
var writer = new jspb.BinaryWriter();
- this.serializeBinaryToWriter(writer);
+ proto.routeguide.RouteNote.serializeBinaryToWriter(this, writer);
return writer.getResultBuffer();
};
/**
- * Serializes the message to binary data (in protobuf wire format),
- * writing to the given BinaryWriter.
+ * Serializes the given message to binary data (in protobuf wire
+ * format), writing to the given BinaryWriter.
+ * @param {!proto.routeguide.RouteNote} message
* @param {!jspb.BinaryWriter} writer
+ * @suppress {unusedLocalVariables} f is only used for nested messages
*/
-proto.routeguide.RouteNote.prototype.serializeBinaryToWriter = function (writer) {
+proto.routeguide.RouteNote.serializeBinaryToWriter = function(message, writer) {
var f = undefined;
- f = this.getLocation();
+ f = message.getLocation();
if (f != null) {
writer.writeMessage(
1,
proto.routeguide.Point.serializeBinaryToWriter
);
}
- f = this.getMessage();
+ f = message.getMessage();
if (f.length > 0) {
writer.writeString(
2,
/**
- * Creates a deep clone of this proto. No data is shared with the original.
- * @return {!proto.routeguide.RouteNote} The clone.
- */
-proto.routeguide.RouteNote.prototype.cloneMessage = function() {
- return /** @type {!proto.routeguide.RouteNote} */ (jspb.Message.cloneMessage(this));
-};
-
-
-/**
* optional Point location = 1;
- * @return {proto.routeguide.Point}
+ * @return {?proto.routeguide.Point}
*/
proto.routeguide.RouteNote.prototype.getLocation = function() {
- return /** @type{proto.routeguide.Point} */ (
+ return /** @type{?proto.routeguide.Point} */ (
jspb.Message.getWrapperField(this, proto.routeguide.Point, 1));
};
-/** @param {proto.routeguide.Point|undefined} value */
+/**
+ * @param {?proto.routeguide.Point|undefined} value
+ * @return {!proto.routeguide.RouteNote} returns this
+*/
proto.routeguide.RouteNote.prototype.setLocation = function(value) {
- jspb.Message.setWrapperField(this, 1, value);
+ return jspb.Message.setWrapperField(this, 1, value);
};
+/**
+ * Clears the message field making it undefined.
+ * @return {!proto.routeguide.RouteNote} returns this
+ */
proto.routeguide.RouteNote.prototype.clearLocation = function() {
- this.setLocation(undefined);
+ return this.setLocation(undefined);
+};
+
+
+/**
+ * Returns whether this field is set.
+ * @return {boolean}
+ */
+proto.routeguide.RouteNote.prototype.hasLocation = function() {
+ return jspb.Message.getField(this, 1) != null;
};
* @return {string}
*/
proto.routeguide.RouteNote.prototype.getMessage = function() {
- return /** @type {string} */ (jspb.Message.getFieldProto3(this, 2, ""));
+ return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, ""));
};
-/** @param {string} value */
+/**
+ * @param {string} value
+ * @return {!proto.routeguide.RouteNote} returns this
+ */
proto.routeguide.RouteNote.prototype.setMessage = function(value) {
- jspb.Message.setField(this, 2, value);
+ return jspb.Message.setProto3StringField(this, 2, value);
};
-/**
- * Generated by JsPbCodeGenerator.
- * @param {Array=} opt_data Optional initial data array, typically from a
- * server response, or constructed directly in Javascript. The array is used
- * in place and becomes part of the constructed object. It is not cloned.
- * If no data is provided, the constructed object will be empty, but still
- * valid.
- * @extends {jspb.Message}
- * @constructor
- */
-proto.routeguide.RouteSummary = function(opt_data) {
- jspb.Message.initialize(this, opt_data, 0, -1, null, null);
-};
-goog.inherits(proto.routeguide.RouteSummary, jspb.Message);
-if (goog.DEBUG && !COMPILED) {
- proto.routeguide.RouteSummary.displayName = 'proto.routeguide.RouteSummary';
-}
if (jspb.Message.GENERATE_TO_OBJECT) {
/**
- * Creates an object representation of this proto suitable for use in Soy templates.
+ * Creates an object representation of this proto.
* Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * Optional fields that are not set will be set to undefined.
* To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
* For the list of reserved names please see:
- * com.google.apps.jspb.JsClassTemplate.JS_RESERVED_WORDS.
- * @param {boolean=} opt_includeInstance Whether to include the JSPB instance
- * for transitional soy proto support: http://goto/soy-param-migration
+ * net/proto2/compiler/js/internal/generator.cc#kKeyword.
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
+ * JSPB instance for transitional soy proto support:
+ * http://goto/soy-param-migration
* @return {!Object}
*/
proto.routeguide.RouteSummary.prototype.toObject = function(opt_includeInstance) {
/**
* Static version of the {@see toObject} method.
- * @param {boolean|undefined} includeInstance Whether to include the JSPB
- * instance for transitional soy proto support:
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
+ * the JSPB instance for transitional soy proto support:
* http://goto/soy-param-migration
* @param {!proto.routeguide.RouteSummary} msg The msg instance to transform.
* @return {!Object}
+ * @suppress {unusedLocalVariables} f is only used for nested messages
*/
proto.routeguide.RouteSummary.toObject = function(includeInstance, msg) {
var f, obj = {
- pointCount: msg.getPointCount(),
- featureCount: msg.getFeatureCount(),
- distance: msg.getDistance(),
- elapsedTime: msg.getElapsedTime()
+ pointCount: jspb.Message.getFieldWithDefault(msg, 1, 0),
+ featureCount: jspb.Message.getFieldWithDefault(msg, 2, 0),
+ distance: jspb.Message.getFieldWithDefault(msg, 3, 0),
+ elapsedTime: jspb.Message.getFieldWithDefault(msg, 4, 0)
};
if (includeInstance) {
/**
- * Class method variant: serializes the given message to binary data
- * (in protobuf wire format), writing to the given BinaryWriter.
- * @param {!proto.routeguide.RouteSummary} message
- * @param {!jspb.BinaryWriter} writer
- */
-proto.routeguide.RouteSummary.serializeBinaryToWriter = function(message, writer) {
- message.serializeBinaryToWriter(writer);
-};
-
-
-/**
* Serializes the message to binary data (in protobuf wire format).
* @return {!Uint8Array}
*/
proto.routeguide.RouteSummary.prototype.serializeBinary = function() {
var writer = new jspb.BinaryWriter();
- this.serializeBinaryToWriter(writer);
+ proto.routeguide.RouteSummary.serializeBinaryToWriter(this, writer);
return writer.getResultBuffer();
};
/**
- * Serializes the message to binary data (in protobuf wire format),
- * writing to the given BinaryWriter.
+ * Serializes the given message to binary data (in protobuf wire
+ * format), writing to the given BinaryWriter.
+ * @param {!proto.routeguide.RouteSummary} message
* @param {!jspb.BinaryWriter} writer
+ * @suppress {unusedLocalVariables} f is only used for nested messages
*/
-proto.routeguide.RouteSummary.prototype.serializeBinaryToWriter = function (writer) {
+proto.routeguide.RouteSummary.serializeBinaryToWriter = function(message, writer) {
var f = undefined;
- f = this.getPointCount();
+ f = message.getPointCount();
if (f !== 0) {
writer.writeInt32(
1,
f
);
}
- f = this.getFeatureCount();
+ f = message.getFeatureCount();
if (f !== 0) {
writer.writeInt32(
2,
f
);
}
- f = this.getDistance();
+ f = message.getDistance();
if (f !== 0) {
writer.writeInt32(
3,
f
);
}
- f = this.getElapsedTime();
+ f = message.getElapsedTime();
if (f !== 0) {
writer.writeInt32(
4,
/**
- * Creates a deep clone of this proto. No data is shared with the original.
- * @return {!proto.routeguide.RouteSummary} The clone.
- */
-proto.routeguide.RouteSummary.prototype.cloneMessage = function() {
- return /** @type {!proto.routeguide.RouteSummary} */ (jspb.Message.cloneMessage(this));
-};
-
-
-/**
* optional int32 point_count = 1;
* @return {number}
*/
proto.routeguide.RouteSummary.prototype.getPointCount = function() {
- return /** @type {number} */ (jspb.Message.getFieldProto3(this, 1, 0));
+ return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 1, 0));
};
-/** @param {number} value */
+/**
+ * @param {number} value
+ * @return {!proto.routeguide.RouteSummary} returns this
+ */
proto.routeguide.RouteSummary.prototype.setPointCount = function(value) {
- jspb.Message.setField(this, 1, value);
+ return jspb.Message.setProto3IntField(this, 1, value);
};
* @return {number}
*/
proto.routeguide.RouteSummary.prototype.getFeatureCount = function() {
- return /** @type {number} */ (jspb.Message.getFieldProto3(this, 2, 0));
+ return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 2, 0));
};
-/** @param {number} value */
+/**
+ * @param {number} value
+ * @return {!proto.routeguide.RouteSummary} returns this
+ */
proto.routeguide.RouteSummary.prototype.setFeatureCount = function(value) {
- jspb.Message.setField(this, 2, value);
+ return jspb.Message.setProto3IntField(this, 2, value);
};
* @return {number}
*/
proto.routeguide.RouteSummary.prototype.getDistance = function() {
- return /** @type {number} */ (jspb.Message.getFieldProto3(this, 3, 0));
+ return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 3, 0));
};
-/** @param {number} value */
+/**
+ * @param {number} value
+ * @return {!proto.routeguide.RouteSummary} returns this
+ */
proto.routeguide.RouteSummary.prototype.setDistance = function(value) {
- jspb.Message.setField(this, 3, value);
+ return jspb.Message.setProto3IntField(this, 3, value);
};
* @return {number}
*/
proto.routeguide.RouteSummary.prototype.getElapsedTime = function() {
- return /** @type {number} */ (jspb.Message.getFieldProto3(this, 4, 0));
+ return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 4, 0));
};
-/** @param {number} value */
+/**
+ * @param {number} value
+ * @return {!proto.routeguide.RouteSummary} returns this
+ */
proto.routeguide.RouteSummary.prototype.setElapsedTime = function(value) {
- jspb.Message.setField(this, 4, value);
+ return jspb.Message.setProto3IntField(this, 4, value);
};
var parseArgs = require('minimist');
var path = require('path');
var _ = require('lodash');
-var grpc = require('grpc');
+var grpc = require('@grpc/grpc-js');
var COORD_FACTOR = 1e7;
if (require.main === module) {
// If this is run as a script, start a server on an unused port
var routeServer = getServer();
- routeServer.bind('0.0.0.0:50051', grpc.ServerCredentials.createInsecure());
- var argv = parseArgs(process.argv, {
- string: 'db_path'
- });
- fs.readFile(path.resolve(argv.db_path), function(err, data) {
- if (err) throw err;
- // Transform the loaded features to Feature objects
- feature_list = _.map(JSON.parse(data), function(value) {
- var feature = new messages.Feature();
- feature.setName(value.name);
- var location = new messages.Point();
- location.setLatitude(value.location.latitude);
- location.setLongitude(value.location.longitude);
- feature.setLocation(location);
- return feature;
+ routeServer.bindAsync('0.0.0.0:50051', grpc.ServerCredentials.createInsecure(), () => {
+ var argv = parseArgs(process.argv, {
+ string: 'db_path'
+ });
+ fs.readFile(path.resolve(argv.db_path), function(err, data) {
+ if (err) throw err;
+ // Transform the loaded features to Feature objects
+ feature_list = _.map(JSON.parse(data), function(value) {
+ var feature = new messages.Feature();
+ feature.setName(value.name);
+ var location = new messages.Point();
+ location.setLatitude(value.location.latitude);
+ location.setLongitude(value.location.longitude);
+ feature.setLocation(location);
+ return feature;
+ });
+ routeServer.start();
});
- routeServer.start();
});
}
--- /dev/null
+/*
+ *
+ * Copyright 2015 gRPC authors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+var PROTO_PATH = __dirname + '/../../protos/helloworld.proto';
+
+var parseArgs = require('minimist');
+var grpc = require('@grpc/grpc-js');
+var grpc_xds = require('@grpc/grpc-js-xds');
+grpc_xds.register();
+
+var protoLoader = require('@grpc/proto-loader');
+var packageDefinition = protoLoader.loadSync(
+ PROTO_PATH,
+ {keepCase: true,
+ longs: String,
+ enums: String,
+ defaults: true,
+ oneofs: true
+ });
+var hello_proto = grpc.loadPackageDefinition(packageDefinition).helloworld;
+
+function main() {
+ var argv = parseArgs(process.argv.slice(2), {
+ string: 'target'
+ });
+ var target;
+ if (argv.target) {
+ target = argv.target;
+ } else {
+ target = 'localhost:50051';
+ }
+ var client = new hello_proto.Greeter(target,
+ grpc.credentials.createInsecure());
+ var user;
+ if (argv._.length > 0) {
+ user = argv._[0];
+ } else {
+ user = 'world';
+ }
+ client.sayHello({name: user}, function(err, response) {
+ if (err) throw err;
+ console.log('Greeting:', response.message);
+ client.close();
+ });
+}
+
+main();
--- /dev/null
+{
+ "name": "grpc-examples-xds",
+ "version": "0.1.0",
+ "dependencies": {
+ "@grpc/proto-loader": "^0.5.0",
+ "@grpc/grpc-js": "^1.2.0",
+ "@grpc/grpc-js-xds": "^1.2.0",
+ "minimist": "^1.2.0"
+ }
+}
"ipad",
],
infoplists = ["helloworld/HelloWorld/Info.plist"],
- minimum_os_version = "8.0",
+ minimum_os_version = "9.0",
tags = ["manual"],
deps = [":HelloWorld-lib"],
)
"ipad",
],
infoplists = ["route_guide/Misc/Info.plist"],
- minimum_os_version = "8.0",
+ minimum_os_version = "9.0",
tags = ["manual"],
deps = [":RouteGuideClient-lib"],
)
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
- IPHONEOS_DEPLOYMENT_TARGET = 8.3;
+ IPHONEOS_DEPLOYMENT_TARGET = 9.0;
MTL_ENABLE_DEBUG_INFO = YES;
ONLY_ACTIVE_ARCH = YES;
SDKROOT = iphoneos;
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
- IPHONEOS_DEPLOYMENT_TARGET = 8.3;
+ IPHONEOS_DEPLOYMENT_TARGET = 9.0;
MTL_ENABLE_DEBUG_INFO = NO;
SDKROOT = iphoneos;
TARGETED_DEVICE_FAMILY = "1,2";
s.summary = "AuthTestService example"
s.source = { :git => 'https://github.com/grpc/grpc.git' }
- s.ios.deployment_target = "7.1"
- s.osx.deployment_target = "10.9"
+ s.ios.deployment_target = "9.0"
+ s.osx.deployment_target = "10.10"
# Base directory where the .proto files are.
src = "../../protos"
s.summary = "HelloWorld example"
s.source = { :git => 'https://github.com/grpc/grpc.git' }
- s.ios.deployment_target = "7.1"
- s.osx.deployment_target = "10.9"
+ s.ios.deployment_target = "9.0"
+ s.osx.deployment_target = "10.10"
# Base directory where the .proto files are.
src = "../../protos"
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
- IPHONEOS_DEPLOYMENT_TARGET = 8.2;
+ IPHONEOS_DEPLOYMENT_TARGET = 9.0;
MTL_ENABLE_DEBUG_INFO = YES;
ONLY_ACTIVE_ARCH = YES;
SDKROOT = iphoneos;
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
- IPHONEOS_DEPLOYMENT_TARGET = 8.2;
+ IPHONEOS_DEPLOYMENT_TARGET = 9.0;
MTL_ENABLE_DEBUG_INFO = NO;
SDKROOT = iphoneos;
TARGETED_DEVICE_FAMILY = "1,2";
source 'https://github.com/CocoaPods/Specs.git'
-platform :ios, '8.0'
+platform :ios, '9.0'
install! 'cocoapods', :deterministic_uuids => false
s.summary = "HelloWorld example"
s.source = { :git => 'https://github.com/grpc/grpc.git' }
- s.ios.deployment_target = "7.1"
- s.osx.deployment_target = "10.9"
+ s.ios.deployment_target = "9.0"
+ s.osx.deployment_target = "10.10"
# Base directory where the .proto files are.
src = "../../protos"
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
- MACOSX_DEPLOYMENT_TARGET = 10.13;
+ MACOSX_DEPLOYMENT_TARGET = 10.10;
MTL_ENABLE_DEBUG_INFO = YES;
ONLY_ACTIVE_ARCH = YES;
SDKROOT = macosx;
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
- MACOSX_DEPLOYMENT_TARGET = 10.13;
+ MACOSX_DEPLOYMENT_TARGET = 10.10;
MTL_ENABLE_DEBUG_INFO = NO;
SDKROOT = macosx;
};
source 'https://github.com/CocoaPods/Specs.git'
-platform :macos, '10.9'
+platform :macos, '10.10'
install! 'cocoapods', :deterministic_uuids => false
source 'https://github.com/CocoaPods/Specs.git'
-platform :ios, '8.0'
+platform :ios, '9.0'
install! 'cocoapods', :deterministic_uuids => false
s.summary = "RouteGuide example"
s.source = { :git => 'https://github.com/grpc/grpc.git' }
- s.ios.deployment_target = "7.1"
- s.osx.deployment_target = "10.9"
+ s.ios.deployment_target = "9.0"
+ s.osx.deployment_target = "10.10"
# Base directory where the .proto files are.
src = "../../protos"
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
- IPHONEOS_DEPLOYMENT_TARGET = 8.3;
+ IPHONEOS_DEPLOYMENT_TARGET = 9.0;
MTL_ENABLE_DEBUG_INFO = YES;
ONLY_ACTIVE_ARCH = YES;
SDKROOT = iphoneos;
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
- IPHONEOS_DEPLOYMENT_TARGET = 8.3;
+ IPHONEOS_DEPLOYMENT_TARGET = 9.0;
MTL_ENABLE_DEBUG_INFO = NO;
SDKROOT = iphoneos;
TARGETED_DEVICE_FAMILY = "1,2";
Pod::Spec.new do |s|
s.name = 'gRPC-C++'
# TODO (mxyan): use version that match gRPC version when pod is stabilized
- version = '1.33.2'
+ version = '1.34.0'
s.version = version
s.summary = 'gRPC C++ library'
s.homepage = 'https://grpc.io'
:tag => "v#{version}",
}
- s.ios.deployment_target = '7.0'
- s.osx.deployment_target = '10.9'
+ s.ios.deployment_target = '9.0'
+ s.osx.deployment_target = '10.10'
s.tvos.deployment_target = '10.0'
s.requires_arc = false
'include/grpcpp/security/auth_metadata_processor.h',
'include/grpcpp/security/credentials.h',
'include/grpcpp/security/server_credentials.h',
+ 'include/grpcpp/security/tls_certificate_provider.h',
'include/grpcpp/security/tls_credentials_options.h',
'include/grpcpp/server.h',
'include/grpcpp/server_builder.h',
ss.header_mappings_dir = '.'
ss.dependency "#{s.name}/Interface", version
ss.dependency 'gRPC-Core', version
- abseil_version = '1.20200225.0'
+ abseil_version = '1.20200923.2'
ss.dependency 'abseil/base/base', abseil_version
ss.dependency 'abseil/container/flat_hash_set', abseil_version
ss.dependency 'abseil/container/inlined_vector', abseil_version
+ ss.dependency 'abseil/functional/bind_front', abseil_version
ss.dependency 'abseil/memory/memory', abseil_version
ss.dependency 'abseil/status/status', abseil_version
ss.dependency 'abseil/strings/str_format', abseil_version
'src/core/ext/upb-generated/udpa/core/v1/resource_name.upb.h',
'src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.h',
'src/core/ext/upb-generated/validate/validate.upb.h',
+ 'src/core/ext/upbdefs-generated/envoy/annotations/deprecation.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/annotations/resource.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/config/cluster/v3/filter.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/config/core/v3/backoff.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/config/core/v3/event_service_config.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_service.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/config/core/v3/http_uri.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/load_report.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/config/listener/v3/api_listener.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/service/cluster/v3/cds.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/service/endpoint/v3/eds.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/service/listener/v3/lds.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/service/route/v3/rds.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/service/route/v3/srds.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/type/matcher/v3/metadata.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/type/matcher/v3/number.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/type/matcher/v3/path.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/type/matcher/v3/value.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/type/metadata/v3/metadata.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/type/tracing/v3/custom_tag.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/type/v3/http.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/type/v3/percent.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/type/v3/range.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/type/v3/semantic_version.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/google/api/annotations.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/google/api/http.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/google/protobuf/any.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/google/protobuf/duration.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/google/protobuf/empty.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/google/protobuf/struct.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/google/protobuf/timestamp.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/udpa/core/v1/authority.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/udpa/core/v1/collection_entry.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/udpa/core/v1/context_params.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/udpa/core/v1/resource.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/udpa/core/v1/resource_locator.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/udpa/core/v1/resource_name.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/validate/validate.upbdefs.h',
'src/core/ext/xds/certificate_provider_factory.h',
'src/core/ext/xds/certificate_provider_registry.h',
'src/core/ext/xds/certificate_provider_store.h',
+ 'src/core/ext/xds/file_watcher_certificate_provider_factory.h',
'src/core/ext/xds/google_mesh_ca_certificate_provider_factory.h',
'src/core/ext/xds/xds_api.h',
'src/core/ext/xds/xds_bootstrap.h',
+ 'src/core/ext/xds/xds_certificate_provider.h',
'src/core/ext/xds/xds_channel_args.h',
'src/core/ext/xds/xds_client.h',
'src/core/ext/xds/xds_client_stats.h',
'src/core/lib/gpr/tls_gcc.h',
'src/core/lib/gpr/tls_msvc.h',
'src/core/lib/gpr/tls_pthread.h',
+ 'src/core/lib/gpr/tls_stdcpp.h',
'src/core/lib/gpr/tmpfile.h',
'src/core/lib/gpr/useful.h',
'src/core/lib/gprpp/arena.h',
'src/core/lib/gprpp/atomic.h',
'src/core/lib/gprpp/debug_location.h',
'src/core/lib/gprpp/dual_ref_counted.h',
+ 'src/core/lib/gprpp/examine_stack.h',
'src/core/lib/gprpp/fork.h',
'src/core/lib/gprpp/global_config.h',
'src/core/lib/gprpp/global_config_custom.h',
'src/core/lib/gprpp/orphanable.h',
'src/core/lib/gprpp/ref_counted.h',
'src/core/lib/gprpp/ref_counted_ptr.h',
+ 'src/core/lib/gprpp/stat.h',
'src/core/lib/gprpp/sync.h',
'src/core/lib/gprpp/thd.h',
'src/core/lib/http/format_request.h',
'src/core/lib/security/authorization/mock_cel/cel_value.h',
'src/core/lib/security/authorization/mock_cel/evaluator_core.h',
'src/core/lib/security/authorization/mock_cel/flat_expr_builder.h',
- 'src/core/lib/security/authorization/mock_cel/statusor.h',
- 'src/core/lib/security/certificate_provider.h',
'src/core/lib/security/context/security_context.h',
'src/core/lib/security/credentials/alts/alts_credentials.h',
'src/core/lib/security/credentials/alts/check_gcp_environment.h',
'src/core/lib/security/credentials/alts/grpc_alts_credentials_options.h',
'src/core/lib/security/credentials/composite/composite_credentials.h',
'src/core/lib/security/credentials/credentials.h',
+ 'src/core/lib/security/credentials/external/aws_request_signer.h',
+ 'src/core/lib/security/credentials/external/external_account_credentials.h',
+ 'src/core/lib/security/credentials/external/file_external_account_credentials.h',
+ 'src/core/lib/security/credentials/external/url_external_account_credentials.h',
'src/core/lib/security/credentials/fake/fake_credentials.h',
'src/core/lib/security/credentials/google_default/google_default_credentials.h',
'src/core/lib/security/credentials/iam/iam_credentials.h',
'src/core/lib/security/credentials/plugin/plugin_credentials.h',
'src/core/lib/security/credentials/ssl/ssl_credentials.h',
'src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h',
+ 'src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h',
'src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h',
'src/core/lib/security/credentials/tls/tls_credentials.h',
'src/core/lib/security/credentials/xds/xds_credentials.h',
'src/core/lib/security/security_connector/alts/alts_security_connector.h',
'src/core/lib/security/security_connector/fake/fake_security_connector.h',
+ 'src/core/lib/security/security_connector/insecure/insecure_security_connector.h',
'src/core/lib/security/security_connector/load_system_roots.h',
'src/core/lib/security/security_connector/load_system_roots_linux.h',
'src/core/lib/security/security_connector/local/local_security_connector.h',
'src/cpp/client/insecure_credentials.cc',
'src/cpp/client/secure_credentials.cc',
'src/cpp/client/secure_credentials.h',
+ 'src/cpp/client/xds_credentials.cc',
'src/cpp/codegen/codegen_init.cc',
'src/cpp/common/alarm.cc',
'src/cpp/common/auth_property_iterator.cc',
'src/cpp/common/secure_auth_context.h',
'src/cpp/common/secure_channel_arguments.cc',
'src/cpp/common/secure_create_auth_context.cc',
+ 'src/cpp/common/tls_certificate_provider.cc',
'src/cpp/common/tls_credentials_options.cc',
'src/cpp/common/tls_credentials_options_util.cc',
'src/cpp/common/tls_credentials_options_util.h',
'third_party/re2/util/utf.h',
'third_party/re2/util/util.h',
'third_party/upb/upb/decode.h',
+ 'third_party/upb/upb/def.h',
+ 'third_party/upb/upb/def.hpp',
'third_party/upb/upb/encode.h',
'third_party/upb/upb/msg.h',
'third_party/upb/upb/port_def.inc',
'third_party/upb/upb/port_undef.inc',
+ 'third_party/upb/upb/reflection.h',
'third_party/upb/upb/table.int.h',
+ 'third_party/upb/upb/text_encode.h',
'third_party/upb/upb/upb.h',
'third_party/upb/upb/upb.hpp'
'src/core/ext/upb-generated/udpa/core/v1/resource_name.upb.h',
'src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.h',
'src/core/ext/upb-generated/validate/validate.upb.h',
+ 'src/core/ext/upbdefs-generated/envoy/annotations/deprecation.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/annotations/resource.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/config/cluster/v3/filter.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/config/core/v3/backoff.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/config/core/v3/event_service_config.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_service.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/config/core/v3/http_uri.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/load_report.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/config/listener/v3/api_listener.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/service/cluster/v3/cds.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/service/endpoint/v3/eds.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/service/listener/v3/lds.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/service/route/v3/rds.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/service/route/v3/srds.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/type/matcher/v3/metadata.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/type/matcher/v3/number.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/type/matcher/v3/path.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/type/matcher/v3/value.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/type/metadata/v3/metadata.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/type/tracing/v3/custom_tag.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/type/v3/http.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/type/v3/percent.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/type/v3/range.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/type/v3/semantic_version.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/google/api/annotations.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/google/api/http.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/google/protobuf/any.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/google/protobuf/duration.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/google/protobuf/empty.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/google/protobuf/struct.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/google/protobuf/timestamp.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/udpa/core/v1/authority.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/udpa/core/v1/collection_entry.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/udpa/core/v1/context_params.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/udpa/core/v1/resource.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/udpa/core/v1/resource_locator.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/udpa/core/v1/resource_name.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/validate/validate.upbdefs.h',
'src/core/ext/xds/certificate_provider_factory.h',
'src/core/ext/xds/certificate_provider_registry.h',
'src/core/ext/xds/certificate_provider_store.h',
+ 'src/core/ext/xds/file_watcher_certificate_provider_factory.h',
'src/core/ext/xds/google_mesh_ca_certificate_provider_factory.h',
'src/core/ext/xds/xds_api.h',
'src/core/ext/xds/xds_bootstrap.h',
+ 'src/core/ext/xds/xds_certificate_provider.h',
'src/core/ext/xds/xds_channel_args.h',
'src/core/ext/xds/xds_client.h',
'src/core/ext/xds/xds_client_stats.h',
'src/core/lib/gpr/tls_gcc.h',
'src/core/lib/gpr/tls_msvc.h',
'src/core/lib/gpr/tls_pthread.h',
+ 'src/core/lib/gpr/tls_stdcpp.h',
'src/core/lib/gpr/tmpfile.h',
'src/core/lib/gpr/useful.h',
'src/core/lib/gprpp/arena.h',
'src/core/lib/gprpp/atomic.h',
'src/core/lib/gprpp/debug_location.h',
'src/core/lib/gprpp/dual_ref_counted.h',
+ 'src/core/lib/gprpp/examine_stack.h',
'src/core/lib/gprpp/fork.h',
'src/core/lib/gprpp/global_config.h',
'src/core/lib/gprpp/global_config_custom.h',
'src/core/lib/gprpp/orphanable.h',
'src/core/lib/gprpp/ref_counted.h',
'src/core/lib/gprpp/ref_counted_ptr.h',
+ 'src/core/lib/gprpp/stat.h',
'src/core/lib/gprpp/sync.h',
'src/core/lib/gprpp/thd.h',
'src/core/lib/http/format_request.h',
'src/core/lib/security/authorization/mock_cel/cel_value.h',
'src/core/lib/security/authorization/mock_cel/evaluator_core.h',
'src/core/lib/security/authorization/mock_cel/flat_expr_builder.h',
- 'src/core/lib/security/authorization/mock_cel/statusor.h',
- 'src/core/lib/security/certificate_provider.h',
'src/core/lib/security/context/security_context.h',
'src/core/lib/security/credentials/alts/alts_credentials.h',
'src/core/lib/security/credentials/alts/check_gcp_environment.h',
'src/core/lib/security/credentials/alts/grpc_alts_credentials_options.h',
'src/core/lib/security/credentials/composite/composite_credentials.h',
'src/core/lib/security/credentials/credentials.h',
+ 'src/core/lib/security/credentials/external/aws_request_signer.h',
+ 'src/core/lib/security/credentials/external/external_account_credentials.h',
+ 'src/core/lib/security/credentials/external/file_external_account_credentials.h',
+ 'src/core/lib/security/credentials/external/url_external_account_credentials.h',
'src/core/lib/security/credentials/fake/fake_credentials.h',
'src/core/lib/security/credentials/google_default/google_default_credentials.h',
'src/core/lib/security/credentials/iam/iam_credentials.h',
'src/core/lib/security/credentials/plugin/plugin_credentials.h',
'src/core/lib/security/credentials/ssl/ssl_credentials.h',
'src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h',
+ 'src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h',
'src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h',
'src/core/lib/security/credentials/tls/tls_credentials.h',
'src/core/lib/security/credentials/xds/xds_credentials.h',
'src/core/lib/security/security_connector/alts/alts_security_connector.h',
'src/core/lib/security/security_connector/fake/fake_security_connector.h',
+ 'src/core/lib/security/security_connector/insecure/insecure_security_connector.h',
'src/core/lib/security/security_connector/load_system_roots.h',
'src/core/lib/security/security_connector/load_system_roots_linux.h',
'src/core/lib/security/security_connector/local/local_security_connector.h',
'third_party/re2/util/utf.h',
'third_party/re2/util/util.h',
'third_party/upb/upb/decode.h',
+ 'third_party/upb/upb/def.h',
+ 'third_party/upb/upb/def.hpp',
'third_party/upb/upb/encode.h',
'third_party/upb/upb/msg.h',
'third_party/upb/upb/port_def.inc',
'third_party/upb/upb/port_undef.inc',
+ 'third_party/upb/upb/reflection.h',
'third_party/upb/upb/table.int.h',
+ 'third_party/upb/upb/text_encode.h',
'third_party/upb/upb/upb.h',
'third_party/upb/upb/upb.hpp'
end
Pod::Spec.new do |s|
s.name = 'gRPC-Core'
- version = '1.33.2'
+ version = '1.34.0'
s.version = version
s.summary = 'Core cross-platform gRPC library, written in C'
s.homepage = 'https://grpc.io'
# which was released in Cocoapods v1.2.0.
s.cocoapods_version = '>= 1.2.0'
- s.ios.deployment_target = '7.0'
- s.osx.deployment_target = '10.9'
+ s.ios.deployment_target = '9.0'
+ s.osx.deployment_target = '10.10'
s.tvos.deployment_target = '10.0'
s.watchos.deployment_target = '4.0'
s.requires_arc = false
name = 'grpc'
- abseil_version = '1.20200225.0'
+ abseil_version = '1.20200923.2'
# When creating a dynamic framework, name it grpc.framework instead of gRPC-Core.framework.
# This lets users write their includes like `#include <grpc/grpc.h>` as opposed to `#include
ss.header_mappings_dir = '.'
ss.libraries = 'z'
ss.dependency "#{s.name}/Interface", version
- ss.dependency 'BoringSSL-GRPC', '0.0.13'
+ ss.dependency 'BoringSSL-GRPC', '0.0.14'
ss.dependency 'abseil/base/base', abseil_version
ss.dependency 'abseil/container/flat_hash_set', abseil_version
ss.dependency 'abseil/container/inlined_vector', abseil_version
+ ss.dependency 'abseil/functional/bind_front', abseil_version
ss.dependency 'abseil/memory/memory', abseil_version
ss.dependency 'abseil/status/status', abseil_version
ss.dependency 'abseil/strings/str_format', abseil_version
'src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc',
'src/core/ext/filters/client_channel/lb_policy/xds/cds.cc',
'src/core/ext/filters/client_channel/lb_policy/xds/eds.cc',
- 'src/core/ext/filters/client_channel/lb_policy/xds/eds_drop.cc',
'src/core/ext/filters/client_channel/lb_policy/xds/xds.h',
+ 'src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc',
'src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc',
'src/core/ext/filters/client_channel/lb_policy_factory.h',
'src/core/ext/filters/client_channel/lb_policy_registry.cc',
'src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.h',
'src/core/ext/upb-generated/validate/validate.upb.c',
'src/core/ext/upb-generated/validate/validate.upb.h',
+ 'src/core/ext/upbdefs-generated/envoy/annotations/deprecation.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/annotations/deprecation.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/annotations/resource.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/annotations/resource.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/config/cluster/v3/filter.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/config/cluster/v3/filter.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/config/core/v3/backoff.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/config/core/v3/backoff.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/config/core/v3/event_service_config.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/config/core/v3/event_service_config.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_service.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_service.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/config/core/v3/http_uri.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/config/core/v3/http_uri.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/load_report.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/load_report.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/config/listener/v3/api_listener.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/config/listener/v3/api_listener.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/service/cluster/v3/cds.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/service/cluster/v3/cds.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/service/endpoint/v3/eds.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/service/endpoint/v3/eds.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/service/listener/v3/lds.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/service/listener/v3/lds.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/service/route/v3/rds.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/service/route/v3/rds.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/service/route/v3/srds.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/service/route/v3/srds.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/type/matcher/v3/metadata.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/type/matcher/v3/metadata.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/type/matcher/v3/number.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/type/matcher/v3/number.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/type/matcher/v3/path.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/type/matcher/v3/path.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/type/matcher/v3/value.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/type/matcher/v3/value.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/type/metadata/v3/metadata.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/type/metadata/v3/metadata.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/type/tracing/v3/custom_tag.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/type/tracing/v3/custom_tag.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/type/v3/http.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/type/v3/http.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/type/v3/percent.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/type/v3/percent.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/type/v3/range.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/type/v3/range.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/type/v3/semantic_version.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/type/v3/semantic_version.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/google/api/annotations.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/google/api/annotations.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/google/api/http.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/google/api/http.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/google/protobuf/any.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/google/protobuf/any.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/google/protobuf/duration.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/google/protobuf/duration.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/google/protobuf/empty.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/google/protobuf/empty.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/google/protobuf/struct.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/google/protobuf/struct.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/google/protobuf/timestamp.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/google/protobuf/timestamp.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/udpa/core/v1/authority.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/udpa/core/v1/authority.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/udpa/core/v1/collection_entry.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/udpa/core/v1/collection_entry.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/udpa/core/v1/context_params.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/udpa/core/v1/context_params.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/udpa/core/v1/resource.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/udpa/core/v1/resource.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/udpa/core/v1/resource_locator.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/udpa/core/v1/resource_locator.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/udpa/core/v1/resource_name.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/udpa/core/v1/resource_name.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/validate/validate.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/validate/validate.upbdefs.h',
'src/core/ext/xds/certificate_provider_factory.h',
'src/core/ext/xds/certificate_provider_registry.cc',
'src/core/ext/xds/certificate_provider_registry.h',
+ 'src/core/ext/xds/certificate_provider_store.cc',
'src/core/ext/xds/certificate_provider_store.h',
+ 'src/core/ext/xds/file_watcher_certificate_provider_factory.cc',
+ 'src/core/ext/xds/file_watcher_certificate_provider_factory.h',
'src/core/ext/xds/google_mesh_ca_certificate_provider_factory.cc',
'src/core/ext/xds/google_mesh_ca_certificate_provider_factory.h',
'src/core/ext/xds/xds_api.cc',
'src/core/ext/xds/xds_api.h',
'src/core/ext/xds/xds_bootstrap.cc',
'src/core/ext/xds/xds_bootstrap.h',
+ 'src/core/ext/xds/xds_certificate_provider.cc',
+ 'src/core/ext/xds/xds_certificate_provider.h',
'src/core/ext/xds/xds_channel_args.h',
'src/core/ext/xds/xds_client.cc',
'src/core/ext/xds/xds_client.h',
'src/core/lib/gpr/tls_msvc.h',
'src/core/lib/gpr/tls_pthread.cc',
'src/core/lib/gpr/tls_pthread.h',
+ 'src/core/lib/gpr/tls_stdcpp.h',
'src/core/lib/gpr/tmpfile.h',
'src/core/lib/gpr/tmpfile_msys.cc',
'src/core/lib/gpr/tmpfile_posix.cc',
'src/core/lib/gprpp/atomic.h',
'src/core/lib/gprpp/debug_location.h',
'src/core/lib/gprpp/dual_ref_counted.h',
+ 'src/core/lib/gprpp/examine_stack.cc',
+ 'src/core/lib/gprpp/examine_stack.h',
'src/core/lib/gprpp/fork.cc',
'src/core/lib/gprpp/fork.h',
'src/core/lib/gprpp/global_config.h',
'src/core/lib/gprpp/orphanable.h',
'src/core/lib/gprpp/ref_counted.h',
'src/core/lib/gprpp/ref_counted_ptr.h',
+ 'src/core/lib/gprpp/stat.h',
+ 'src/core/lib/gprpp/stat_posix.cc',
+ 'src/core/lib/gprpp/stat_windows.cc',
'src/core/lib/gprpp/sync.h',
'src/core/lib/gprpp/thd.h',
'src/core/lib/gprpp/thd_posix.cc',
'src/core/lib/security/authorization/mock_cel/cel_value.h',
'src/core/lib/security/authorization/mock_cel/evaluator_core.h',
'src/core/lib/security/authorization/mock_cel/flat_expr_builder.h',
- 'src/core/lib/security/authorization/mock_cel/statusor.h',
- 'src/core/lib/security/certificate_provider.h',
'src/core/lib/security/context/security_context.cc',
'src/core/lib/security/context/security_context.h',
'src/core/lib/security/credentials/alts/alts_credentials.cc',
'src/core/lib/security/credentials/credentials.cc',
'src/core/lib/security/credentials/credentials.h',
'src/core/lib/security/credentials/credentials_metadata.cc',
+ 'src/core/lib/security/credentials/external/aws_request_signer.cc',
+ 'src/core/lib/security/credentials/external/aws_request_signer.h',
+ 'src/core/lib/security/credentials/external/external_account_credentials.cc',
+ 'src/core/lib/security/credentials/external/external_account_credentials.h',
+ 'src/core/lib/security/credentials/external/file_external_account_credentials.cc',
+ 'src/core/lib/security/credentials/external/file_external_account_credentials.h',
+ 'src/core/lib/security/credentials/external/url_external_account_credentials.cc',
+ 'src/core/lib/security/credentials/external/url_external_account_credentials.h',
'src/core/lib/security/credentials/fake/fake_credentials.cc',
'src/core/lib/security/credentials/fake/fake_credentials.h',
'src/core/lib/security/credentials/google_default/credentials_generic.cc',
'src/core/lib/security/credentials/google_default/google_default_credentials.h',
'src/core/lib/security/credentials/iam/iam_credentials.cc',
'src/core/lib/security/credentials/iam/iam_credentials.h',
+ 'src/core/lib/security/credentials/insecure/insecure_credentials.cc',
'src/core/lib/security/credentials/jwt/json_token.cc',
'src/core/lib/security/credentials/jwt/json_token.h',
'src/core/lib/security/credentials/jwt/jwt_credentials.cc',
'src/core/lib/security/credentials/ssl/ssl_credentials.h',
'src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc',
'src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h',
+ 'src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc',
+ 'src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h',
'src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc',
'src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h',
'src/core/lib/security/credentials/tls/tls_credentials.cc',
'src/core/lib/security/security_connector/alts/alts_security_connector.h',
'src/core/lib/security/security_connector/fake/fake_security_connector.cc',
'src/core/lib/security/security_connector/fake/fake_security_connector.h',
+ 'src/core/lib/security/security_connector/insecure/insecure_security_connector.cc',
+ 'src/core/lib/security/security_connector/insecure/insecure_security_connector.h',
'src/core/lib/security/security_connector/load_system_roots.h',
'src/core/lib/security/security_connector/load_system_roots_fallback.cc',
'src/core/lib/security/security_connector/load_system_roots_linux.cc',
'third_party/re2/util/util.h',
'third_party/upb/upb/decode.c',
'third_party/upb/upb/decode.h',
+ 'third_party/upb/upb/def.c',
+ 'third_party/upb/upb/def.h',
+ 'third_party/upb/upb/def.hpp',
'third_party/upb/upb/encode.c',
'third_party/upb/upb/encode.h',
'third_party/upb/upb/msg.c',
'third_party/upb/upb/port.c',
'third_party/upb/upb/port_def.inc',
'third_party/upb/upb/port_undef.inc',
+ 'third_party/upb/upb/reflection.c',
+ 'third_party/upb/upb/reflection.h',
'third_party/upb/upb/table.c',
'third_party/upb/upb/table.int.h',
+ 'third_party/upb/upb/text_encode.c',
+ 'third_party/upb/upb/text_encode.h',
'third_party/upb/upb/upb.c',
'third_party/upb/upb/upb.h',
'third_party/upb/upb/upb.hpp'
'src/core/ext/upb-generated/udpa/core/v1/resource_name.upb.h',
'src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.h',
'src/core/ext/upb-generated/validate/validate.upb.h',
+ 'src/core/ext/upbdefs-generated/envoy/annotations/deprecation.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/annotations/resource.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/config/cluster/v3/filter.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/config/core/v3/backoff.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/config/core/v3/event_service_config.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_service.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/config/core/v3/http_uri.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/load_report.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/config/listener/v3/api_listener.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/service/cluster/v3/cds.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/service/endpoint/v3/eds.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/service/listener/v3/lds.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/service/route/v3/rds.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/service/route/v3/srds.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/type/matcher/v3/metadata.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/type/matcher/v3/number.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/type/matcher/v3/path.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/type/matcher/v3/value.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/type/metadata/v3/metadata.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/type/tracing/v3/custom_tag.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/type/v3/http.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/type/v3/percent.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/type/v3/range.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/envoy/type/v3/semantic_version.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/google/api/annotations.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/google/api/http.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/google/protobuf/any.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/google/protobuf/duration.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/google/protobuf/empty.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/google/protobuf/struct.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/google/protobuf/timestamp.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/udpa/core/v1/authority.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/udpa/core/v1/collection_entry.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/udpa/core/v1/context_params.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/udpa/core/v1/resource.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/udpa/core/v1/resource_locator.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/udpa/core/v1/resource_name.upbdefs.h',
+ 'src/core/ext/upbdefs-generated/validate/validate.upbdefs.h',
'src/core/ext/xds/certificate_provider_factory.h',
'src/core/ext/xds/certificate_provider_registry.h',
'src/core/ext/xds/certificate_provider_store.h',
+ 'src/core/ext/xds/file_watcher_certificate_provider_factory.h',
'src/core/ext/xds/google_mesh_ca_certificate_provider_factory.h',
'src/core/ext/xds/xds_api.h',
'src/core/ext/xds/xds_bootstrap.h',
+ 'src/core/ext/xds/xds_certificate_provider.h',
'src/core/ext/xds/xds_channel_args.h',
'src/core/ext/xds/xds_client.h',
'src/core/ext/xds/xds_client_stats.h',
'src/core/lib/gpr/tls_gcc.h',
'src/core/lib/gpr/tls_msvc.h',
'src/core/lib/gpr/tls_pthread.h',
+ 'src/core/lib/gpr/tls_stdcpp.h',
'src/core/lib/gpr/tmpfile.h',
'src/core/lib/gpr/useful.h',
'src/core/lib/gprpp/arena.h',
'src/core/lib/gprpp/atomic.h',
'src/core/lib/gprpp/debug_location.h',
'src/core/lib/gprpp/dual_ref_counted.h',
+ 'src/core/lib/gprpp/examine_stack.h',
'src/core/lib/gprpp/fork.h',
'src/core/lib/gprpp/global_config.h',
'src/core/lib/gprpp/global_config_custom.h',
'src/core/lib/gprpp/orphanable.h',
'src/core/lib/gprpp/ref_counted.h',
'src/core/lib/gprpp/ref_counted_ptr.h',
+ 'src/core/lib/gprpp/stat.h',
'src/core/lib/gprpp/sync.h',
'src/core/lib/gprpp/thd.h',
'src/core/lib/http/format_request.h',
'src/core/lib/security/authorization/mock_cel/cel_value.h',
'src/core/lib/security/authorization/mock_cel/evaluator_core.h',
'src/core/lib/security/authorization/mock_cel/flat_expr_builder.h',
- 'src/core/lib/security/authorization/mock_cel/statusor.h',
- 'src/core/lib/security/certificate_provider.h',
'src/core/lib/security/context/security_context.h',
'src/core/lib/security/credentials/alts/alts_credentials.h',
'src/core/lib/security/credentials/alts/check_gcp_environment.h',
'src/core/lib/security/credentials/alts/grpc_alts_credentials_options.h',
'src/core/lib/security/credentials/composite/composite_credentials.h',
'src/core/lib/security/credentials/credentials.h',
+ 'src/core/lib/security/credentials/external/aws_request_signer.h',
+ 'src/core/lib/security/credentials/external/external_account_credentials.h',
+ 'src/core/lib/security/credentials/external/file_external_account_credentials.h',
+ 'src/core/lib/security/credentials/external/url_external_account_credentials.h',
'src/core/lib/security/credentials/fake/fake_credentials.h',
'src/core/lib/security/credentials/google_default/google_default_credentials.h',
'src/core/lib/security/credentials/iam/iam_credentials.h',
'src/core/lib/security/credentials/plugin/plugin_credentials.h',
'src/core/lib/security/credentials/ssl/ssl_credentials.h',
'src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h',
+ 'src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h',
'src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h',
'src/core/lib/security/credentials/tls/tls_credentials.h',
'src/core/lib/security/credentials/xds/xds_credentials.h',
'src/core/lib/security/security_connector/alts/alts_security_connector.h',
'src/core/lib/security/security_connector/fake/fake_security_connector.h',
+ 'src/core/lib/security/security_connector/insecure/insecure_security_connector.h',
'src/core/lib/security/security_connector/load_system_roots.h',
'src/core/lib/security/security_connector/load_system_roots_linux.h',
'src/core/lib/security/security_connector/local/local_security_connector.h',
'third_party/re2/util/utf.h',
'third_party/re2/util/util.h',
'third_party/upb/upb/decode.h',
+ 'third_party/upb/upb/def.h',
+ 'third_party/upb/upb/def.hpp',
'third_party/upb/upb/encode.h',
'third_party/upb/upb/msg.h',
'third_party/upb/upb/port_def.inc',
'third_party/upb/upb/port_undef.inc',
+ 'third_party/upb/upb/reflection.h',
'third_party/upb/upb/table.int.h',
+ 'third_party/upb/upb/text_encode.h',
'third_party/upb/upb/upb.h',
'third_party/upb/upb/upb.hpp'
end
'test/core/util/debugger_macros.h',
'test/core/util/eval_args_mock_endpoint.cc',
'test/core/util/eval_args_mock_endpoint.h',
- 'test/core/util/examine_stack.cc',
- 'test/core/util/examine_stack.h',
'test/core/util/fuzzer_util.cc',
'test/core/util/fuzzer_util.h',
'test/core/util/grpc_profiler.cc',
'test/core/util/port_server_client.h',
'test/core/util/reconnect_server.cc',
'test/core/util/reconnect_server.h',
+ 'test/core/util/resolve_localhost_ip46.cc',
+ 'test/core/util/resolve_localhost_ip46.h',
'test/core/util/slice_splitter.cc',
'test/core/util/slice_splitter.h',
+ 'test/core/util/stack_tracer.cc',
+ 'test/core/util/stack_tracer.h',
'test/core/util/subprocess.h',
'test/core/util/subprocess_windows.cc',
'test/core/util/test_config.cc',
Pod::Spec.new do |s|
s.name = 'gRPC-ProtoRPC'
- version = '1.33.2'
+ version = '1.34.0'
s.version = version
s.summary = 'RPC library for Protocol Buffers, based on gRPC'
s.homepage = 'https://grpc.io'
:tag => "v#{version}",
}
- s.ios.deployment_target = '7.0'
- s.osx.deployment_target = '10.9'
+ s.ios.deployment_target = '9.0'
+ s.osx.deployment_target = '10.10'
s.tvos.deployment_target = '10.0'
s.watchos.deployment_target = '4.0'
Pod::Spec.new do |s|
s.name = 'gRPC-RxLibrary'
- version = '1.33.2'
+ version = '1.34.0'
s.version = version
s.summary = 'Reactive Extensions library for iOS/OSX.'
s.homepage = 'https://grpc.io'
:tag => "v#{version}",
}
- s.ios.deployment_target = '7.0'
- s.osx.deployment_target = '10.9'
+ s.ios.deployment_target = '9.0'
+ s.osx.deployment_target = '10.10'
s.tvos.deployment_target = '10.0'
s.watchos.deployment_target = '4.0'
Pod::Spec.new do |s|
s.name = 'gRPC'
- version = '1.33.2'
+ version = '1.34.0'
s.version = version
s.summary = 'gRPC client library for iOS/OSX'
s.homepage = 'https://grpc.io'
'CLANG_WARN_STRICT_PROTOTYPES' => 'NO',
}
- s.ios.deployment_target = '7.0'
- s.osx.deployment_target = '10.9'
+ s.ios.deployment_target = '9.0'
+ s.osx.deployment_target = '10.10'
s.tvos.deployment_target = '10.0'
s.watchos.deployment_target = '4.0'
"src/objective-c/GRPCClient/GRPCTypes.m"
ss.dependency "gRPC-RxLibrary/Interface", version
- ss.ios.deployment_target = '7.0'
- ss.osx.deployment_target = '10.9'
+ ss.ios.deployment_target = '9.0'
+ ss.osx.deployment_target = '10.10'
ss.tvos.deployment_target = '10.0'
ss.watchos.deployment_target = '4.0'
end
ss.dependency "#{s.name}/Interface-Legacy", version
- ss.ios.deployment_target = '7.0'
- ss.osx.deployment_target = '10.9'
+ ss.ios.deployment_target = '9.0'
+ ss.osx.deployment_target = '10.10'
ss.tvos.deployment_target = '10.0'
ss.watchos.deployment_target = '4.0'
end
ss.dependency 'gRPC-Core', version
ss.dependency 'gRPC-RxLibrary', version
- ss.ios.deployment_target = '7.0'
- ss.osx.deployment_target = '10.9'
+ ss.ios.deployment_target = '9.0'
+ ss.osx.deployment_target = '10.10'
ss.tvos.deployment_target = '10.0'
ss.watchos.deployment_target = '4.0'
end
ss.dependency 'gRPC-Core/Cronet-Implementation', version
ss.dependency 'CronetFramework'
- ss.ios.deployment_target = '8.0'
+ ss.ios.deployment_target = '9.0'
end
# CFStream is now default. Leaving this subspec only for compatibility purpose.
s.subspec 'CFStream' do |ss|
ss.dependency "#{s.name}/GRPCCore", version
- ss.ios.deployment_target = '7.0'
- ss.osx.deployment_target = '10.9'
+ ss.ios.deployment_target = '9.0'
+ ss.osx.deployment_target = '10.10'
ss.tvos.deployment_target = '10.0'
ss.watchos.deployment_target = '4.0'
end
ss.source_files = 'src/objective-c/GRPCClient/internal_testing/*.{h,m}'
ss.header_mappings_dir = 'src/objective-c/GRPCClient'
- ss.ios.deployment_target = '7.0'
- ss.osx.deployment_target = '10.9'
+ ss.ios.deployment_target = '9.0'
+ ss.osx.deployment_target = '10.10'
ss.tvos.deployment_target = '10.0'
ss.watchos.deployment_target = '4.0'
end
grpc_alts_server_credentials_create
grpc_local_credentials_create
grpc_local_server_credentials_create
+ grpc_tls_identity_pairs_create
+ grpc_tls_identity_pairs_add_pair
+ grpc_tls_identity_pairs_destroy
+ grpc_tls_certificate_provider_static_data_create
+ grpc_tls_certificate_provider_release
grpc_tls_credentials_options_create
grpc_tls_credentials_options_set_cert_request_type
grpc_tls_credentials_options_set_server_verification_option
- grpc_tls_credentials_options_set_key_materials_config
- grpc_tls_credentials_options_set_credential_reload_config
+ grpc_tls_credentials_options_set_certificate_provider
+ grpc_tls_credentials_options_watch_root_certs
+ grpc_tls_credentials_options_set_root_cert_name
+ grpc_tls_credentials_options_watch_identity_key_cert_pairs
+ grpc_tls_credentials_options_set_identity_cert_name
grpc_tls_credentials_options_set_server_authorization_check_config
- grpc_tls_key_materials_config_create
- grpc_tls_key_materials_config_set_key_materials
- grpc_tls_key_materials_config_set_version
- grpc_tls_key_materials_config_get_version
- grpc_tls_credential_reload_config_create
grpc_tls_server_authorization_check_config_create
+ grpc_tls_server_authorization_check_config_release
grpc_xds_credentials_create
grpc_raw_byte_buffer_create
grpc_raw_compressed_byte_buffer_create
s.files += %w( src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc )
s.files += %w( src/core/ext/filters/client_channel/lb_policy/xds/cds.cc )
s.files += %w( src/core/ext/filters/client_channel/lb_policy/xds/eds.cc )
- s.files += %w( src/core/ext/filters/client_channel/lb_policy/xds/eds_drop.cc )
s.files += %w( src/core/ext/filters/client_channel/lb_policy/xds/xds.h )
+ s.files += %w( src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc )
s.files += %w( src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc )
s.files += %w( src/core/ext/filters/client_channel/lb_policy_factory.h )
s.files += %w( src/core/ext/filters/client_channel/lb_policy_registry.cc )
s.files += %w( src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.h )
s.files += %w( src/core/ext/upb-generated/validate/validate.upb.c )
s.files += %w( src/core/ext/upb-generated/validate/validate.upb.h )
+ s.files += %w( src/core/ext/upbdefs-generated/envoy/annotations/deprecation.upbdefs.c )
+ s.files += %w( src/core/ext/upbdefs-generated/envoy/annotations/deprecation.upbdefs.h )
+ s.files += %w( src/core/ext/upbdefs-generated/envoy/annotations/resource.upbdefs.c )
+ s.files += %w( src/core/ext/upbdefs-generated/envoy/annotations/resource.upbdefs.h )
+ s.files += %w( src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.c )
+ s.files += %w( src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.h )
+ s.files += %w( src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.c )
+ s.files += %w( src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.h )
+ s.files += %w( src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c )
+ s.files += %w( src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.h )
+ s.files += %w( src/core/ext/upbdefs-generated/envoy/config/cluster/v3/filter.upbdefs.c )
+ s.files += %w( src/core/ext/upbdefs-generated/envoy/config/cluster/v3/filter.upbdefs.h )
+ s.files += %w( src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.c )
+ s.files += %w( src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.h )
+ s.files += %w( src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.c )
+ s.files += %w( src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.h )
+ s.files += %w( src/core/ext/upbdefs-generated/envoy/config/core/v3/backoff.upbdefs.c )
+ s.files += %w( src/core/ext/upbdefs-generated/envoy/config/core/v3/backoff.upbdefs.h )
+ s.files += %w( src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.c )
+ s.files += %w( src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.h )
+ s.files += %w( src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.c )
+ s.files += %w( src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.h )
+ s.files += %w( src/core/ext/upbdefs-generated/envoy/config/core/v3/event_service_config.upbdefs.c )
+ s.files += %w( src/core/ext/upbdefs-generated/envoy/config/core/v3/event_service_config.upbdefs.h )
+ s.files += %w( src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.c )
+ s.files += %w( src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.h )
+ s.files += %w( src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_service.upbdefs.c )
+ s.files += %w( src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_service.upbdefs.h )
+ s.files += %w( src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.c )
+ s.files += %w( src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.h )
+ s.files += %w( src/core/ext/upbdefs-generated/envoy/config/core/v3/http_uri.upbdefs.c )
+ s.files += %w( src/core/ext/upbdefs-generated/envoy/config/core/v3/http_uri.upbdefs.h )
+ s.files += %w( src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c )
+ s.files += %w( src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.h )
+ s.files += %w( src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.c )
+ s.files += %w( src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.h )
+ s.files += %w( src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.c )
+ s.files += %w( src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.h )
+ s.files += %w( src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.c )
+ s.files += %w( src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.h )
+ s.files += %w( src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.c )
+ s.files += %w( src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.h )
+ s.files += %w( src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.c )
+ s.files += %w( src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.h )
+ s.files += %w( src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/load_report.upbdefs.c )
+ s.files += %w( src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/load_report.upbdefs.h )
+ s.files += %w( src/core/ext/upbdefs-generated/envoy/config/listener/v3/api_listener.upbdefs.c )
+ s.files += %w( src/core/ext/upbdefs-generated/envoy/config/listener/v3/api_listener.upbdefs.h )
+ s.files += %w( src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.c )
+ s.files += %w( src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.h )
+ s.files += %w( src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.c )
+ s.files += %w( src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.h )
+ s.files += %w( src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.c )
+ s.files += %w( src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.h )
+ s.files += %w( src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.c )
+ s.files += %w( src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.h )
+ s.files += %w( src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c )
+ s.files += %w( src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.h )
+ s.files += %w( src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.c )
+ s.files += %w( src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.h )
+ s.files += %w( src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.c )
+ s.files += %w( src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.h )
+ s.files += %w( src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c )
+ s.files += %w( src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.h )
+ s.files += %w( src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.c )
+ s.files += %w( src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.h )
+ s.files += %w( src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c )
+ s.files += %w( src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.h )
+ s.files += %w( src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.c )
+ s.files += %w( src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.h )
+ s.files += %w( src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c )
+ s.files += %w( src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.h )
+ s.files += %w( src/core/ext/upbdefs-generated/envoy/service/cluster/v3/cds.upbdefs.c )
+ s.files += %w( src/core/ext/upbdefs-generated/envoy/service/cluster/v3/cds.upbdefs.h )
+ s.files += %w( src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.c )
+ s.files += %w( src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.h )
+ s.files += %w( src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.c )
+ s.files += %w( src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.h )
+ s.files += %w( src/core/ext/upbdefs-generated/envoy/service/endpoint/v3/eds.upbdefs.c )
+ s.files += %w( src/core/ext/upbdefs-generated/envoy/service/endpoint/v3/eds.upbdefs.h )
+ s.files += %w( src/core/ext/upbdefs-generated/envoy/service/listener/v3/lds.upbdefs.c )
+ s.files += %w( src/core/ext/upbdefs-generated/envoy/service/listener/v3/lds.upbdefs.h )
+ s.files += %w( src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.c )
+ s.files += %w( src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.h )
+ s.files += %w( src/core/ext/upbdefs-generated/envoy/service/route/v3/rds.upbdefs.c )
+ s.files += %w( src/core/ext/upbdefs-generated/envoy/service/route/v3/rds.upbdefs.h )
+ s.files += %w( src/core/ext/upbdefs-generated/envoy/service/route/v3/srds.upbdefs.c )
+ s.files += %w( src/core/ext/upbdefs-generated/envoy/service/route/v3/srds.upbdefs.h )
+ s.files += %w( src/core/ext/upbdefs-generated/envoy/type/matcher/v3/metadata.upbdefs.c )
+ s.files += %w( src/core/ext/upbdefs-generated/envoy/type/matcher/v3/metadata.upbdefs.h )
+ s.files += %w( src/core/ext/upbdefs-generated/envoy/type/matcher/v3/number.upbdefs.c )
+ s.files += %w( src/core/ext/upbdefs-generated/envoy/type/matcher/v3/number.upbdefs.h )
+ s.files += %w( src/core/ext/upbdefs-generated/envoy/type/matcher/v3/path.upbdefs.c )
+ s.files += %w( src/core/ext/upbdefs-generated/envoy/type/matcher/v3/path.upbdefs.h )
+ s.files += %w( src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.c )
+ s.files += %w( src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.h )
+ s.files += %w( src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.c )
+ s.files += %w( src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.h )
+ s.files += %w( src/core/ext/upbdefs-generated/envoy/type/matcher/v3/value.upbdefs.c )
+ s.files += %w( src/core/ext/upbdefs-generated/envoy/type/matcher/v3/value.upbdefs.h )
+ s.files += %w( src/core/ext/upbdefs-generated/envoy/type/metadata/v3/metadata.upbdefs.c )
+ s.files += %w( src/core/ext/upbdefs-generated/envoy/type/metadata/v3/metadata.upbdefs.h )
+ s.files += %w( src/core/ext/upbdefs-generated/envoy/type/tracing/v3/custom_tag.upbdefs.c )
+ s.files += %w( src/core/ext/upbdefs-generated/envoy/type/tracing/v3/custom_tag.upbdefs.h )
+ s.files += %w( src/core/ext/upbdefs-generated/envoy/type/v3/http.upbdefs.c )
+ s.files += %w( src/core/ext/upbdefs-generated/envoy/type/v3/http.upbdefs.h )
+ s.files += %w( src/core/ext/upbdefs-generated/envoy/type/v3/percent.upbdefs.c )
+ s.files += %w( src/core/ext/upbdefs-generated/envoy/type/v3/percent.upbdefs.h )
+ s.files += %w( src/core/ext/upbdefs-generated/envoy/type/v3/range.upbdefs.c )
+ s.files += %w( src/core/ext/upbdefs-generated/envoy/type/v3/range.upbdefs.h )
+ s.files += %w( src/core/ext/upbdefs-generated/envoy/type/v3/semantic_version.upbdefs.c )
+ s.files += %w( src/core/ext/upbdefs-generated/envoy/type/v3/semantic_version.upbdefs.h )
+ s.files += %w( src/core/ext/upbdefs-generated/google/api/annotations.upbdefs.c )
+ s.files += %w( src/core/ext/upbdefs-generated/google/api/annotations.upbdefs.h )
+ s.files += %w( src/core/ext/upbdefs-generated/google/api/http.upbdefs.c )
+ s.files += %w( src/core/ext/upbdefs-generated/google/api/http.upbdefs.h )
+ s.files += %w( src/core/ext/upbdefs-generated/google/protobuf/any.upbdefs.c )
+ s.files += %w( src/core/ext/upbdefs-generated/google/protobuf/any.upbdefs.h )
+ s.files += %w( src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.c )
+ s.files += %w( src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.h )
+ s.files += %w( src/core/ext/upbdefs-generated/google/protobuf/duration.upbdefs.c )
+ s.files += %w( src/core/ext/upbdefs-generated/google/protobuf/duration.upbdefs.h )
+ s.files += %w( src/core/ext/upbdefs-generated/google/protobuf/empty.upbdefs.c )
+ s.files += %w( src/core/ext/upbdefs-generated/google/protobuf/empty.upbdefs.h )
+ s.files += %w( src/core/ext/upbdefs-generated/google/protobuf/struct.upbdefs.c )
+ s.files += %w( src/core/ext/upbdefs-generated/google/protobuf/struct.upbdefs.h )
+ s.files += %w( src/core/ext/upbdefs-generated/google/protobuf/timestamp.upbdefs.c )
+ s.files += %w( src/core/ext/upbdefs-generated/google/protobuf/timestamp.upbdefs.h )
+ s.files += %w( src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.c )
+ s.files += %w( src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.h )
+ s.files += %w( src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.c )
+ s.files += %w( src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.h )
+ s.files += %w( src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.c )
+ s.files += %w( src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.h )
+ s.files += %w( src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.c )
+ s.files += %w( src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.h )
+ s.files += %w( src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.c )
+ s.files += %w( src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.h )
+ s.files += %w( src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.c )
+ s.files += %w( src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.h )
+ s.files += %w( src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.c )
+ s.files += %w( src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.h )
+ s.files += %w( src/core/ext/upbdefs-generated/udpa/core/v1/authority.upbdefs.c )
+ s.files += %w( src/core/ext/upbdefs-generated/udpa/core/v1/authority.upbdefs.h )
+ s.files += %w( src/core/ext/upbdefs-generated/udpa/core/v1/collection_entry.upbdefs.c )
+ s.files += %w( src/core/ext/upbdefs-generated/udpa/core/v1/collection_entry.upbdefs.h )
+ s.files += %w( src/core/ext/upbdefs-generated/udpa/core/v1/context_params.upbdefs.c )
+ s.files += %w( src/core/ext/upbdefs-generated/udpa/core/v1/context_params.upbdefs.h )
+ s.files += %w( src/core/ext/upbdefs-generated/udpa/core/v1/resource.upbdefs.c )
+ s.files += %w( src/core/ext/upbdefs-generated/udpa/core/v1/resource.upbdefs.h )
+ s.files += %w( src/core/ext/upbdefs-generated/udpa/core/v1/resource_locator.upbdefs.c )
+ s.files += %w( src/core/ext/upbdefs-generated/udpa/core/v1/resource_locator.upbdefs.h )
+ s.files += %w( src/core/ext/upbdefs-generated/udpa/core/v1/resource_name.upbdefs.c )
+ s.files += %w( src/core/ext/upbdefs-generated/udpa/core/v1/resource_name.upbdefs.h )
+ s.files += %w( src/core/ext/upbdefs-generated/validate/validate.upbdefs.c )
+ s.files += %w( src/core/ext/upbdefs-generated/validate/validate.upbdefs.h )
s.files += %w( src/core/ext/xds/certificate_provider_factory.h )
s.files += %w( src/core/ext/xds/certificate_provider_registry.cc )
s.files += %w( src/core/ext/xds/certificate_provider_registry.h )
+ s.files += %w( src/core/ext/xds/certificate_provider_store.cc )
s.files += %w( src/core/ext/xds/certificate_provider_store.h )
+ s.files += %w( src/core/ext/xds/file_watcher_certificate_provider_factory.cc )
+ s.files += %w( src/core/ext/xds/file_watcher_certificate_provider_factory.h )
s.files += %w( src/core/ext/xds/google_mesh_ca_certificate_provider_factory.cc )
s.files += %w( src/core/ext/xds/google_mesh_ca_certificate_provider_factory.h )
s.files += %w( src/core/ext/xds/xds_api.cc )
s.files += %w( src/core/ext/xds/xds_api.h )
s.files += %w( src/core/ext/xds/xds_bootstrap.cc )
s.files += %w( src/core/ext/xds/xds_bootstrap.h )
+ s.files += %w( src/core/ext/xds/xds_certificate_provider.cc )
+ s.files += %w( src/core/ext/xds/xds_certificate_provider.h )
s.files += %w( src/core/ext/xds/xds_channel_args.h )
s.files += %w( src/core/ext/xds/xds_client.cc )
s.files += %w( src/core/ext/xds/xds_client.h )
s.files += %w( src/core/lib/gpr/tls_msvc.h )
s.files += %w( src/core/lib/gpr/tls_pthread.cc )
s.files += %w( src/core/lib/gpr/tls_pthread.h )
+ s.files += %w( src/core/lib/gpr/tls_stdcpp.h )
s.files += %w( src/core/lib/gpr/tmpfile.h )
s.files += %w( src/core/lib/gpr/tmpfile_msys.cc )
s.files += %w( src/core/lib/gpr/tmpfile_posix.cc )
s.files += %w( src/core/lib/gprpp/atomic.h )
s.files += %w( src/core/lib/gprpp/debug_location.h )
s.files += %w( src/core/lib/gprpp/dual_ref_counted.h )
+ s.files += %w( src/core/lib/gprpp/examine_stack.cc )
+ s.files += %w( src/core/lib/gprpp/examine_stack.h )
s.files += %w( src/core/lib/gprpp/fork.cc )
s.files += %w( src/core/lib/gprpp/fork.h )
s.files += %w( src/core/lib/gprpp/global_config.h )
s.files += %w( src/core/lib/gprpp/orphanable.h )
s.files += %w( src/core/lib/gprpp/ref_counted.h )
s.files += %w( src/core/lib/gprpp/ref_counted_ptr.h )
+ s.files += %w( src/core/lib/gprpp/stat.h )
+ s.files += %w( src/core/lib/gprpp/stat_posix.cc )
+ s.files += %w( src/core/lib/gprpp/stat_windows.cc )
s.files += %w( src/core/lib/gprpp/sync.h )
s.files += %w( src/core/lib/gprpp/thd.h )
s.files += %w( src/core/lib/gprpp/thd_posix.cc )
s.files += %w( src/core/lib/security/authorization/mock_cel/cel_value.h )
s.files += %w( src/core/lib/security/authorization/mock_cel/evaluator_core.h )
s.files += %w( src/core/lib/security/authorization/mock_cel/flat_expr_builder.h )
- s.files += %w( src/core/lib/security/authorization/mock_cel/statusor.h )
- s.files += %w( src/core/lib/security/certificate_provider.h )
s.files += %w( src/core/lib/security/context/security_context.cc )
s.files += %w( src/core/lib/security/context/security_context.h )
s.files += %w( src/core/lib/security/credentials/alts/alts_credentials.cc )
s.files += %w( src/core/lib/security/credentials/credentials.cc )
s.files += %w( src/core/lib/security/credentials/credentials.h )
s.files += %w( src/core/lib/security/credentials/credentials_metadata.cc )
+ s.files += %w( src/core/lib/security/credentials/external/aws_request_signer.cc )
+ s.files += %w( src/core/lib/security/credentials/external/aws_request_signer.h )
+ s.files += %w( src/core/lib/security/credentials/external/external_account_credentials.cc )
+ s.files += %w( src/core/lib/security/credentials/external/external_account_credentials.h )
+ s.files += %w( src/core/lib/security/credentials/external/file_external_account_credentials.cc )
+ s.files += %w( src/core/lib/security/credentials/external/file_external_account_credentials.h )
+ s.files += %w( src/core/lib/security/credentials/external/url_external_account_credentials.cc )
+ s.files += %w( src/core/lib/security/credentials/external/url_external_account_credentials.h )
s.files += %w( src/core/lib/security/credentials/fake/fake_credentials.cc )
s.files += %w( src/core/lib/security/credentials/fake/fake_credentials.h )
s.files += %w( src/core/lib/security/credentials/google_default/credentials_generic.cc )
s.files += %w( src/core/lib/security/credentials/google_default/google_default_credentials.h )
s.files += %w( src/core/lib/security/credentials/iam/iam_credentials.cc )
s.files += %w( src/core/lib/security/credentials/iam/iam_credentials.h )
+ s.files += %w( src/core/lib/security/credentials/insecure/insecure_credentials.cc )
s.files += %w( src/core/lib/security/credentials/jwt/json_token.cc )
s.files += %w( src/core/lib/security/credentials/jwt/json_token.h )
s.files += %w( src/core/lib/security/credentials/jwt/jwt_credentials.cc )
s.files += %w( src/core/lib/security/credentials/ssl/ssl_credentials.h )
s.files += %w( src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc )
s.files += %w( src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h )
+ s.files += %w( src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc )
+ s.files += %w( src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h )
s.files += %w( src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc )
s.files += %w( src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h )
s.files += %w( src/core/lib/security/credentials/tls/tls_credentials.cc )
s.files += %w( src/core/lib/security/security_connector/alts/alts_security_connector.h )
s.files += %w( src/core/lib/security/security_connector/fake/fake_security_connector.cc )
s.files += %w( src/core/lib/security/security_connector/fake/fake_security_connector.h )
+ s.files += %w( src/core/lib/security/security_connector/insecure/insecure_security_connector.cc )
+ s.files += %w( src/core/lib/security/security_connector/insecure/insecure_security_connector.h )
s.files += %w( src/core/lib/security/security_connector/load_system_roots.h )
s.files += %w( src/core/lib/security/security_connector/load_system_roots_fallback.cc )
s.files += %w( src/core/lib/security/security_connector/load_system_roots_linux.cc )
s.files += %w( third_party/abseil-cpp/absl/base/casts.h )
s.files += %w( third_party/abseil-cpp/absl/base/config.h )
s.files += %w( third_party/abseil-cpp/absl/base/const_init.h )
- s.files += %w( third_party/abseil-cpp/absl/base/dynamic_annotations.cc )
s.files += %w( third_party/abseil-cpp/absl/base/dynamic_annotations.h )
s.files += %w( third_party/abseil-cpp/absl/base/internal/atomic_hook.h )
s.files += %w( third_party/abseil-cpp/absl/base/internal/bits.h )
s.files += %w( third_party/abseil-cpp/absl/base/internal/cycleclock.cc )
s.files += %w( third_party/abseil-cpp/absl/base/internal/cycleclock.h )
s.files += %w( third_party/abseil-cpp/absl/base/internal/direct_mmap.h )
+ s.files += %w( third_party/abseil-cpp/absl/base/internal/dynamic_annotations.h )
s.files += %w( third_party/abseil-cpp/absl/base/internal/endian.h )
s.files += %w( third_party/abseil-cpp/absl/base/internal/errno_saver.h )
s.files += %w( third_party/abseil-cpp/absl/base/internal/exponential_biased.cc )
s.files += %w( third_party/abseil-cpp/absl/debugging/stacktrace.h )
s.files += %w( third_party/abseil-cpp/absl/debugging/symbolize.cc )
s.files += %w( third_party/abseil-cpp/absl/debugging/symbolize.h )
+ s.files += %w( third_party/abseil-cpp/absl/debugging/symbolize_darwin.inc )
s.files += %w( third_party/abseil-cpp/absl/debugging/symbolize_elf.inc )
s.files += %w( third_party/abseil-cpp/absl/debugging/symbolize_unimplemented.inc )
s.files += %w( third_party/abseil-cpp/absl/debugging/symbolize_win32.inc )
+ s.files += %w( third_party/abseil-cpp/absl/functional/bind_front.h )
s.files += %w( third_party/abseil-cpp/absl/functional/function_ref.h )
+ s.files += %w( third_party/abseil-cpp/absl/functional/internal/front_binder.h )
s.files += %w( third_party/abseil-cpp/absl/functional/internal/function_ref.h )
s.files += %w( third_party/abseil-cpp/absl/hash/hash.h )
s.files += %w( third_party/abseil-cpp/absl/hash/internal/city.cc )
s.files += %w( third_party/abseil-cpp/absl/numeric/int128.h )
s.files += %w( third_party/abseil-cpp/absl/numeric/int128_have_intrinsic.inc )
s.files += %w( third_party/abseil-cpp/absl/numeric/int128_no_intrinsic.inc )
+ s.files += %w( third_party/abseil-cpp/absl/status/internal/status_internal.h )
s.files += %w( third_party/abseil-cpp/absl/status/status.cc )
s.files += %w( third_party/abseil-cpp/absl/status/status.h )
s.files += %w( third_party/abseil-cpp/absl/status/status_payload_printer.cc )
s.files += %w( third_party/boringssl-with-bazel/src/crypto/trust_token/internal.h )
s.files += %w( third_party/boringssl-with-bazel/src/crypto/trust_token/pmbtoken.c )
s.files += %w( third_party/boringssl-with-bazel/src/crypto/trust_token/trust_token.c )
+ s.files += %w( third_party/boringssl-with-bazel/src/crypto/trust_token/voprf.c )
s.files += %w( third_party/boringssl-with-bazel/src/crypto/x509/a_digest.c )
s.files += %w( third_party/boringssl-with-bazel/src/crypto/x509/a_sign.c )
s.files += %w( third_party/boringssl-with-bazel/src/crypto/x509/a_strex.c )
s.files += %w( third_party/re2/util/util.h )
s.files += %w( third_party/upb/upb/decode.c )
s.files += %w( third_party/upb/upb/decode.h )
+ s.files += %w( third_party/upb/upb/def.c )
+ s.files += %w( third_party/upb/upb/def.h )
+ s.files += %w( third_party/upb/upb/def.hpp )
s.files += %w( third_party/upb/upb/encode.c )
s.files += %w( third_party/upb/upb/encode.h )
s.files += %w( third_party/upb/upb/msg.c )
s.files += %w( third_party/upb/upb/port.c )
s.files += %w( third_party/upb/upb/port_def.inc )
s.files += %w( third_party/upb/upb/port_undef.inc )
+ s.files += %w( third_party/upb/upb/reflection.c )
+ s.files += %w( third_party/upb/upb/reflection.h )
s.files += %w( third_party/upb/upb/table.c )
s.files += %w( third_party/upb/upb/table.int.h )
+ s.files += %w( third_party/upb/upb/text_encode.c )
+ s.files += %w( third_party/upb/upb/text_encode.h )
s.files += %w( third_party/upb/upb/upb.c )
s.files += %w( third_party/upb/upb/upb.h )
s.files += %w( third_party/upb/upb/upb.hpp )
},
'target_defaults': {
'configurations': {
- 'Release': {
+ 'Debug': {
'cflags': [
- '-O2',
- '-Wframe-larger-than=16384',
+ '-O0',
],
'defines': [
- 'NDEBUG',
+ '_DEBUG',
+ 'DEBUG',
],
},
- 'Debug': {
+ 'Release': {
'cflags': [
- '-O0',
+ '-O2',
+ '-Wframe-larger-than=16384',
],
'defines': [
- '_DEBUG',
- 'DEBUG',
+ 'NDEBUG',
],
},
},
'target_name': 'gpr',
'type': 'static_library',
'dependencies': [
+ 'absl/types:optional',
'absl/time:time',
'absl/synchronization:synchronization',
'absl/strings:strings',
'absl/strings:str_format',
+ 'absl/status:status',
'absl/memory:memory',
'absl/base:base',
],
'src/core/lib/gpr/tmpfile_windows.cc',
'src/core/lib/gpr/wrap_memcpy.cc',
'src/core/lib/gprpp/arena.cc',
+ 'src/core/lib/gprpp/examine_stack.cc',
'src/core/lib/gprpp/fork.cc',
'src/core/lib/gprpp/global_config_env.cc',
'src/core/lib/gprpp/host_port.cc',
'src/core/lib/gprpp/mpscq.cc',
+ 'src/core/lib/gprpp/stat_posix.cc',
+ 'src/core/lib/gprpp/stat_windows.cc',
'src/core/lib/gprpp/thd_posix.cc',
'src/core/lib/gprpp/thd_windows.cc',
'src/core/lib/profiling/basic_timers.cc',
'absl/types:optional',
'absl/strings:strings',
'absl/status:status',
+ 'absl/functional:bind_front',
'absl/container:inlined_vector',
'absl/container:flat_hash_set',
],
'src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc',
'src/core/ext/filters/client_channel/lb_policy/xds/cds.cc',
'src/core/ext/filters/client_channel/lb_policy/xds/eds.cc',
- 'src/core/ext/filters/client_channel/lb_policy/xds/eds_drop.cc',
+ 'src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc',
'src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc',
'src/core/ext/filters/client_channel/lb_policy_registry.cc',
'src/core/ext/filters/client_channel/local_subchannel_pool.cc',
'src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.c',
'src/core/ext/upb-generated/google/api/http.upb.c',
'src/core/ext/upb-generated/google/protobuf/any.upb.c',
- 'src/core/ext/upb-generated/google/protobuf/descriptor.upb.c',
'src/core/ext/upb-generated/google/protobuf/duration.upb.c',
'src/core/ext/upb-generated/google/protobuf/empty.upb.c',
'src/core/ext/upb-generated/google/protobuf/struct.upb.c',
'src/core/ext/upb-generated/udpa/core/v1/resource_name.upb.c',
'src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.c',
'src/core/ext/upb-generated/validate/validate.upb.c',
+ 'src/core/ext/upbdefs-generated/envoy/annotations/deprecation.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/annotations/resource.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/config/cluster/v3/filter.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/config/core/v3/backoff.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/config/core/v3/event_service_config.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_service.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/config/core/v3/http_uri.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/load_report.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/config/listener/v3/api_listener.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/service/cluster/v3/cds.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/service/endpoint/v3/eds.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/service/listener/v3/lds.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/service/route/v3/rds.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/service/route/v3/srds.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/type/matcher/v3/metadata.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/type/matcher/v3/number.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/type/matcher/v3/path.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/type/matcher/v3/value.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/type/metadata/v3/metadata.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/type/tracing/v3/custom_tag.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/type/v3/http.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/type/v3/percent.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/type/v3/range.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/type/v3/semantic_version.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/google/api/annotations.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/google/api/http.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/google/protobuf/any.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/google/protobuf/duration.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/google/protobuf/empty.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/google/protobuf/struct.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/google/protobuf/timestamp.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/udpa/core/v1/authority.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/udpa/core/v1/collection_entry.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/udpa/core/v1/context_params.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/udpa/core/v1/resource.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/udpa/core/v1/resource_locator.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/udpa/core/v1/resource_name.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/validate/validate.upbdefs.c',
'src/core/ext/xds/certificate_provider_registry.cc',
+ 'src/core/ext/xds/certificate_provider_store.cc',
+ 'src/core/ext/xds/file_watcher_certificate_provider_factory.cc',
'src/core/ext/xds/google_mesh_ca_certificate_provider_factory.cc',
'src/core/ext/xds/xds_api.cc',
'src/core/ext/xds/xds_bootstrap.cc',
+ 'src/core/ext/xds/xds_certificate_provider.cc',
'src/core/ext/xds/xds_client.cc',
'src/core/ext/xds/xds_client_stats.cc',
'src/core/lib/avl/avl.cc',
'src/core/lib/security/credentials/composite/composite_credentials.cc',
'src/core/lib/security/credentials/credentials.cc',
'src/core/lib/security/credentials/credentials_metadata.cc',
+ 'src/core/lib/security/credentials/external/aws_request_signer.cc',
+ 'src/core/lib/security/credentials/external/external_account_credentials.cc',
+ 'src/core/lib/security/credentials/external/file_external_account_credentials.cc',
+ 'src/core/lib/security/credentials/external/url_external_account_credentials.cc',
'src/core/lib/security/credentials/fake/fake_credentials.cc',
'src/core/lib/security/credentials/google_default/credentials_generic.cc',
'src/core/lib/security/credentials/google_default/google_default_credentials.cc',
'src/core/lib/security/credentials/iam/iam_credentials.cc',
+ 'src/core/lib/security/credentials/insecure/insecure_credentials.cc',
'src/core/lib/security/credentials/jwt/json_token.cc',
'src/core/lib/security/credentials/jwt/jwt_credentials.cc',
'src/core/lib/security/credentials/jwt/jwt_verifier.cc',
'src/core/lib/security/credentials/plugin/plugin_credentials.cc',
'src/core/lib/security/credentials/ssl/ssl_credentials.cc',
'src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc',
+ 'src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc',
'src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc',
'src/core/lib/security/credentials/tls/tls_credentials.cc',
'src/core/lib/security/credentials/xds/xds_credentials.cc',
'src/core/lib/security/security_connector/alts/alts_security_connector.cc',
'src/core/lib/security/security_connector/fake/fake_security_connector.cc',
+ 'src/core/lib/security/security_connector/insecure/insecure_security_connector.cc',
'src/core/lib/security/security_connector/load_system_roots_fallback.cc',
'src/core/lib/security/security_connector/load_system_roots_linux.cc',
'src/core/lib/security/security_connector/local/local_security_connector.cc',
'test/core/util/cmdline.cc',
'test/core/util/debugger_macros.cc',
'test/core/util/eval_args_mock_endpoint.cc',
- 'test/core/util/examine_stack.cc',
'test/core/util/fuzzer_util.cc',
'test/core/util/grpc_profiler.cc',
'test/core/util/histogram.cc',
'test/core/util/port_isolated_runtime_environment.cc',
'test/core/util/port_server_client.cc',
'test/core/util/reconnect_server.cc',
+ 'test/core/util/resolve_localhost_ip46.cc',
'test/core/util/slice_splitter.cc',
+ 'test/core/util/stack_tracer.cc',
'test/core/util/subprocess_posix.cc',
'test/core/util/subprocess_windows.cc',
'test/core/util/test_config.cc',
'test/core/util/cmdline.cc',
'test/core/util/debugger_macros.cc',
'test/core/util/eval_args_mock_endpoint.cc',
- 'test/core/util/examine_stack.cc',
'test/core/util/fuzzer_util.cc',
'test/core/util/grpc_profiler.cc',
'test/core/util/histogram.cc',
'test/core/util/port_isolated_runtime_environment.cc',
'test/core/util/port_server_client.cc',
'test/core/util/reconnect_server.cc',
+ 'test/core/util/resolve_localhost_ip46.cc',
'test/core/util/slice_splitter.cc',
+ 'test/core/util/stack_tracer.cc',
'test/core/util/subprocess_posix.cc',
'test/core/util/subprocess_windows.cc',
'test/core/util/test_config.cc',
'src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.c',
'src/core/ext/upb-generated/google/api/http.upb.c',
'src/core/ext/upb-generated/google/protobuf/any.upb.c',
- 'src/core/ext/upb-generated/google/protobuf/descriptor.upb.c',
'src/core/ext/upb-generated/google/protobuf/duration.upb.c',
'src/core/ext/upb-generated/google/protobuf/empty.upb.c',
'src/core/ext/upb-generated/google/protobuf/struct.upb.c',
'src/cpp/client/credentials_cc.cc',
'src/cpp/client/insecure_credentials.cc',
'src/cpp/client/secure_credentials.cc',
+ 'src/cpp/client/xds_credentials.cc',
'src/cpp/codegen/codegen_init.cc',
'src/cpp/common/alarm.cc',
'src/cpp/common/auth_property_iterator.cc',
'src/cpp/common/secure_auth_context.cc',
'src/cpp/common/secure_channel_arguments.cc',
'src/cpp/common/secure_create_auth_context.cc',
+ 'src/cpp/common/tls_certificate_provider.cc',
'src/cpp/common/tls_credentials_options.cc',
'src/cpp/common/tls_credentials_options_util.cc',
'src/cpp/common/validate_service_config.cc',
'type': 'static_library',
'dependencies': [
'gpr',
+ 'absl/flags:parse',
],
'sources': [
'test/cpp/util/test_config_cc.cc',
'gpr',
'address_sorting',
'upb',
+ 'absl/flags:flag',
],
'sources': [
'test/core/end2end/data/client_certs.cc',
'third_party/boringssl-with-bazel/src/crypto/thread_win.c',
'third_party/boringssl-with-bazel/src/crypto/trust_token/pmbtoken.c',
'third_party/boringssl-with-bazel/src/crypto/trust_token/trust_token.c',
+ 'third_party/boringssl-with-bazel/src/crypto/trust_token/voprf.c',
'third_party/boringssl-with-bazel/src/crypto/x509/a_digest.c',
'third_party/boringssl-with-bazel/src/crypto/x509/a_sign.c',
'third_party/boringssl-with-bazel/src/crypto/x509/a_strex.c',
'third_party/upb/upb/port.c',
'third_party/upb/upb/table.c',
'third_party/upb/upb/upb.c',
+ 'third_party/upb/upb/def.c',
+ 'third_party/upb/upb/reflection.c',
+ 'third_party/upb/upb/text_encode.c',
+ 'src/core/ext/upb-generated/google/protobuf/any.upb.c',
+ 'src/core/ext/upb-generated/google/protobuf/descriptor.upb.c',
+ 'src/core/ext/upb-generated/google/protobuf/duration.upb.c',
+ 'src/core/ext/upb-generated/google/protobuf/empty.upb.c',
+ 'src/core/ext/upb-generated/google/protobuf/struct.upb.c',
+ 'src/core/ext/upb-generated/google/protobuf/timestamp.upb.c',
+ 'src/core/ext/upb-generated/google/protobuf/wrappers.upb.c',
+ 'src/core/ext/upbdefs-generated/google/protobuf/any.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/google/protobuf/duration.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/google/protobuf/empty.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/google/protobuf/struct.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/google/protobuf/timestamp.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.c',
],
},
{
https://github.com/grpc/grpc/issues/15334 */
GRPCAPI int grpc_is_initialized(void);
-/** EXPERIMENTAL. Blocking shut down grpc library.
- This is only for wrapped language to use now. */
+/** DEPRECATED. Recommend to use grpc_shutdown only */
GRPCAPI void grpc_shutdown_blocking(void);
/** Return a string representing the current version of grpc */
* experimental purpose for now and subject to change. */
typedef struct grpc_tls_error_details grpc_tls_error_details;
-/** Config for TLS key materials. It is used for
- * experimental purpose for now and subject to change. */
-typedef struct grpc_tls_key_materials_config grpc_tls_key_materials_config;
-
-/** Config for TLS credential reload. It is used for
- * experimental purpose for now and subject to change. */
-typedef struct grpc_tls_credential_reload_config
- grpc_tls_credential_reload_config;
-
/** Config for TLS server authorization check. It is used for
* experimental purpose for now and subject to change. */
typedef struct grpc_tls_server_authorization_check_config
grpc_tls_server_authorization_check_config;
-/** TLS credentials options. It is used for
- * experimental purpose for now and subject to change. */
+/**
+ * A struct that can be specified by callers to configure underlying TLS
+ * behaviors. It is used for experimental purpose for now and subject to change.
+ */
typedef struct grpc_tls_credentials_options grpc_tls_credentials_options;
-/** Create an empty TLS credentials options. It is used for
- * experimental purpose for now and subject to change. */
+/**
+ * A struct provides ways to gain credential data that will be used in the TLS
+ * handshake. It is used for experimental purpose for now and subject to change.
+ */
+typedef struct grpc_tls_certificate_provider grpc_tls_certificate_provider;
+
+/**
+ * A struct that stores the credential data presented to the peer in handshake
+ * to show local identity. It is used for experimental purpose for now and
+ * subject to change.
+ */
+typedef struct grpc_tls_identity_pairs grpc_tls_identity_pairs;
+
+/**
+ * Creates a grpc_tls_identity_pairs that stores a list of identity credential
+ * data, including identity private key and identity certificate chain. It is
+ * used for experimental purpose for now and subject to change.
+ */
+GRPCAPI grpc_tls_identity_pairs* grpc_tls_identity_pairs_create();
+
+/**
+ * Adds a identity private key and a identity certificate chain to
+ * grpc_tls_identity_pairs. This function will make an internal copy of
+ * |private_key| and |cert_chain|. It is used for experimental purpose for now
+ * and subject to change.
+ */
+GRPCAPI void grpc_tls_identity_pairs_add_pair(grpc_tls_identity_pairs* pairs,
+ const char* private_key,
+ const char* cert_chain);
+
+/**
+ * Destroys a grpc_tls_identity_pairs object. If this object is passed to a
+ * provider initiation function, the ownership is transferred so this function
+ * doesn't need to be called. Otherwise the creator of the
+ * grpc_tls_identity_pairs object is responsible for its destruction. It is
+ * used for experimental purpose for now and subject to change.
+ */
+GRPCAPI void grpc_tls_identity_pairs_destroy(grpc_tls_identity_pairs* pairs);
+
+/**
+ * Creates a grpc_tls_certificate_provider that will load credential data from
+ * static string during initialization. This provider will always return the
+ * same cert data for all cert names.
+ * root_certificate and pem_key_cert_pairs can be nullptr, indicating the
+ * corresponding credential data is not needed.
+ * This function will make a copy of |root_certificate|.
+ * The ownership of |pem_key_cert_pairs| is transferred.
+ * It is used for experimental purpose for now and subject to change.
+ */
+GRPCAPI grpc_tls_certificate_provider*
+grpc_tls_certificate_provider_static_data_create(
+ const char* root_certificate, grpc_tls_identity_pairs* pem_key_cert_pairs);
+
+/**
+ * Releases a grpc_tls_certificate_provider object. The creator of the
+ * grpc_tls_certificate_provider object is responsible for its release. It is
+ * used for experimental purpose for now and subject to change.
+ */
+GRPCAPI void grpc_tls_certificate_provider_release(
+ grpc_tls_certificate_provider* provider);
+
+/**
+ * Creates an grpc_tls_credentials_options.
+ * It is used for experimental purpose for now and subject to change.
+ */
GRPCAPI grpc_tls_credentials_options* grpc_tls_credentials_options_create(void);
-/** Set grpc_ssl_client_certificate_request_type field in credentials options
- with the provided type. options should not be NULL.
- It returns 1 on success and 0 on failure. It is used for
- experimental purpose for now and subject to change. */
-GRPCAPI int grpc_tls_credentials_options_set_cert_request_type(
+/**
+ * Sets the options of whether to request and verify client certs. This should
+ * be called only on the server side. It returns 1 on success and 0 on failure.
+ * It is used for experimental purpose for now and subject to change.
+ */
+GRPCAPI void grpc_tls_credentials_options_set_cert_request_type(
grpc_tls_credentials_options* options,
grpc_ssl_client_certificate_request_type type);
-/** Set grpc_tls_server_verification_option field in credentials options
- with the provided server_verification_option. options should not be NULL.
- This should be called only on the client side.
- If grpc_tls_server_verification_option is not
- GRPC_TLS_SERVER_VERIFICATION, use of a customer server
- authorization check (grpc_tls_server_authorization_check_config)
- will be mandatory.
- It returns 1 on success and 0 on failure. It is used for
- experimental purpose for now and subject to change. */
-GRPCAPI int grpc_tls_credentials_options_set_server_verification_option(
+/**
+ * Sets the options of whether to choose certain checks, e.g. certificate check,
+ * hostname check, etc. This should be called only on the client side. If
+ * |server_verification_option| is not GRPC_TLS_SERVER_VERIFICATION, use of a
+ * custom authorization check (grpc_tls_server_authorization_check_config) is
+ * mandatory. It returns 1 on success and 0 on failure. It is used for
+ * experimental purpose for now and subject to change.
+ */
+GRPCAPI void grpc_tls_credentials_options_set_server_verification_option(
grpc_tls_credentials_options* options,
grpc_tls_server_verification_option server_verification_option);
-/** Set grpc_tls_key_materials_config field in credentials options
- with the provided config struct whose ownership is transferred.
- Both parameters should not be NULL.
- It returns 1 on success and 0 on failure. It is used for
- experimental purpose for now and subject to change. */
-GRPCAPI int grpc_tls_credentials_options_set_key_materials_config(
- grpc_tls_credentials_options* options,
- grpc_tls_key_materials_config* config);
-
-/** Set grpc_tls_credential_reload_config field in credentials options
- with the provided config struct whose ownership is transferred.
- Both parameters should not be NULL.
- It returns 1 on success and 0 on failure. It is used for
- experimental purpose for now and subject to change. */
-GRPCAPI int grpc_tls_credentials_options_set_credential_reload_config(
- grpc_tls_credentials_options* options,
- grpc_tls_credential_reload_config* config);
-
-/** Set grpc_tls_server_authorization_check_config field in credentials options
- with the provided config struct whose ownership is transferred.
- Both parameters should not be NULL.
- It returns 1 on success and 0 on failure. It is used for
- experimental purpose for now and subject to change. */
-GRPCAPI int grpc_tls_credentials_options_set_server_authorization_check_config(
+/**
+ * Sets the credential provider in the options.
+ * The |options| will implicitly take a new ref to the |provider|.
+ * It returns 1 on success and 0 on failure.
+ * It is used for experimental purpose for now and subject to change.
+ */
+GRPCAPI void grpc_tls_credentials_options_set_certificate_provider(
grpc_tls_credentials_options* options,
- grpc_tls_server_authorization_check_config* config);
+ grpc_tls_certificate_provider* provider);
-/** --- TLS key materials config. ---
- It is used for experimental purpose for now and subject to change. */
+/**
+ * If set, gRPC stack will keep watching the root certificates with
+ * name |root_cert_name|. It returns 1 on success and 0 on failure. It is used
+ * for experimental purpose for now and subject to change.
+ */
+GRPCAPI void grpc_tls_credentials_options_watch_root_certs(
+ grpc_tls_credentials_options* options);
-/** Create an empty grpc_tls_key_materials_config instance.
- * It is used for experimental purpose for now and subject to change. */
-GRPCAPI grpc_tls_key_materials_config* grpc_tls_key_materials_config_create(
- void);
-
-/** Set grpc_tls_key_materials_config instance with provided a TLS certificate.
- It's valid for the caller to provide nullptr pem_root_certs, in which case
- the gRPC-provided root cert will be used. pem_key_cert_pairs should not be
- NULL.
- The ownerships of |pem_root_certs| and |pem_key_cert_pairs| remain with the
- caller.
- It returns 1 on success and 0 on failure. It is used for experimental
- purpose for now and subject to change.
+/**
+ * Sets the name of the root certificates being watched.
+ * If not set, We will use a default empty string as the root certificate name.
+ * It is used for experimental purpose for now and subject to change.
*/
-GRPCAPI int grpc_tls_key_materials_config_set_key_materials(
- grpc_tls_key_materials_config* config, const char* pem_root_certs,
- const grpc_ssl_pem_key_cert_pair** pem_key_cert_pairs,
- size_t num_key_cert_pairs);
+GRPCAPI void grpc_tls_credentials_options_set_root_cert_name(
+ grpc_tls_credentials_options* options, const char* root_cert_name);
-/** Set grpc_tls_key_materials_config instance with a provided version number,
- which is used to keep track of the version of key materials.
- It returns 1 on success and 0 on failure. It is used for
- experimental purpose for now and subject to change.
+/**
+ * If set, gRPC stack will keep watching the identity key-cert pairs
+ * with name |identity_cert_name|. It returns 1 on success and 0 on failure. It
+ * is used for experimental purpose for now and subject to change.
*/
-GRPCAPI int grpc_tls_key_materials_config_set_version(
- grpc_tls_key_materials_config* config, int version);
+GRPCAPI void grpc_tls_credentials_options_watch_identity_key_cert_pairs(
+ grpc_tls_credentials_options* options);
-/** Get the version number of a grpc_tls_key_materials_config instance.
- It returns the version number on success and -1 on failure.
- It is used for experimental purpose for now and subject to change.
+/**
+ * Sets the name of the identity certificates being watched.
+ * If not set, We will use a default empty string as the identity certificate
+ * name. It is used for experimental purpose for now and subject to change.
*/
-GRPCAPI int grpc_tls_key_materials_config_get_version(
- grpc_tls_key_materials_config* config);
-
-/** --- TLS credential reload config. ---
- It is used for experimental purpose for now and subject to change.*/
-
-typedef struct grpc_tls_credential_reload_arg grpc_tls_credential_reload_arg;
-
-/** A callback function provided by gRPC to handle the result of credential
- reload. It is used when schedule API is implemented asynchronously and
- serves to bring the control back to grpc C core. It is used for
- experimental purpose for now and subject to change. */
-typedef void (*grpc_tls_on_credential_reload_done_cb)(
- grpc_tls_credential_reload_arg* arg);
-
-/** A struct containing all information necessary to schedule/cancel a
- credential reload request.
- - cb and cb_user_data represent a gRPC-provided
- callback and an argument passed to it.
- - key_materials_config is an in/output parameter containing currently
- used/newly reloaded credentials. If credential reload does not result in
- a new credential, key_materials_config should not be modified. The same
- key_materials_config object can be updated if new key materials is
- available.
- - status and error_details are used to hold information about
- errors occurred when a credential reload request is scheduled/cancelled.
- - config is a pointer to the unique grpc_tls_credential_reload_config
- instance that this argument corresponds to.
- - context is a pointer to a wrapped language implementation of this
- grpc_tls_credential_reload_arg instance.
- - destroy_context is a pointer to a caller-provided method that cleans
- up any data associated with the context pointer.
- It is used for experimental purposes for now and subject to change.
-*/
-struct grpc_tls_credential_reload_arg {
- grpc_tls_on_credential_reload_done_cb cb;
- void* cb_user_data;
- grpc_tls_key_materials_config* key_materials_config;
- grpc_ssl_certificate_config_reload_status status;
- grpc_tls_error_details* error_details;
- grpc_tls_credential_reload_config* config;
- void* context;
- void (*destroy_context)(void* ctx);
-};
+GRPCAPI void grpc_tls_credentials_options_set_identity_cert_name(
+ grpc_tls_credentials_options* options, const char* identity_cert_name);
-/** Create a grpc_tls_credential_reload_config instance.
- - config_user_data is config-specific, read-only user data
- that works for all channels created with a credential using the config.
- - schedule is a pointer to an application-provided callback used to invoke
- credential reload API. The implementation of this method has to be
- non-blocking, but can be performed synchronously or asynchronously.
- 1) If processing occurs synchronously, it populates
- arg->key_materials_config, arg->status, and arg->error_details
- and returns zero.
- 2) If processing occurs asynchronously, it returns a non-zero value.
- The application then invokes arg->cb when processing is completed. Note
- that arg->cb cannot be invoked before schedule API returns.
- - cancel is a pointer to an application-provided callback used to cancel
- a credential reload request scheduled via an asynchronous schedule API.
- arg is used to pinpoint an exact reloading request to be cancelled.
- The operation may not have any effect if the request has already been
- processed.
- - destruct is a pointer to an application-provided callback used to clean up
- any data associated with the config.
- It is used for experimental purpose for now and subject to change.
-*/
-GRPCAPI grpc_tls_credential_reload_config*
-grpc_tls_credential_reload_config_create(
- const void* config_user_data,
- int (*schedule)(void* config_user_data,
- grpc_tls_credential_reload_arg* arg),
- void (*cancel)(void* config_user_data, grpc_tls_credential_reload_arg* arg),
- void (*destruct)(void* config_user_data));
+/**
+ * Sets the configuration for a custom authorization check performed at the end
+ * of the handshake. The |options| will implicitly take a new ref to the
+ * |config|. It returns 1 on success and 0 on failure. It is used for
+ * experimental purpose for now and subject to change.
+ */
+GRPCAPI void grpc_tls_credentials_options_set_server_authorization_check_config(
+ grpc_tls_credentials_options* options,
+ grpc_tls_server_authorization_check_config* config);
/** --- TLS server authorization check config. ---
* It is used for experimental purpose for now and subject to change. */
void (*destruct)(void* config_user_data));
/**
- * This method creates a TLS channel credential object.
- * It takes ownership of the options parameter. The security level
- * of the resulting connection is GRPC_PRIVACY_AND_INTEGRITY.
- *
- * - options: grpc TLS credentials options instance.
- *
- * It returns the created credential object.
- *
- * It is used for experimental purpose for now and subject
- * to change.
+ * Releases a grpc_tls_server_authorization_check_config object. The creator of
+ * the grpc_tls_server_authorization_check_config object is responsible for its
+ * release. It is used for experimental purpose for now and subject to change.
*/
+GRPCAPI void grpc_tls_server_authorization_check_config_release(
+ grpc_tls_server_authorization_check_config* config);
+/**
+ * Creates a TLS channel credential object based on the
+ * grpc_tls_credentials_options specified by callers. The
+ * grpc_channel_credentials will take the ownership of the |options|. The
+ * security level of the resulting connection is GRPC_PRIVACY_AND_INTEGRITY. It
+ * is used for experimental purpose for now and subject to change.
+ */
grpc_channel_credentials* grpc_tls_credentials_create(
grpc_tls_credentials_options* options);
/**
- * This method creates a TLS server credential object.
- * It takes ownership of the options parameter.
- *
- * - options: grpc TLS credentials options instance.
- *
- * It returns the created credential object.
- *
- * It is used for experimental purpose for now and subject
- * to change.
+ * Creates a TLS server credential object based on the
+ * grpc_tls_credentials_options specified by callers. The
+ * grpc_server_credentials will take the ownership of the |options|. It
+ * is used for experimental purpose for now and subject to change.
*/
grpc_server_credentials* grpc_tls_server_credentials_create(
grpc_tls_credentials_options* options);
/**
* EXPERIMENTAL API - Subject to change
*
+ * This method creates an insecure channel credentials object.
+ */
+grpc_channel_credentials* grpc_insecure_credentials_create();
+
+/**
+ * EXPERIMENTAL API - Subject to change
+ *
* This method creates an XDS channel credentials object.
*
* Creating a channel with credentials of this type indicates that an xDS
#define GRPC_ARG_HTTP2_MAX_FRAME_SIZE "grpc.http2.max_frame_size"
/** Should BDP probing be performed? */
#define GRPC_ARG_HTTP2_BDP_PROBE "grpc.http2.bdp_probe"
-/** Minimum time between sending successive ping frames without receiving any
- data/header frame, Int valued, milliseconds. */
+/** (DEPRECATED) Does not have any effect.
+ Earlier, this arg configured the minimum time between successive ping frames
+ without receiving any data/header frame, Int valued, milliseconds. This put
+ unnecessary constraints on the configuration of keepalive pings,
+ requiring users to set this channel arg along with
+ GRPC_ARG_KEEPALIVE_TIME_MS. This arg also limited the activity of the other
+ source of pings in gRPC Core - BDP pings, but BDP pings are only sent when
+ there is receive-side data activity, making this arg unuseful for BDP pings
+ too. */
#define GRPC_ARG_HTTP2_MIN_SENT_PING_INTERVAL_WITHOUT_DATA_MS \
"grpc.http2.min_time_between_pings_ms"
/** Minimum allowed time between a server receiving successive ping frames
#define GPR_WINDOWS_TMPFILE
#define GPR_WINDOWS_LOG
#define GPR_WINDOWS_CRASH_HANDLER 1
+#define GPR_WINDOWS_STAT
#define GPR_WINDOWS_STRING
#define GPR_WINDOWS_TIME
#endif
#ifdef __GNUC__
#define GPR_GCC_ATOMIC 1
-#define GPR_GCC_TLS 1
#else
#define GPR_WINDOWS_ATOMIC 1
-#define GPR_MSVC_TLS 1
#endif
+#define GPR_STDCPP_TLS 1
#elif defined(ANDROID) || defined(__ANDROID__)
#define GPR_PLATFORM_STRING "android"
#define GPR_ANDROID 1
#endif /* _LP64 */
#define GPR_CPU_POSIX 1
#define GPR_GCC_SYNC 1
-#define GPR_GCC_TLS 1
+#define GPR_STDCPP_TLS 1
#define GPR_POSIX_ENV 1
#define GPR_POSIX_TMPFILE 1
+#define GPR_POSIX_STAT 1
#define GPR_ANDROID_LOG 1
#define GPR_POSIX_STRING 1
#define GPR_POSIX_SUBPROCESS 1
#include <features.h>
#define GPR_CPU_LINUX 1
#define GPR_GCC_ATOMIC 1
-#define GPR_GCC_TLS 1
+#define GPR_STDCPP_TLS 1
#define GPR_LINUX 1
#define GPR_LINUX_LOG
#define GPR_SUPPORT_CHANNELS_FROM_FD 1
#define GPR_LINUX_ENV 1
#define GPR_POSIX_TMPFILE 1
+#define GPR_POSIX_STAT 1
#define GPR_POSIX_STRING 1
#define GPR_POSIX_SUBPROCESS 1
#define GPR_POSIX_SYNC 1
#if TARGET_OS_IPHONE
#define GPR_PLATFORM_STRING "ios"
#define GPR_CPU_IPHONE 1
-#define GPR_PTHREAD_TLS 1
#define GRPC_CFSTREAM 1
/* the c-ares resolver isn't safe to enable on iOS */
#define GRPC_ARES 0
#else /* TARGET_OS_IPHONE */
#define GPR_PLATFORM_STRING "osx"
-#ifdef __MAC_OS_X_VERSION_MIN_REQUIRED
-#if __MAC_OS_X_VERSION_MIN_REQUIRED < __MAC_10_7
-#define GPR_CPU_IPHONE 1
-#define GPR_PTHREAD_TLS 1
-#else /* __MAC_OS_X_VERSION_MIN_REQUIRED < __MAC_10_7 */
#define GPR_CPU_POSIX 1
-/* TODO(vjpai): there is a reported issue in bazel build for Mac where __thread
- in a header is currently not working (bazelbuild/bazel#4341). Remove
- the following conditional and use GPR_GCC_TLS when that is fixed */
-#ifndef GRPC_BAZEL_BUILD
-#define GPR_GCC_TLS 1
-#else /* GRPC_BAZEL_BUILD */
-#define GPR_PTHREAD_TLS 1
-#endif /* GRPC_BAZEL_BUILD */
-#define GPR_APPLE_PTHREAD_NAME 1
+#define GPR_POSIX_CRASH_HANDLER 1
#endif
-#else /* __MAC_OS_X_VERSION_MIN_REQUIRED */
-#define GPR_CPU_POSIX 1
-/* TODO(vjpai): Remove the following conditional and use only GPR_GCC_TLS
- when bazelbuild/bazel#4341 is fixed */
-#ifndef GRPC_BAZEL_BUILD
-#define GPR_GCC_TLS 1
-#else /* GRPC_BAZEL_BUILD */
-#define GPR_PTHREAD_TLS 1
-#endif /* GRPC_BAZEL_BUILD */
+#ifdef __has_feature
+#if __has_feature(cxx_thread_local)
+#define GPR_STDCPP_TLS 1
#endif
-#define GPR_POSIX_CRASH_HANDLER 1
+#endif
+#ifndef GPR_STDCPP_TLS
+#define GPR_PTHREAD_TLS 1
#endif
#define GPR_APPLE 1
#define GPR_GCC_ATOMIC 1
#define GPR_POSIX_LOG 1
#define GPR_POSIX_ENV 1
#define GPR_POSIX_TMPFILE 1
+#define GPR_POSIX_STAT 1
#define GPR_POSIX_STRING 1
#define GPR_POSIX_SUBPROCESS 1
#define GPR_POSIX_SYNC 1
#define GPR_POSIX_LOG 1
#define GPR_POSIX_ENV 1
#define GPR_POSIX_TMPFILE 1
+#define GPR_POSIX_STAT 1
#define GPR_POSIX_STRING 1
#define GPR_POSIX_SUBPROCESS 1
#define GPR_POSIX_SYNC 1
#define GPR_POSIX_LOG 1
#define GPR_POSIX_ENV 1
#define GPR_POSIX_TMPFILE 1
+#define GPR_POSIX_STAT 1
#define GPR_POSIX_STRING 1
#define GPR_POSIX_SUBPROCESS 1
#define GPR_POSIX_SYNC 1
#define GPR_POSIX_LOG 1
#define GPR_POSIX_ENV 1
#define GPR_POSIX_TMPFILE 1
+#define GPR_POSIX_STAT 1
#define GPR_POSIX_STRING 1
#define GPR_POSIX_SUBPROCESS 1
#define GPR_POSIX_SYNC 1
#define GPR_POSIX_LOG 1
#define GPR_POSIX_ENV 1
#define GPR_POSIX_TMPFILE 1
+#define GPR_POSIX_STAT 1
#define GPR_POSIX_STRING 1
#define GPR_POSIX_SUBPROCESS 1
#define GPR_POSIX_SYNC 1
#define GPR_POSIX_LOG 1
#define GPR_POSIX_ENV 1
#define GPR_POSIX_TMPFILE 1
+#define GPR_POSIX_STAT 1
#define GPR_POSIX_STRING 1
#define GPR_POSIX_SUBPROCESS 1
#define GPR_POSIX_SYNC 1
#define GPR_POSIX_SYNC 1
#define GPR_POSIX_ENV 1
#define GPR_POSIX_TMPFILE 1
+#define GPR_POSIX_STAT 1
#define GPR_POSIX_SUBPROCESS 1
#define GPR_POSIX_SYNC 1
#define GPR_POSIX_STRING 1
#endif
#endif
-/*
- * There are platforms for which TLS should not be used even though the
- * compiler makes it seem like it's supported (Android NDK < r12b for example).
- * This is primarily because of linker problems and toolchain misconfiguration:
- * TLS isn't supported until NDK r12b per
- * https://developer.android.com/ndk/downloads/revision_history.html
- * TLS also does not work with Android NDK if GCC is being used as the compiler
- * instead of Clang.
- * Since NDK r16, `__NDK_MAJOR__` and `__NDK_MINOR__` are defined in
- * <android/ndk-version.h>. For NDK < r16, users should define these macros,
- * e.g. `-D__NDK_MAJOR__=11 -D__NKD_MINOR__=0` for NDK r11. */
-#if defined(__ANDROID__) && defined(GPR_GCC_TLS)
-#if __has_include(<android/ndk-version.h>)
-#include <android/ndk-version.h>
-#endif /* __has_include(<android/ndk-version.h>) */
-#if (defined(__clang__) && defined(__NDK_MAJOR__) && defined(__NDK_MINOR__) && \
- ((__NDK_MAJOR__ < 12) || \
- ((__NDK_MAJOR__ == 12) && (__NDK_MINOR__ < 1)))) || \
- (defined(__GNUC__) && !defined(__clang__))
-#undef GPR_GCC_TLS
-#define GPR_PTHREAD_TLS 1
-#endif
-#endif /*defined(__ANDROID__) && defined(GPR_GCC_TLS) */
-
#if defined(__has_include)
#if __has_include(<atomic>)
#define GRPC_HAS_CXX11_ATOMIC
#endif
#if defined(GPR_MSVC_TLS) + defined(GPR_GCC_TLS) + defined(GPR_PTHREAD_TLS) + \
- defined(GPR_CUSTOM_TLS) != \
+ defined(GPR_STDCPP_TLS) + defined(GPR_CUSTOM_TLS) != \
1
-#error Must define exactly one of GPR_MSVC_TLS, GPR_GCC_TLS, GPR_PTHREAD_TLS, GPR_CUSTOM_TLS
+#error Must define exactly one of GPR_MSVC_TLS, GPR_GCC_TLS, GPR_PTHREAD_TLS, GPR_STDCPP_TLS, GPR_CUSTOM_TLS
#endif
/* maximum alignment needed for any type on this platform, rounded up to a
std::shared_ptr<grpc::Channel>
CreateCustomInsecureChannelWithInterceptorsFromFd(
const std::string& target, int fd, const grpc::ChannelArguments& args,
- std::unique_ptr<std::vector<
- std::unique_ptr<grpc::experimental::ClientInterceptorFactoryInterface>>>
+ std::vector<
+ std::unique_ptr<grpc::experimental::ClientInterceptorFactoryInterface>>
interceptor_creators);
} // namespace experimental
#ifndef GRPCPP_EXT_CHANNELZ_SERVICE_PLUGIN_H
#define GRPCPP_EXT_CHANNELZ_SERVICE_PLUGIN_H
-#include <grpcpp/ext/channelz_service_plugin_impl.h>
+#include <grpc/support/port_platform.h>
+
+#include <grpcpp/impl/server_builder_plugin.h>
+#include <grpcpp/impl/server_initializer.h>
+#include <grpcpp/support/config.h>
namespace grpc {
namespace channelz {
namespace experimental {
-static inline void InitChannelzService() {
- ::grpc_impl::channelz::experimental::InitChannelzService();
-}
+/// Add channelz server plugin to \a ServerBuilder. This function should
+/// be called at static initialization time. This service is experimental
+/// for now. Track progress in https://github.com/grpc/grpc/issues/15988.
+void InitChannelzService();
} // namespace experimental
} // namespace channelz
+++ /dev/null
-/*
- *
- * Copyright 2018 gRPC authors.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-#ifndef GRPCPP_EXT_CHANNELZ_SERVICE_PLUGIN_IMPL_H
-#define GRPCPP_EXT_CHANNELZ_SERVICE_PLUGIN_IMPL_H
-
-#include <grpc/support/port_platform.h>
-
-#include <grpcpp/impl/server_builder_plugin.h>
-#include <grpcpp/impl/server_initializer.h>
-#include <grpcpp/support/config.h>
-
-namespace grpc_impl {
-namespace channelz {
-namespace experimental {
-
-/// Add channelz server plugin to \a ServerBuilder. This function should
-/// be called at static initialization time. This service is experimental
-/// for now. Track progress in https://github.com/grpc/grpc/issues/15988.
-void InitChannelzService();
-
-} // namespace experimental
-} // namespace channelz
-} // namespace grpc_impl
-
-#endif // GRPCPP_EXT_CHANNELZ_SERVICE_PLUGIN_IMPL_H
ClientContext* context, const std::string& method,
const RequestType& request, ::grpc::CompletionQueue* cq) {
return std::unique_ptr<ClientAsyncResponseReader<ResponseType>>(
- internal::ClientAsyncResponseReaderFactory<ResponseType>::Create(
+ internal::ClientAsyncResponseReaderHelper::Create<ResponseType>(
channel_.get(), cq,
grpc::internal::RpcMethod(method.c_str(),
grpc::internal::RpcMethod::NORMAL_RPC),
- context, request, false));
+ context, request));
}
/// DEPRECATED for multi-threaded use
#define GRPCPP_IMPL_CODEGEN_ASYNC_UNARY_CALL_H
#include <grpcpp/impl/codegen/call.h>
+#include <grpcpp/impl/codegen/call_op_set.h>
+#include <grpcpp/impl/codegen/call_op_set_interface.h>
#include <grpcpp/impl/codegen/channel_interface.h>
#include <grpcpp/impl/codegen/client_context.h>
#include <grpcpp/impl/codegen/server_context.h>
namespace grpc {
+// Forward declaration for use in Helper class
+template <class R>
+class ClientAsyncResponseReader;
+
/// An interface relevant for async client side unary RPCs (which send
/// one request message to a server and receive one response message).
template <class R>
};
namespace internal {
-template <class R>
-class ClientAsyncResponseReaderFactory {
+
+class ClientAsyncResponseReaderHelper {
public:
/// Start a call and write the request out if \a start is set.
/// \a tag will be notified on \a cq when the call has been started (i.e.
/// If \a start is not set, the actual call must be initiated by StartCall
/// Note that \a context will be used to fill in custom initial metadata
/// used to send to the server when starting the call.
+ ///
+ /// Optionally pass in a base class for request and response types so that the
+ /// internal functions and structs can be templated based on that, allowing
+ /// reuse across RPCs (e.g., MessageLite for protobuf). Since constructors
+ /// can't have an explicit template parameter, the last argument is an
+ /// extraneous parameter just to provide the needed type information.
+ template <class R, class W, class BaseR = R, class BaseW = W>
+ static ClientAsyncResponseReader<R>* Create(
+ ::grpc::ChannelInterface* channel, ::grpc::CompletionQueue* cq,
+ const ::grpc::internal::RpcMethod& method, ::grpc::ClientContext* context,
+ const W& request) /* __attribute__((noinline)) */ {
+ ::grpc::internal::Call call = channel->CreateCall(method, context, cq);
+ ClientAsyncResponseReader<R>* result =
+ new (::grpc::g_core_codegen_interface->grpc_call_arena_alloc(
+ call.call(), sizeof(ClientAsyncResponseReader<R>)))
+ ClientAsyncResponseReader<R>(call, context);
+ SetupRequest<BaseR, BaseW>(
+ call.call(), &result->single_buf_, &result->read_initial_metadata_,
+ &result->finish_, static_cast<const BaseW&>(request));
+
+ return result;
+ }
+
+ // Various helper functions to reduce templating use
+
+ template <class R, class W>
+ static void SetupRequest(
+ grpc_call* call,
+ ::grpc::internal::CallOpSendInitialMetadata** single_buf_ptr,
+ std::function<void(ClientContext*, internal::Call*,
+ internal::CallOpSendInitialMetadata*, void*)>*
+ read_initial_metadata,
+ std::function<
+ void(ClientContext*, internal::Call*, bool initial_metadata_read,
+ internal::CallOpSendInitialMetadata*,
+ internal::CallOpSetInterface**, void*, Status*, void*)>* finish,
+ const W& request) {
+ using SingleBufType =
+ ::grpc::internal::CallOpSet<::grpc::internal::CallOpSendInitialMetadata,
+ ::grpc::internal::CallOpSendMessage,
+ ::grpc::internal::CallOpClientSendClose,
+ ::grpc::internal::CallOpRecvInitialMetadata,
+ ::grpc::internal::CallOpRecvMessage<R>,
+ ::grpc::internal::CallOpClientRecvStatus>;
+ SingleBufType* single_buf =
+ new (::grpc::g_core_codegen_interface->grpc_call_arena_alloc(
+ call, sizeof(SingleBufType))) SingleBufType;
+ *single_buf_ptr = single_buf;
+ // TODO(ctiller): don't assert
+ GPR_CODEGEN_ASSERT(single_buf->SendMessage(request).ok());
+ single_buf->ClientSendClose();
+
+ // The purpose of the following functions is to type-erase the actual
+ // templated type of the CallOpSet being used by hiding that type inside the
+ // function definition rather than specifying it as an argument of the
+ // function or a member of the class. The type-erased CallOpSet will get
+ // static_cast'ed back to the real type so that it can be used properly.
+ *read_initial_metadata =
+ [](ClientContext* context, internal::Call* call,
+ internal::CallOpSendInitialMetadata* single_buf_view, void* tag) {
+ auto* single_buf = static_cast<SingleBufType*>(single_buf_view);
+ single_buf->set_output_tag(tag);
+ single_buf->RecvInitialMetadata(context);
+ call->PerformOps(single_buf);
+ };
+
+ // Note that this function goes one step further than the previous one
+ // because it type-erases the message being written down to a void*. This
+ // will be static-cast'ed back to the class specified here by hiding that
+ // class information inside the function definition. Note that this feature
+ // expects the class being specified here for R to be a base-class of the
+ // "real" R without any multiple-inheritance (as applies in protbuf wrt
+ // MessageLite)
+ *finish = [](ClientContext* context, internal::Call* call,
+ bool initial_metadata_read,
+ internal::CallOpSendInitialMetadata* single_buf_view,
+ internal::CallOpSetInterface** finish_buf_ptr, void* msg,
+ Status* status, void* tag) {
+ if (initial_metadata_read) {
+ using FinishBufType = ::grpc::internal::CallOpSet<
+ ::grpc::internal::CallOpRecvMessage<R>,
+ ::grpc::internal::CallOpClientRecvStatus>;
+ FinishBufType* finish_buf =
+ new (::grpc::g_core_codegen_interface->grpc_call_arena_alloc(
+ call->call(), sizeof(FinishBufType))) FinishBufType;
+ *finish_buf_ptr = finish_buf;
+ finish_buf->set_output_tag(tag);
+ finish_buf->RecvMessage(static_cast<R*>(msg));
+ finish_buf->AllowNoMessage();
+ finish_buf->ClientRecvStatus(context, status);
+ call->PerformOps(finish_buf);
+ } else {
+ auto* single_buf = static_cast<SingleBufType*>(single_buf_view);
+ single_buf->set_output_tag(tag);
+ single_buf->RecvInitialMetadata(context);
+ single_buf->RecvMessage(static_cast<R*>(msg));
+ single_buf->AllowNoMessage();
+ single_buf->ClientRecvStatus(context, status);
+ call->PerformOps(single_buf);
+ }
+ };
+ }
+
+ static void StartCall(
+ ::grpc::ClientContext* context,
+ ::grpc::internal::CallOpSendInitialMetadata* single_buf) {
+ single_buf->SendInitialMetadata(&context->send_initial_metadata_,
+ context->initial_metadata_flags());
+ }
+};
+
+// TODO(vjpai): This templated factory is deprecated and will be replaced by
+//. the non-templated helper as soon as possible.
+template <class R>
+class ClientAsyncResponseReaderFactory {
+ public:
template <class W>
static ClientAsyncResponseReader<R>* Create(
::grpc::ChannelInterface* channel, ::grpc::CompletionQueue* cq,
const ::grpc::internal::RpcMethod& method, ::grpc::ClientContext* context,
const W& request, bool start) {
- ::grpc::internal::Call call = channel->CreateCall(method, context, cq);
- return new (::grpc::g_core_codegen_interface->grpc_call_arena_alloc(
- call.call(), sizeof(ClientAsyncResponseReader<R>)))
- ClientAsyncResponseReader<R>(call, context, request, start);
+ auto* result = ClientAsyncResponseReaderHelper::Create<R>(
+ channel, cq, method, context, request);
+ if (start) {
+ result->StartCall();
+ }
+ return result;
}
};
+
} // namespace internal
/// Async API for client-side unary RPCs, where the message response
static void operator delete(void*, void*) { GPR_CODEGEN_ASSERT(false); }
void StartCall() override {
- GPR_CODEGEN_ASSERT(!started_);
+ GPR_CODEGEN_DEBUG_ASSERT(!started_);
started_ = true;
- StartCallInternal();
+ internal::ClientAsyncResponseReaderHelper::StartCall(context_, single_buf_);
}
/// See \a ClientAsyncResponseReaderInterface::ReadInitialMetadata for
/// - the \a ClientContext associated with this call is updated with
/// possible initial and trailing metadata sent from the server.
void ReadInitialMetadata(void* tag) override {
- GPR_CODEGEN_ASSERT(started_);
- GPR_CODEGEN_ASSERT(!context_->initial_metadata_received_);
-
- single_buf.set_output_tag(tag);
- single_buf.RecvInitialMetadata(context_);
- call_.PerformOps(&single_buf);
+ GPR_CODEGEN_DEBUG_ASSERT(started_);
+ GPR_CODEGEN_DEBUG_ASSERT(!context_->initial_metadata_received_);
+ read_initial_metadata_(context_, &call_, single_buf_, tag);
initial_metadata_read_ = true;
}
/// - the \a ClientContext associated with this call is updated with
/// possible initial and trailing metadata sent from the server.
void Finish(R* msg, ::grpc::Status* status, void* tag) override {
- GPR_CODEGEN_ASSERT(started_);
- if (initial_metadata_read_) {
- finish_buf.set_output_tag(tag);
- finish_buf.RecvMessage(msg);
- finish_buf.AllowNoMessage();
- finish_buf.ClientRecvStatus(context_, status);
- call_.PerformOps(&finish_buf);
- } else {
- single_buf.set_output_tag(tag);
- single_buf.RecvInitialMetadata(context_);
- single_buf.RecvMessage(msg);
- single_buf.AllowNoMessage();
- single_buf.ClientRecvStatus(context_, status);
- call_.PerformOps(&single_buf);
- }
+ GPR_CODEGEN_DEBUG_ASSERT(started_);
+ finish_(context_, &call_, initial_metadata_read_, single_buf_, &finish_buf_,
+ static_cast<void*>(msg), status, tag);
}
private:
- friend class internal::ClientAsyncResponseReaderFactory<R>;
+ friend class internal::ClientAsyncResponseReaderHelper;
::grpc::ClientContext* const context_;
::grpc::internal::Call call_;
- bool started_;
+ bool started_ = false;
bool initial_metadata_read_ = false;
- template <class W>
ClientAsyncResponseReader(::grpc::internal::Call call,
- ::grpc::ClientContext* context, const W& request,
- bool start)
- : context_(context), call_(call), started_(start) {
- // Bind the metadata at time of StartCallInternal but set up the rest here
- // TODO(ctiller): don't assert
- GPR_CODEGEN_ASSERT(single_buf.SendMessage(request).ok());
- single_buf.ClientSendClose();
- if (start) StartCallInternal();
- }
-
- void StartCallInternal() {
- single_buf.SendInitialMetadata(&context_->send_initial_metadata_,
- context_->initial_metadata_flags());
- }
+ ::grpc::ClientContext* context)
+ : context_(context), call_(call) {}
// disable operator new
static void* operator new(std::size_t size);
static void* operator new(std::size_t /*size*/, void* p) { return p; }
- ::grpc::internal::CallOpSet<::grpc::internal::CallOpSendInitialMetadata,
- ::grpc::internal::CallOpSendMessage,
- ::grpc::internal::CallOpClientSendClose,
- ::grpc::internal::CallOpRecvInitialMetadata,
- ::grpc::internal::CallOpRecvMessage<R>,
- ::grpc::internal::CallOpClientRecvStatus>
- single_buf;
- ::grpc::internal::CallOpSet<::grpc::internal::CallOpRecvMessage<R>,
- ::grpc::internal::CallOpClientRecvStatus>
- finish_buf;
+ internal::CallOpSendInitialMetadata* single_buf_;
+ internal::CallOpSetInterface* finish_buf_ = nullptr;
+ std::function<void(ClientContext*, internal::Call*,
+ internal::CallOpSendInitialMetadata*, void*)>
+ read_initial_metadata_;
+ std::function<void(ClientContext*, internal::Call*,
+ bool initial_metadata_read,
+ internal::CallOpSendInitialMetadata*,
+ internal::CallOpSetInterface**, void*, Status*, void*)>
+ finish_;
};
/// Async server-side API for handling unary calls, where the single
class CallbackUnaryHandler;
template <class RequestType, class ResponseType>
class CallbackServerStreamingHandler;
-template <class ServiceType, class RequestType, class ResponseType>
-class RpcMethodHandler;
+template <class RequestType>
+void* UnaryDeserializeHelper(grpc_call*, grpc_byte_buffer*, ::grpc::Status*,
+ RequestType*);
template <class ServiceType, class RequestType, class ResponseType>
class ServerStreamingHandler;
template <::grpc::StatusCode code>
template <class R>
friend class internal::CallOpRecvMessage;
friend class internal::CallOpGenericRecvMessage;
- template <class ServiceType, class RequestType, class ResponseType>
- friend class internal::RpcMethodHandler;
+ template <class RequestType>
+ friend void* internal::UnaryDeserializeHelper(grpc_call*, grpc_byte_buffer*,
+ ::grpc::Status*, RequestType*);
template <class ServiceType, class RequestType, class ResponseType>
friend class internal::ServerStreamingHandler;
template <class RequestType, class ResponseType>
class WriteOptions {
public:
WriteOptions() : flags_(0), last_message_(false) {}
- WriteOptions(const WriteOptions& other)
- : flags_(other.flags_), last_message_(other.last_message_) {}
-
- /// Default assignment operator
- WriteOptions& operator=(const WriteOptions& other) = default;
/// Clear all flags.
inline void Clear() { flags_ = 0; }
}
void FinishOp(bool* status) {
if (msg_ == nullptr && !send_buf_.Valid()) return;
+ send_buf_.Clear();
if (hijacked_ && failed_send_) {
// Hijacking interceptor failed this Op
*status = false;
template <class M>
Status CallOpSendMessage::SendMessage(const M& message, WriteOptions options) {
write_options_ = options;
+ // Serialize immediately since we do not have access to the message pointer
+ bool own_buf;
+ // TODO(vjpai): Remove the void below when possible
+ // The void in the template parameter below should not be needed
+ // (since it should be implicit) but is needed due to an observed
+ // difference in behavior between clang and gcc for certain internal users
+ Status result = SerializationTraits<M, void>::Serialize(
+ message, send_buf_.bbuf_ptr(), &own_buf);
+ if (!own_buf) {
+ send_buf_.Duplicate();
+ }
+ return result;
+}
+
+template <class M>
+Status CallOpSendMessage::SendMessage(const M& message) {
+ return SendMessage(message, WriteOptions());
+}
+
+template <class M>
+Status CallOpSendMessage::SendMessagePtr(const M* message,
+ WriteOptions options) {
+ msg_ = message;
+ write_options_ = options;
+ // Store the serializer for later since we have access to the message
serializer_ = [this](const void* message) {
bool own_buf;
- send_buf_.Clear();
// TODO(vjpai): Remove the void below when possible
// The void in the template parameter below should not be needed
// (since it should be implicit) but is needed due to an observed
}
return result;
};
- // Serialize immediately only if we do not have access to the message pointer
- if (msg_ == nullptr) {
- Status result = serializer_(&message);
- serializer_ = nullptr;
- return result;
- }
return Status();
}
template <class M>
-Status CallOpSendMessage::SendMessage(const M& message) {
- return SendMessage(message, WriteOptions());
-}
-
-template <class M>
-Status CallOpSendMessage::SendMessagePtr(const M* message,
- WriteOptions options) {
- msg_ = message;
- return SendMessage(*message, options);
-}
-
-template <class M>
Status CallOpSendMessage::SendMessagePtr(const M* message) {
- msg_ = message;
- return SendMessage(*message, WriteOptions());
+ return SendMessagePtr(message, WriteOptions());
}
template <class R>
class ClientAsyncWriterFactory;
template <class W, class R>
class ClientAsyncReaderWriterFactory;
-template <class R>
-class ClientAsyncResponseReaderFactory;
+class ClientAsyncResponseReaderHelper;
template <class W, class R>
class ClientCallbackReaderWriterFactory;
template <class R>
friend class ::grpc::internal::ClientAsyncWriterFactory;
template <class W, class R>
friend class ::grpc::internal::ClientAsyncReaderWriterFactory;
- template <class R>
- friend class ::grpc::internal::ClientAsyncResponseReaderFactory;
+ friend class ::grpc::internal::ClientAsyncResponseReaderHelper;
template <class W, class R>
friend class ::grpc::internal::ClientCallbackReaderWriterFactory;
template <class R>
namespace internal {
class RpcMethod;
-/// Perform a callback-based unary call
+/// Perform a callback-based unary call. May optionally specify the base
+/// class of the Request and Response so that the internal calls and structures
+/// below this may be based on those base classes and thus achieve code reuse
+/// across different RPCs (e.g., for protobuf, MessageLite would be a base
+/// class).
/// TODO(vjpai): Combine as much as possible with the blocking unary call code
-template <class InputMessage, class OutputMessage>
+template <class InputMessage, class OutputMessage,
+ class BaseInputMessage = InputMessage,
+ class BaseOutputMessage = OutputMessage>
void CallbackUnaryCall(::grpc::ChannelInterface* channel,
const ::grpc::internal::RpcMethod& method,
::grpc::ClientContext* context,
const InputMessage* request, OutputMessage* result,
std::function<void(::grpc::Status)> on_completion) {
- CallbackUnaryCallImpl<InputMessage, OutputMessage> x(
+ static_assert(std::is_base_of<BaseInputMessage, InputMessage>::value,
+ "Invalid input message specification");
+ static_assert(std::is_base_of<BaseOutputMessage, OutputMessage>::value,
+ "Invalid output message specification");
+ CallbackUnaryCallImpl<BaseInputMessage, BaseOutputMessage> x(
channel, method, context, request, result, on_completion);
}
}
void WritesDone() override {
writes_done_ops_.ClientSendClose();
- writes_done_tag_.Set(call_.call(),
- [this](bool ok) {
- reactor_->OnWritesDoneDone(ok);
- MaybeFinish(/*from_reaction=*/true);
- },
- &writes_done_ops_, /*can_inline=*/false);
+ writes_done_tag_.Set(
+ call_.call(),
+ [this](bool ok) {
+ reactor_->OnWritesDoneDone(ok);
+ MaybeFinish(/*from_reaction=*/true);
+ },
+ &writes_done_ops_, /*can_inline=*/false);
writes_done_ops_.set_core_cq_tag(&writes_done_tag_);
callbacks_outstanding_.fetch_add(1, std::memory_order_relaxed);
if (GPR_UNLIKELY(corked_write_needed_)) {
this->BindReactor(reactor);
// Set up the unchanging parts of the start, read, and write tags and ops.
- start_tag_.Set(call_.call(),
- [this](bool ok) {
- reactor_->OnReadInitialMetadataDone(ok);
- MaybeFinish(/*from_reaction=*/true);
- },
- &start_ops_, /*can_inline=*/false);
+ start_tag_.Set(
+ call_.call(),
+ [this](bool ok) {
+ reactor_->OnReadInitialMetadataDone(ok);
+ MaybeFinish(/*from_reaction=*/true);
+ },
+ &start_ops_, /*can_inline=*/false);
start_ops_.RecvInitialMetadata(context_);
start_ops_.set_core_cq_tag(&start_tag_);
- write_tag_.Set(call_.call(),
- [this](bool ok) {
- reactor_->OnWriteDone(ok);
- MaybeFinish(/*from_reaction=*/true);
- },
- &write_ops_, /*can_inline=*/false);
+ write_tag_.Set(
+ call_.call(),
+ [this](bool ok) {
+ reactor_->OnWriteDone(ok);
+ MaybeFinish(/*from_reaction=*/true);
+ },
+ &write_ops_, /*can_inline=*/false);
write_ops_.set_core_cq_tag(&write_tag_);
- read_tag_.Set(call_.call(),
- [this](bool ok) {
- reactor_->OnReadDone(ok);
- MaybeFinish(/*from_reaction=*/true);
- },
- &read_ops_, /*can_inline=*/false);
+ read_tag_.Set(
+ call_.call(),
+ [this](bool ok) {
+ reactor_->OnReadDone(ok);
+ MaybeFinish(/*from_reaction=*/true);
+ },
+ &read_ops_, /*can_inline=*/false);
read_ops_.set_core_cq_tag(&read_tag_);
// Also set up the Finish tag and op set.
// 2. Any backlog
// 3. Recv trailing metadata
- start_tag_.Set(call_.call(),
- [this](bool ok) {
- reactor_->OnReadInitialMetadataDone(ok);
- MaybeFinish(/*from_reaction=*/true);
- },
- &start_ops_, /*can_inline=*/false);
+ start_tag_.Set(
+ call_.call(),
+ [this](bool ok) {
+ reactor_->OnReadInitialMetadataDone(ok);
+ MaybeFinish(/*from_reaction=*/true);
+ },
+ &start_ops_, /*can_inline=*/false);
start_ops_.SendInitialMetadata(&context_->send_initial_metadata_,
context_->initial_metadata_flags());
start_ops_.RecvInitialMetadata(context_);
call_.PerformOps(&start_ops_);
// Also set up the read tag so it doesn't have to be set up each time
- read_tag_.Set(call_.call(),
- [this](bool ok) {
- reactor_->OnReadDone(ok);
- MaybeFinish(/*from_reaction=*/true);
- },
- &read_ops_, /*can_inline=*/false);
+ read_tag_.Set(
+ call_.call(),
+ [this](bool ok) {
+ reactor_->OnReadDone(ok);
+ MaybeFinish(/*from_reaction=*/true);
+ },
+ &read_ops_, /*can_inline=*/false);
read_ops_.set_core_cq_tag(&read_tag_);
{
void WritesDone() override {
writes_done_ops_.ClientSendClose();
- writes_done_tag_.Set(call_.call(),
- [this](bool ok) {
- reactor_->OnWritesDoneDone(ok);
- MaybeFinish(/*from_reaction=*/true);
- },
- &writes_done_ops_, /*can_inline=*/false);
+ writes_done_tag_.Set(
+ call_.call(),
+ [this](bool ok) {
+ reactor_->OnWritesDoneDone(ok);
+ MaybeFinish(/*from_reaction=*/true);
+ },
+ &writes_done_ops_, /*can_inline=*/false);
writes_done_ops_.set_core_cq_tag(&writes_done_tag_);
callbacks_outstanding_.fetch_add(1, std::memory_order_relaxed);
this->BindReactor(reactor);
// Set up the unchanging parts of the start and write tags and ops.
- start_tag_.Set(call_.call(),
- [this](bool ok) {
- reactor_->OnReadInitialMetadataDone(ok);
- MaybeFinish(/*from_reaction=*/true);
- },
- &start_ops_, /*can_inline=*/false);
+ start_tag_.Set(
+ call_.call(),
+ [this](bool ok) {
+ reactor_->OnReadInitialMetadataDone(ok);
+ MaybeFinish(/*from_reaction=*/true);
+ },
+ &start_ops_, /*can_inline=*/false);
start_ops_.RecvInitialMetadata(context_);
start_ops_.set_core_cq_tag(&start_tag_);
- write_tag_.Set(call_.call(),
- [this](bool ok) {
- reactor_->OnWriteDone(ok);
- MaybeFinish(/*from_reaction=*/true);
- },
- &write_ops_, /*can_inline=*/false);
+ write_tag_.Set(
+ call_.call(),
+ [this](bool ok) {
+ reactor_->OnWriteDone(ok);
+ MaybeFinish(/*from_reaction=*/true);
+ },
+ &write_ops_, /*can_inline=*/false);
write_ops_.set_core_cq_tag(&write_tag_);
// Also set up the Finish tag and op set.
// 1. Send initial metadata + write + writes done + recv initial metadata
// 2. Read message, recv trailing metadata
- start_tag_.Set(call_.call(),
- [this](bool ok) {
- reactor_->OnReadInitialMetadataDone(ok);
- MaybeFinish();
- },
- &start_ops_, /*can_inline=*/false);
+ start_tag_.Set(
+ call_.call(),
+ [this](bool ok) {
+ reactor_->OnReadInitialMetadataDone(ok);
+ MaybeFinish();
+ },
+ &start_ops_, /*can_inline=*/false);
start_ops_.SendInitialMetadata(&context_->send_initial_metadata_,
context_->initial_metadata_flags());
start_ops_.RecvInitialMetadata(context_);
start_ops_.set_core_cq_tag(&start_tag_);
call_.PerformOps(&start_ops_);
- finish_tag_.Set(call_.call(), [this](bool /*ok*/) { MaybeFinish(); },
- &finish_ops_,
- /*can_inline=*/false);
+ finish_tag_.Set(
+ call_.call(), [this](bool /*ok*/) { MaybeFinish(); }, &finish_ops_,
+ /*can_inline=*/false);
finish_ops_.ClientRecvStatus(context_, &finish_status_);
finish_ops_.set_core_cq_tag(&finish_tag_);
call_.PerformOps(&finish_ops_);
class ClientCallbackUnaryFactory {
public:
- template <class Request, class Response>
+ template <class Request, class Response, class BaseRequest = Request,
+ class BaseResponse = Response>
static void Create(::grpc::ChannelInterface* channel,
const ::grpc::internal::RpcMethod& method,
::grpc::ClientContext* context, const Request* request,
new (::grpc::g_core_codegen_interface->grpc_call_arena_alloc(
call.call(), sizeof(ClientCallbackUnaryImpl)))
- ClientCallbackUnaryImpl(call, context, request, response, reactor);
+ ClientCallbackUnaryImpl(call, context,
+ static_cast<const BaseRequest*>(request),
+ static_cast<BaseResponse*>(response), reactor);
}
};
class ClientCallbackWriterImpl;
class ClientCallbackUnaryImpl;
class ClientContextAccessor;
+class ClientAsyncResponseReaderHelper;
} // namespace internal
template <class R>
friend class ::grpc::ClientAsyncReaderWriter;
template <class R>
friend class ::grpc::ClientAsyncResponseReader;
+ friend class ::grpc::internal::ClientAsyncResponseReaderHelper;
template <class InputMessage, class OutputMessage>
friend class ::grpc::internal::BlockingUnaryCallImpl;
template <class InputMessage, class OutputMessage>
class ClientContext;
namespace internal {
class RpcMethod;
-/// Wrapper that performs a blocking unary call
-template <class InputMessage, class OutputMessage>
+
+/// Wrapper that performs a blocking unary call. May optionally specify the base
+/// class of the Request and Response so that the internal calls and structures
+/// below this may be based on those base classes and thus achieve code reuse
+/// across different RPCs (e.g., for protobuf, MessageLite would be a base
+/// class).
+template <class InputMessage, class OutputMessage,
+ class BaseInputMessage = InputMessage,
+ class BaseOutputMessage = OutputMessage>
Status BlockingUnaryCall(ChannelInterface* channel, const RpcMethod& method,
grpc::ClientContext* context,
const InputMessage& request, OutputMessage* result) {
- return BlockingUnaryCallImpl<InputMessage, OutputMessage>(
+ static_assert(std::is_base_of<BaseInputMessage, InputMessage>::value,
+ "Invalid input message specification");
+ static_assert(std::is_base_of<BaseOutputMessage, OutputMessage>::value,
+ "Invalid output message specification");
+ return BlockingUnaryCallImpl<BaseInputMessage, BaseOutputMessage>(
channel, method, context, request, result)
.status();
}
#include <grpcpp/impl/codegen/completion_queue_tag.h>
#include <grpcpp/impl/codegen/core_codegen_interface.h>
#include <grpcpp/impl/codegen/grpc_library.h>
+#include <grpcpp/impl/codegen/rpc_service_method.h>
#include <grpcpp/impl/codegen/status.h>
#include <grpcpp/impl/codegen/sync.h>
#include <grpcpp/impl/codegen/time.h>
template <class W, class R>
class ServerReaderWriterBody;
-template <class ServiceType, class RequestType, class ResponseType>
+template <class ResponseType>
+void UnaryRunHandlerHelper(
+ const ::grpc::internal::MethodHandler::HandlerParameter&, ResponseType*,
+ ::grpc::Status&);
+template <class ServiceType, class RequestType, class ResponseType,
+ class BaseRequestType, class BaseResponseType>
class RpcMethodHandler;
template <class ServiceType, class RequestType, class ResponseType>
class ClientStreamingHandler;
/// Read from the queue, blocking until an event is available or the queue is
/// shutting down.
///
- /// \param tag [out] Updated to point to the read event's tag.
- /// \param ok [out] true if read a successful event, false otherwise.
+ /// \param[out] tag Updated to point to the read event's tag.
+ /// \param[out] ok true if read a successful event, false otherwise.
///
/// Note that each tag sent to the completion queue (through RPC operations
/// or alarms) will be delivered out of the completion queue by a call to
/// within the \a deadline). A \a tag points to an arbitrary location usually
/// employed to uniquely identify an event.
///
- /// \param tag [out] Upon success, updated to point to the event's tag.
- /// \param ok [out] Upon success, true if a successful event, false otherwise
+ /// \param[out] tag Upon success, updated to point to the event's tag.
+ /// \param[out] ok Upon success, true if a successful event, false otherwise
/// See documentation for CompletionQueue::Next for explanation of ok
- /// \param deadline [in] How long to block in wait for an event.
+ /// \param[in] deadline How long to block in wait for an event.
///
/// \return The type of event read.
template <typename T>
/// within the \a deadline). A \a tag points to an arbitrary location usually
/// employed to uniquely identify an event.
///
- /// \param f [in] Function to execute before calling AsyncNext on this queue.
- /// \param tag [out] Upon success, updated to point to the event's tag.
- /// \param ok [out] Upon success, true if read a regular event, false
+ /// \param[in] f Function to execute before calling AsyncNext on this queue.
+ /// \param[out] tag Upon success, updated to point to the event's tag.
+ /// \param[out] ok Upon success, true if read a regular event, false
/// otherwise.
- /// \param deadline [in] How long to block in wait for an event.
+ /// \param[in] deadline How long to block in wait for an event.
///
/// \return The type of event read.
template <typename T, typename F>
friend class ::grpc::ServerWriter;
template <class W, class R>
friend class ::grpc::internal::ServerReaderWriterBody;
- template <class ServiceType, class RequestType, class ResponseType>
- friend class ::grpc::internal::RpcMethodHandler;
+ template <class ResponseType>
+ friend void ::grpc::internal::UnaryRunHandlerHelper(
+ const ::grpc::internal::MethodHandler::HandlerParameter&, ResponseType*,
+ ::grpc::Status&);
template <class ServiceType, class RequestType, class ResponseType>
friend class ::grpc::internal::ClientStreamingHandler;
template <class ServiceType, class RequestType, class ResponseType>
#endif // GRPC_ALLOW_EXCEPTIONS
}
+/// A helper function with reduced templating to do the common work needed to
+/// actually send the server response. Uses non-const parameter for Status since
+/// this should only ever be called from the end of the RunHandler method.
+
+template <class ResponseType>
+void UnaryRunHandlerHelper(const MethodHandler::HandlerParameter& param,
+ ResponseType* rsp, ::grpc::Status& status) {
+ GPR_CODEGEN_ASSERT(!param.server_context->sent_initial_metadata_);
+ ::grpc::internal::CallOpSet<::grpc::internal::CallOpSendInitialMetadata,
+ ::grpc::internal::CallOpSendMessage,
+ ::grpc::internal::CallOpServerSendStatus>
+ ops;
+ ops.SendInitialMetadata(¶m.server_context->initial_metadata_,
+ param.server_context->initial_metadata_flags());
+ if (param.server_context->compression_level_set()) {
+ ops.set_compression_level(param.server_context->compression_level());
+ }
+ if (status.ok()) {
+ status = ops.SendMessagePtr(rsp);
+ }
+ ops.ServerSendStatus(¶m.server_context->trailing_metadata_, status);
+ param.call->PerformOps(&ops);
+ param.call->cq()->Pluck(&ops);
+}
+
+/// A helper function with reduced templating to do deserializing.
+
+template <class RequestType>
+void* UnaryDeserializeHelper(grpc_call* call, grpc_byte_buffer* req,
+ ::grpc::Status* status, RequestType* request) {
+ ::grpc::ByteBuffer buf;
+ buf.set_buffer(req);
+ *status = ::grpc::SerializationTraits<RequestType>::Deserialize(
+ &buf, static_cast<RequestType*>(request));
+ buf.Release();
+ if (status->ok()) {
+ return request;
+ }
+ request->~RequestType();
+ return nullptr;
+}
+
/// A wrapper class of an application provided rpc method handler.
-template <class ServiceType, class RequestType, class ResponseType>
+template <class ServiceType, class RequestType, class ResponseType,
+ class BaseRequestType = RequestType,
+ class BaseResponseType = ResponseType>
class RpcMethodHandler : public ::grpc::internal::MethodHandler {
public:
RpcMethodHandler(
});
static_cast<RequestType*>(param.request)->~RequestType();
}
-
- GPR_CODEGEN_ASSERT(!param.server_context->sent_initial_metadata_);
- ::grpc::internal::CallOpSet<::grpc::internal::CallOpSendInitialMetadata,
- ::grpc::internal::CallOpSendMessage,
- ::grpc::internal::CallOpServerSendStatus>
- ops;
- ops.SendInitialMetadata(¶m.server_context->initial_metadata_,
- param.server_context->initial_metadata_flags());
- if (param.server_context->compression_level_set()) {
- ops.set_compression_level(param.server_context->compression_level());
- }
- if (status.ok()) {
- status = ops.SendMessagePtr(&rsp);
- }
- ops.ServerSendStatus(¶m.server_context->trailing_metadata_, status);
- param.call->PerformOps(&ops);
- param.call->cq()->Pluck(&ops);
+ UnaryRunHandlerHelper(param, static_cast<BaseResponseType*>(&rsp), status);
}
void* Deserialize(grpc_call* call, grpc_byte_buffer* req,
::grpc::Status* status, void** /*handler_data*/) final {
- ::grpc::ByteBuffer buf;
- buf.set_buffer(req);
auto* request =
new (::grpc::g_core_codegen_interface->grpc_call_arena_alloc(
- call, sizeof(RequestType))) RequestType();
- *status =
- ::grpc::SerializationTraits<RequestType>::Deserialize(&buf, request);
- buf.Release();
- if (status->ok()) {
- return request;
- }
- request->~RequestType();
- return nullptr;
+ call, sizeof(RequestType))) RequestType;
+ return UnaryDeserializeHelper(call, req, status,
+ static_cast<BaseRequestType*>(request));
}
private:
"ProtoBufferWriter must be a subclass of "
"::protobuf::io::ZeroCopyOutputStream");
*own_buffer = true;
- int byte_size = msg.ByteSizeLong();
+ int byte_size = static_cast<int>(msg.ByteSizeLong());
if ((size_t)byte_size <= GRPC_SLICE_INLINED_SIZE) {
Slice slice(byte_size);
// We serialize directly into the allocated slices memory
// (OnSendInitialMetadataDone). Thus it must be dispatched to an executor
// thread. However, any OnDone needed after that can be inlined because it
// is already running on an executor thread.
- meta_tag_.Set(call_.call(),
- [this](bool ok) {
- ServerUnaryReactor* reactor =
- reactor_.load(std::memory_order_relaxed);
- reactor->OnSendInitialMetadataDone(ok);
- this->MaybeDone(/*inlineable_ondone=*/true);
- },
- &meta_ops_, /*can_inline=*/false);
+ meta_tag_.Set(
+ call_.call(),
+ [this](bool ok) {
+ ServerUnaryReactor* reactor =
+ reactor_.load(std::memory_order_relaxed);
+ reactor->OnSendInitialMetadataDone(ok);
+ this->MaybeDone(/*inlineable_ondone=*/true);
+ },
+ &meta_ops_, /*can_inline=*/false);
meta_ops_.SendInitialMetadata(&ctx_->initial_metadata_,
ctx_->initial_metadata_flags());
if (ctx_->compression_level_set()) {
// A finish tag with only MaybeDone can have its callback inlined
// regardless even if OnDone is not inlineable because this callback just
// checks a ref and then decides whether or not to dispatch OnDone.
- finish_tag_.Set(call_.call(),
- [this](bool) {
- // Inlineable OnDone can be false here because there is
- // no read reactor that has an inlineable OnDone; this
- // only applies to the DefaultReactor (which is unary).
- this->MaybeDone(/*inlineable_ondone=*/false);
- },
- &finish_ops_, /*can_inline=*/true);
+ finish_tag_.Set(
+ call_.call(),
+ [this](bool) {
+ // Inlineable OnDone can be false here because there is
+ // no read reactor that has an inlineable OnDone; this
+ // only applies to the DefaultReactor (which is unary).
+ this->MaybeDone(/*inlineable_ondone=*/false);
+ },
+ &finish_ops_, /*can_inline=*/true);
if (!ctx_->sent_initial_metadata_) {
finish_ops_.SendInitialMetadata(&ctx_->initial_metadata_,
ctx_->initial_metadata_flags());
// The callback for this function should not be inlined because it invokes
// a user-controlled reaction, but any resulting OnDone can be inlined in
// the executor to which this callback is dispatched.
- meta_tag_.Set(call_.call(),
- [this](bool ok) {
- ServerReadReactor<RequestType>* reactor =
- reactor_.load(std::memory_order_relaxed);
- reactor->OnSendInitialMetadataDone(ok);
- this->MaybeDone(/*inlineable_ondone=*/true);
- },
- &meta_ops_, /*can_inline=*/false);
+ meta_tag_.Set(
+ call_.call(),
+ [this](bool ok) {
+ ServerReadReactor<RequestType>* reactor =
+ reactor_.load(std::memory_order_relaxed);
+ reactor->OnSendInitialMetadataDone(ok);
+ this->MaybeDone(/*inlineable_ondone=*/true);
+ },
+ &meta_ops_, /*can_inline=*/false);
meta_ops_.SendInitialMetadata(&ctx_->initial_metadata_,
ctx_->initial_metadata_flags());
if (ctx_->compression_level_set()) {
// The callback for this function should not be inlined because it invokes
// a user-controlled reaction, but any resulting OnDone can be inlined in
// the executor to which this callback is dispatched.
- read_tag_.Set(call_.call(),
- [this, reactor](bool ok) {
- reactor->OnReadDone(ok);
- this->MaybeDone(/*inlineable_ondone=*/true);
- },
- &read_ops_, /*can_inline=*/false);
+ read_tag_.Set(
+ call_.call(),
+ [this, reactor](bool ok) {
+ reactor->OnReadDone(ok);
+ this->MaybeDone(/*inlineable_ondone=*/true);
+ },
+ &read_ops_, /*can_inline=*/false);
read_ops_.set_core_cq_tag(&read_tag_);
this->BindReactor(reactor);
this->MaybeCallOnCancel(reactor);
// A finish tag with only MaybeDone can have its callback inlined
// regardless even if OnDone is not inlineable because this callback just
// checks a ref and then decides whether or not to dispatch OnDone.
- finish_tag_.Set(call_.call(),
- [this](bool) {
- // Inlineable OnDone can be false here because there is
- // no write reactor that has an inlineable OnDone; this
- // only applies to the DefaultReactor (which is unary).
- this->MaybeDone(/*inlineable_ondone=*/false);
- },
- &finish_ops_, /*can_inline=*/true);
+ finish_tag_.Set(
+ call_.call(),
+ [this](bool) {
+ // Inlineable OnDone can be false here because there is
+ // no write reactor that has an inlineable OnDone; this
+ // only applies to the DefaultReactor (which is unary).
+ this->MaybeDone(/*inlineable_ondone=*/false);
+ },
+ &finish_ops_, /*can_inline=*/true);
finish_ops_.set_core_cq_tag(&finish_tag_);
if (!ctx_->sent_initial_metadata_) {
// The callback for this function should not be inlined because it invokes
// a user-controlled reaction, but any resulting OnDone can be inlined in
// the executor to which this callback is dispatched.
- meta_tag_.Set(call_.call(),
- [this](bool ok) {
- ServerWriteReactor<ResponseType>* reactor =
- reactor_.load(std::memory_order_relaxed);
- reactor->OnSendInitialMetadataDone(ok);
- this->MaybeDone(/*inlineable_ondone=*/true);
- },
- &meta_ops_, /*can_inline=*/false);
+ meta_tag_.Set(
+ call_.call(),
+ [this](bool ok) {
+ ServerWriteReactor<ResponseType>* reactor =
+ reactor_.load(std::memory_order_relaxed);
+ reactor->OnSendInitialMetadataDone(ok);
+ this->MaybeDone(/*inlineable_ondone=*/true);
+ },
+ &meta_ops_, /*can_inline=*/false);
meta_ops_.SendInitialMetadata(&ctx_->initial_metadata_,
ctx_->initial_metadata_flags());
if (ctx_->compression_level_set()) {
// The callback for this function should not be inlined because it invokes
// a user-controlled reaction, but any resulting OnDone can be inlined in
// the executor to which this callback is dispatched.
- write_tag_.Set(call_.call(),
- [this, reactor](bool ok) {
- reactor->OnWriteDone(ok);
- this->MaybeDone(/*inlineable_ondone=*/true);
- },
- &write_ops_, /*can_inline=*/false);
+ write_tag_.Set(
+ call_.call(),
+ [this, reactor](bool ok) {
+ reactor->OnWriteDone(ok);
+ this->MaybeDone(/*inlineable_ondone=*/true);
+ },
+ &write_ops_, /*can_inline=*/false);
write_ops_.set_core_cq_tag(&write_tag_);
this->BindReactor(reactor);
this->MaybeCallOnCancel(reactor);
// A finish tag with only MaybeDone can have its callback inlined
// regardless even if OnDone is not inlineable because this callback just
// checks a ref and then decides whether or not to dispatch OnDone.
- finish_tag_.Set(call_.call(),
- [this](bool) {
- // Inlineable OnDone can be false here because there is
- // no bidi reactor that has an inlineable OnDone; this
- // only applies to the DefaultReactor (which is unary).
- this->MaybeDone(/*inlineable_ondone=*/false);
- },
- &finish_ops_, /*can_inline=*/true);
+ finish_tag_.Set(
+ call_.call(),
+ [this](bool) {
+ // Inlineable OnDone can be false here because there is
+ // no bidi reactor that has an inlineable OnDone; this
+ // only applies to the DefaultReactor (which is unary).
+ this->MaybeDone(/*inlineable_ondone=*/false);
+ },
+ &finish_ops_, /*can_inline=*/true);
finish_ops_.set_core_cq_tag(&finish_tag_);
if (!ctx_->sent_initial_metadata_) {
// The callback for this function should not be inlined because it invokes
// a user-controlled reaction, but any resulting OnDone can be inlined in
// the executor to which this callback is dispatched.
- meta_tag_.Set(call_.call(),
- [this](bool ok) {
- ServerBidiReactor<RequestType, ResponseType>* reactor =
- reactor_.load(std::memory_order_relaxed);
- reactor->OnSendInitialMetadataDone(ok);
- this->MaybeDone(/*inlineable_ondone=*/true);
- },
- &meta_ops_, /*can_inline=*/false);
+ meta_tag_.Set(
+ call_.call(),
+ [this](bool ok) {
+ ServerBidiReactor<RequestType, ResponseType>* reactor =
+ reactor_.load(std::memory_order_relaxed);
+ reactor->OnSendInitialMetadataDone(ok);
+ this->MaybeDone(/*inlineable_ondone=*/true);
+ },
+ &meta_ops_, /*can_inline=*/false);
meta_ops_.SendInitialMetadata(&ctx_->initial_metadata_,
ctx_->initial_metadata_flags());
if (ctx_->compression_level_set()) {
// The callbacks for these functions should not be inlined because they
// invoke user-controlled reactions, but any resulting OnDones can be
// inlined in the executor to which a callback is dispatched.
- write_tag_.Set(call_.call(),
- [this, reactor](bool ok) {
- reactor->OnWriteDone(ok);
- this->MaybeDone(/*inlineable_ondone=*/true);
- },
- &write_ops_, /*can_inline=*/false);
+ write_tag_.Set(
+ call_.call(),
+ [this, reactor](bool ok) {
+ reactor->OnWriteDone(ok);
+ this->MaybeDone(/*inlineable_ondone=*/true);
+ },
+ &write_ops_, /*can_inline=*/false);
write_ops_.set_core_cq_tag(&write_tag_);
- read_tag_.Set(call_.call(),
- [this, reactor](bool ok) {
- reactor->OnReadDone(ok);
- this->MaybeDone(/*inlineable_ondone=*/true);
- },
- &read_ops_, /*can_inline=*/false);
+ read_tag_.Set(
+ call_.call(),
+ [this, reactor](bool ok) {
+ reactor->OnReadDone(ok);
+ this->MaybeDone(/*inlineable_ondone=*/true);
+ },
+ &read_ops_, /*can_inline=*/false);
read_ops_.set_core_cq_tag(&read_tag_);
this->BindReactor(reactor);
this->MaybeCallOnCancel(reactor);
#include <grpcpp/impl/codegen/create_auth_context.h>
#include <grpcpp/impl/codegen/message_allocator.h>
#include <grpcpp/impl/codegen/metadata_map.h>
+#include <grpcpp/impl/codegen/rpc_service_method.h>
#include <grpcpp/impl/codegen/security/auth_context.h>
#include <grpcpp/impl/codegen/server_callback.h>
#include <grpcpp/impl/codegen/server_interceptor.h>
class CallbackBidiHandler;
template <class ServiceType, class RequestType, class ResponseType>
class ClientStreamingHandler;
-template <class ServiceType, class RequestType, class ResponseType>
+template <class ResponseType>
+void UnaryRunHandlerHelper(const MethodHandler::HandlerParameter&,
+ ResponseType*, Status&);
+template <class ServiceType, class RequestType, class ResponseType,
+ class BaseRequestType, class BaseResponseType>
class RpcMethodHandler;
template <class Base>
class FinishOnlyReactor;
friend class ::grpc::ServerWriter;
template <class W, class R>
friend class ::grpc::internal::ServerReaderWriterBody;
- template <class ServiceType, class RequestType, class ResponseType>
+ template <class ResponseType>
+ friend void ::grpc::internal::UnaryRunHandlerHelper(
+ const internal::MethodHandler::HandlerParameter& param, ResponseType* rsp,
+ Status& status);
+ template <class ServiceType, class RequestType, class ResponseType,
+ class BaseRequestType, class BaseResponseType>
friend class ::grpc::internal::RpcMethodHandler;
template <class ServiceType, class RequestType, class ResponseType>
friend class ::grpc::internal::ClientStreamingHandler;
std::vector<
std::unique_ptr<grpc::experimental::ClientInterceptorFactoryInterface>>
interceptor_creators);
-}
+
+/// Builds XDS Credentials.
+std::shared_ptr<ChannelCredentials> XdsCredentials(
+ const std::shared_ptr<ChannelCredentials>& fallback_creds);
+} // namespace experimental
/// A channel credentials object encapsulates all the state needed by a client
/// to authenticate with a server for a given channel.
const std::shared_ptr<ChannelCredentials>& channel_creds,
const std::shared_ptr<CallCredentials>& call_creds);
+ // TODO(yashykt): We need this friend declaration mainly for access to
+ // AsSecureCredentials(). Once we are able to remove insecure builds from gRPC
+ // (and also internal dependencies on the indirect method of creating a
+ // channel through credentials), we would be able to remove this.
+ friend std::shared_ptr<ChannelCredentials> grpc::experimental::XdsCredentials(
+ const std::shared_ptr<ChannelCredentials>& fallback_creds);
+
virtual SecureChannelCredentials* AsSecureCredentials() = 0;
private:
/*interceptor_creators*/) {
return nullptr;
}
+
+ // TODO(yashkt): This is a hack that is needed since InsecureCredentials can
+ // not use grpc_channel_credentials internally and should be removed after
+ // insecure builds are removed from gRPC.
+ virtual bool IsInsecure() const { return false; }
};
/// A call credentials object encapsulates the state needed by a client to
/// Builds TLS Credentials given TLS options.
std::shared_ptr<ChannelCredentials> TlsCredentials(
- const TlsCredentialsOptions& options);
+ const TlsChannelCredentialsOptions& options);
} // namespace experimental
} // namespace grpc
/// Builds TLS ServerCredentials given TLS options.
std::shared_ptr<ServerCredentials> TlsServerCredentials(
- const experimental::TlsCredentialsOptions& options);
+ const experimental::TlsServerCredentialsOptions& options);
} // namespace experimental
} // namespace grpc
--- /dev/null
+//
+// Copyright 2020 gRPC authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+#ifndef GRPCPP_SECURITY_TLS_CERTIFICATE_PROVIDER_H
+#define GRPCPP_SECURITY_TLS_CERTIFICATE_PROVIDER_H
+
+#include <grpc/grpc_security_constants.h>
+#include <grpc/status.h>
+#include <grpc/support/log.h>
+#include <grpcpp/impl/codegen/grpc_library.h>
+#include <grpcpp/support/config.h>
+
+#include <memory>
+#include <vector>
+
+// TODO(yihuazhang): remove the forward declaration here and include
+// <grpc/grpc_security.h> directly once the insecure builds are cleaned up.
+typedef struct grpc_tls_certificate_provider grpc_tls_certificate_provider;
+
+namespace grpc {
+namespace experimental {
+
+// Interface for a class that handles the process to fetch credential data.
+// Implementations should be a wrapper class of an internal provider
+// implementation.
+class CertificateProviderInterface {
+ public:
+ virtual ~CertificateProviderInterface() = default;
+ virtual grpc_tls_certificate_provider* c_provider() = 0;
+};
+
+// A struct that stores the credential data presented to the peer in handshake
+// to show local identity. The private_key and certificate_chain should always
+// match.
+struct IdentityKeyCertPair {
+ std::string private_key;
+ std::string certificate_chain;
+};
+
+// A basic CertificateProviderInterface implementation that will load credential
+// data from static string during initialization. This provider will always
+// return the same cert data for all cert names, and reloading is not supported.
+class StaticDataCertificateProvider : public CertificateProviderInterface {
+ public:
+ StaticDataCertificateProvider(
+ const std::string& root_certificate,
+ const std::vector<IdentityKeyCertPair>& identity_key_cert_pairs);
+
+ StaticDataCertificateProvider(const std::string& root_certificate)
+ : StaticDataCertificateProvider(root_certificate, {}) {}
+
+ StaticDataCertificateProvider(
+ const std::vector<IdentityKeyCertPair>& identity_key_cert_pairs)
+ : StaticDataCertificateProvider("", identity_key_cert_pairs) {}
+
+ ~StaticDataCertificateProvider();
+
+ grpc_tls_certificate_provider* c_provider() override { return c_provider_; }
+
+ private:
+ grpc_tls_certificate_provider* c_provider_ = nullptr;
+};
+
+} // namespace experimental
+} // namespace grpc
+
+#endif // GRPCPP_SECURITY_TLS_CERTIFICATE_PROVIDER_H
#include <grpc/grpc_security_constants.h>
#include <grpc/status.h>
#include <grpc/support/log.h>
+#include <grpcpp/security/tls_certificate_provider.h>
#include <grpcpp/support/config.h>
#include <memory>
#include <vector>
-typedef struct grpc_tls_credential_reload_arg grpc_tls_credential_reload_arg;
-typedef struct grpc_tls_credential_reload_config
- grpc_tls_credential_reload_config;
+// TODO(yihuazhang): remove the forward declaration here and include
+// <grpc/grpc_security.h> directly once the insecure builds are cleaned up.
typedef struct grpc_tls_server_authorization_check_arg
grpc_tls_server_authorization_check_arg;
typedef struct grpc_tls_server_authorization_check_config
grpc_tls_server_authorization_check_config;
typedef struct grpc_tls_credentials_options grpc_tls_credentials_options;
+typedef struct grpc_tls_certificate_provider grpc_tls_certificate_provider;
namespace grpc {
namespace experimental {
-/** TLS key materials config, wrapper for grpc_tls_key_materials_config. It is
- * used for experimental purposes for now and subject to change. **/
-class TlsKeyMaterialsConfig {
- public:
- struct PemKeyCertPair {
- std::string private_key;
- std::string cert_chain;
- };
-
- /** Getters for member fields. **/
- const std::string pem_root_certs() const { return pem_root_certs_; }
- const std::vector<PemKeyCertPair>& pem_key_cert_pair_list() const {
- return pem_key_cert_pair_list_;
- }
- int version() const { return version_; }
-
- /** Setter for key materials that will be called by the user. Ownership of the
- * arguments will not be transferred. **/
- void set_pem_root_certs(const std::string& pem_root_certs);
- void add_pem_key_cert_pair(const PemKeyCertPair& pem_key_cert_pair);
- void set_key_materials(
- const std::string& pem_root_certs,
- const std::vector<PemKeyCertPair>& pem_key_cert_pair_list);
- void set_version(int version) { version_ = version; };
-
- private:
- int version_ = 0;
- std::vector<PemKeyCertPair> pem_key_cert_pair_list_;
- std::string pem_root_certs_;
-};
-
-/** TLS credential reload arguments, wraps grpc_tls_credential_reload_arg. It is
- * used for experimental purposes for now and it is subject to change.
- *
- * The credential reload arg contains all the info necessary to schedule/cancel
- * a credential reload request. The callback function must be called after
- * finishing the schedule operation. See the description of the
- * grpc_tls_credential_reload_arg struct in grpc_security.h for more details.
- * **/
-class TlsCredentialReloadArg {
- public:
- /** TlsCredentialReloadArg does not take ownership of the C arg that is passed
- * to the constructor. One must remember to free any memory allocated to the
- * C arg after using the setter functions below. **/
- TlsCredentialReloadArg(grpc_tls_credential_reload_arg* arg);
- ~TlsCredentialReloadArg();
-
- /** Getters for member fields. **/
- void* cb_user_data() const;
- bool is_pem_key_cert_pair_list_empty() const;
- grpc_ssl_certificate_config_reload_status status() const;
- std::string error_details() const;
-
- /** Setters for member fields. Ownership of the arguments will not be
- * transferred. **/
- void set_cb_user_data(void* cb_user_data);
- void set_pem_root_certs(const std::string& pem_root_certs);
- void add_pem_key_cert_pair(
- const TlsKeyMaterialsConfig::PemKeyCertPair& pem_key_cert_pair);
- void set_key_materials(const std::string& pem_root_certs,
- std::vector<TlsKeyMaterialsConfig::PemKeyCertPair>
- pem_key_cert_pair_list);
- void set_key_materials_config(
- const std::shared_ptr<TlsKeyMaterialsConfig>& key_materials_config);
- void set_status(grpc_ssl_certificate_config_reload_status status);
- void set_error_details(const std::string& error_details);
-
- /** Calls the C arg's callback function. **/
- void OnCredentialReloadDoneCallback();
-
- private:
- grpc_tls_credential_reload_arg* c_arg_;
-};
-
-/** An interface that the application derives and uses to instantiate a
- * TlsCredentialReloadConfig instance. Refer to the definition of the
- * grpc_tls_credential_reload_config in grpc_tls_credentials_options.h for more
- * details on the expectations of the member functions of the interface. **/
-struct TlsCredentialReloadInterface {
- virtual ~TlsCredentialReloadInterface() = default;
- /** A callback that invokes the credential reload. **/
- virtual int Schedule(TlsCredentialReloadArg* arg) = 0;
- /** A callback that cancels a credential reload request. **/
- virtual void Cancel(TlsCredentialReloadArg* /* arg */) {}
-};
-
-/** TLS credential reloag config, wraps grpc_tls_credential_reload_config. It is
- * used for experimental purposes for now and it is subject to change. **/
-class TlsCredentialReloadConfig {
- public:
- TlsCredentialReloadConfig(std::shared_ptr<TlsCredentialReloadInterface>
- credential_reload_interface);
- ~TlsCredentialReloadConfig();
-
- int Schedule(TlsCredentialReloadArg* arg) const {
- if (credential_reload_interface_ == nullptr) {
- gpr_log(GPR_ERROR, "credential reload interface is nullptr");
- if (arg != nullptr) {
- arg->set_status(GRPC_SSL_CERTIFICATE_CONFIG_RELOAD_FAIL);
- arg->set_error_details(
- "the interface of the credential reload config is nullptr");
- }
- return 1;
- }
- return credential_reload_interface_->Schedule(arg);
- }
-
- void Cancel(TlsCredentialReloadArg* arg) const {
- if (credential_reload_interface_ == nullptr) {
- gpr_log(GPR_ERROR, "credential reload interface is nullptr");
- if (arg != nullptr) {
- arg->set_status(GRPC_SSL_CERTIFICATE_CONFIG_RELOAD_FAIL);
- arg->set_error_details(
- "the interface of the credential reload config is nullptr");
- }
- return;
- }
- credential_reload_interface_->Cancel(arg);
- }
-
- /** Returns a C struct for the credential reload config. **/
- grpc_tls_credential_reload_config* c_config() const { return c_config_; }
-
- private:
- grpc_tls_credential_reload_config* c_config_;
- std::shared_ptr<TlsCredentialReloadInterface> credential_reload_interface_;
-};
-
/** TLS server authorization check arguments, wraps
* grpc_tls_server_authorization_check_arg. It is used for experimental
* purposes for now and it is subject to change.
server_authorization_check_interface_;
};
-/** TLS credentials options, wrapper for grpc_tls_credentials_options. It is
- * used for experimental purposes for now and it is subject to change. See the
- * description of the grpc_tls_credentials_options struct in grpc_security.h for
- * more details. **/
+// Base class of configurable options specified by users to configure their
+// certain security features supported in TLS. It is used for experimental
+// purposes for now and it is subject to change.
class TlsCredentialsOptions {
public:
- // Constructor for client.
+ // Constructor for base class TlsCredentialsOptions.
+ //
+ // @param certificate_provider the provider which fetches TLS credentials that
+ // will be used in the TLS handshake
explicit TlsCredentialsOptions(
- grpc_tls_server_verification_option server_verification_option,
- std::shared_ptr<TlsKeyMaterialsConfig> key_materials_config,
- std::shared_ptr<TlsCredentialReloadConfig> credential_reload_config,
- std::shared_ptr<TlsServerAuthorizationCheckConfig>
- server_authorization_check_config);
+ std::shared_ptr<CertificateProviderInterface> certificate_provider);
+ // ---- Setters for member fields ----
+ // Watches the updates of root certificates with name |root_cert_name|.
+ // If used in TLS credentials, it should always be set unless the root
+ // certificates are not needed(e.g. in the one-side TLS scenario, the server
+ // is not required to verify the client).
+ void watch_root_certs();
+ // Sets the name of root certificates being watched, if |watch_root_certs| is
+ // called. If not set, an empty string will be used as the name.
+ //
+ // @param root_cert_name the name of root certs being set.
+ void set_root_cert_name(const std::string& root_cert_name);
+ // Watches the updates of identity key-cert pairs with name
+ // |identity_cert_name|. If used in TLS credentials, it should always be set
+ // unless the identity certificates are not needed(e.g. in the one-side TLS
+ // scenario, the client is not required to provide certs).
+ void watch_identity_key_cert_pairs();
+ // Sets the name of identity key-cert pairs being watched, if
+ // |watch_identity_key_cert_pairs| is called. If not set, an empty string will
+ // be used as the name.
+ //
+ // @param identity_cert_name the name of identity key-cert pairs being set.
+ void set_identity_cert_name(const std::string& identity_cert_name);
+
+ // ----- Getters for member fields ----
+ // Get the internal c options. This function shall be used only internally.
+ grpc_tls_credentials_options* c_credentials_options() const {
+ return c_credentials_options_;
+ }
- // Constructor for server.
- explicit TlsCredentialsOptions(
- grpc_ssl_client_certificate_request_type cert_request_type,
- std::shared_ptr<TlsKeyMaterialsConfig> key_materials_config,
- std::shared_ptr<TlsCredentialReloadConfig> credential_reload_config);
+ private:
+ std::shared_ptr<CertificateProviderInterface> certificate_provider_;
+ grpc_tls_credentials_options* c_credentials_options_ = nullptr;
+};
- // This constructor will be deprecated.
- TlsCredentialsOptions(
- grpc_ssl_client_certificate_request_type cert_request_type,
- grpc_tls_server_verification_option server_verification_option,
- std::shared_ptr<TlsKeyMaterialsConfig> key_materials_config,
- std::shared_ptr<TlsCredentialReloadConfig> credential_reload_config,
+// Contains configurable options on the client side.
+// It is used for experimental purposes for now and it is subject to change.
+class TlsChannelCredentialsOptions final : public TlsCredentialsOptions {
+ public:
+ explicit TlsChannelCredentialsOptions(
+ std::shared_ptr<CertificateProviderInterface> certificate_provider)
+ : TlsCredentialsOptions(std::move(certificate_provider)) {}
+
+ // Sets the option to verify the server.
+ // The default is GRPC_TLS_SERVER_VERIFICATION.
+ void set_server_verification_option(
+ grpc_tls_server_verification_option server_verification_option);
+ // Sets the custom authorization config.
+ void set_server_authorization_check_config(
std::shared_ptr<TlsServerAuthorizationCheckConfig>
- server_authorization_check_config);
- ~TlsCredentialsOptions();
+ authorization_check_config);
- /** Getters for member fields. **/
- grpc_ssl_client_certificate_request_type cert_request_type() const {
- return cert_request_type_;
- }
- grpc_tls_server_verification_option server_verification_option() const {
- return server_verification_option_;
- }
- std::shared_ptr<TlsKeyMaterialsConfig> key_materials_config() const {
- return key_materials_config_;
- }
- std::shared_ptr<TlsCredentialReloadConfig> credential_reload_config() const {
- return credential_reload_config_;
- }
- std::shared_ptr<TlsServerAuthorizationCheckConfig>
- server_authorization_check_config() const {
- return server_authorization_check_config_;
- }
- grpc_tls_credentials_options* c_credentials_options() const {
- return c_credentials_options_;
- }
+ private:
+};
+
+// Contains configurable options on the server side.
+// It is used for experimental purposes for now and it is subject to change.
+class TlsServerCredentialsOptions final : public TlsCredentialsOptions {
+ public:
+ explicit TlsServerCredentialsOptions(
+ std::shared_ptr<CertificateProviderInterface> certificate_provider)
+ : TlsCredentialsOptions(std::move(certificate_provider)) {}
+
+ // Sets option to request the certificates from the client.
+ // The default is GRPC_SSL_DONT_REQUEST_CLIENT_CERTIFICATE.
+ void set_cert_request_type(
+ grpc_ssl_client_certificate_request_type cert_request_type);
private:
- /** The cert_request_type_ flag is only relevant when the
- * TlsCredentialsOptions are used to instantiate server credentials; the flag
- * goes unused when creating channel credentials, and the user can set it to
- * GRPC_SSL_DONT_REQUEST_CLIENT_CERTIFICATE. **/
- grpc_ssl_client_certificate_request_type cert_request_type_;
- /** The server_verification_option_ flag is only relevant when the
- * TlsCredentialsOptions are used to instantiate client credentials; **/
- grpc_tls_server_verification_option server_verification_option_;
- std::shared_ptr<TlsKeyMaterialsConfig> key_materials_config_;
- std::shared_ptr<TlsCredentialReloadConfig> credential_reload_config_;
- std::shared_ptr<TlsServerAuthorizationCheckConfig>
- server_authorization_check_config_;
- grpc_tls_credentials_options* c_credentials_options_;
};
} // namespace experimental
/// connections. Valid values include dns:///localhost:1234, /
/// 192.168.1.1:31416, dns:///[::1]:27182, etc.).
/// \param creds The credentials associated with the server.
- /// \param selected_port[out] If not `nullptr`, gets populated with the port
+ /// \param[out] selected_port If not `nullptr`, gets populated with the port
/// number bound to the \a grpc::Server for the corresponding endpoint after
/// it is successfully bound by BuildAndStart(), 0 otherwise. AddListeningPort
/// does not modify this pointer.
<date>2019-09-24</date>
<time>16:06:07</time>
<version>
- <release>1.33.2</release>
- <api>1.33.2</api>
+ <release>1.34.0</release>
+ <api>1.34.0</api>
</version>
<stability>
<release>stable</release>
</stability>
<license>Apache 2.0</license>
<notes>
-- gRPC Core 1.33.2 update
+- gRPC Core 1.34.0 update
</notes>
<contents>
<dir baseinstalldir="/" name="/">
<file baseinstalldir="/" name="src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc" role="src" />
<file baseinstalldir="/" name="src/core/ext/filters/client_channel/lb_policy/xds/cds.cc" role="src" />
<file baseinstalldir="/" name="src/core/ext/filters/client_channel/lb_policy/xds/eds.cc" role="src" />
- <file baseinstalldir="/" name="src/core/ext/filters/client_channel/lb_policy/xds/eds_drop.cc" role="src" />
<file baseinstalldir="/" name="src/core/ext/filters/client_channel/lb_policy/xds/xds.h" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc" role="src" />
<file baseinstalldir="/" name="src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc" role="src" />
<file baseinstalldir="/" name="src/core/ext/filters/client_channel/lb_policy_factory.h" role="src" />
<file baseinstalldir="/" name="src/core/ext/filters/client_channel/lb_policy_registry.cc" role="src" />
<file baseinstalldir="/" name="src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.h" role="src" />
<file baseinstalldir="/" name="src/core/ext/upb-generated/validate/validate.upb.c" role="src" />
<file baseinstalldir="/" name="src/core/ext/upb-generated/validate/validate.upb.h" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/upbdefs-generated/envoy/annotations/deprecation.upbdefs.c" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/upbdefs-generated/envoy/annotations/deprecation.upbdefs.h" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/upbdefs-generated/envoy/annotations/resource.upbdefs.c" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/upbdefs-generated/envoy/annotations/resource.upbdefs.h" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.c" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.h" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.c" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.h" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.h" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/upbdefs-generated/envoy/config/cluster/v3/filter.upbdefs.c" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/upbdefs-generated/envoy/config/cluster/v3/filter.upbdefs.h" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.c" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.h" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.c" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.h" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/upbdefs-generated/envoy/config/core/v3/backoff.upbdefs.c" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/upbdefs-generated/envoy/config/core/v3/backoff.upbdefs.h" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.c" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.h" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.c" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.h" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/upbdefs-generated/envoy/config/core/v3/event_service_config.upbdefs.c" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/upbdefs-generated/envoy/config/core/v3/event_service_config.upbdefs.h" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.c" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.h" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_service.upbdefs.c" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_service.upbdefs.h" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.c" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.h" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/upbdefs-generated/envoy/config/core/v3/http_uri.upbdefs.c" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/upbdefs-generated/envoy/config/core/v3/http_uri.upbdefs.h" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.h" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.c" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.h" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.c" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.h" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.c" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.h" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.c" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.h" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.c" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.h" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/load_report.upbdefs.c" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/load_report.upbdefs.h" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/upbdefs-generated/envoy/config/listener/v3/api_listener.upbdefs.c" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/upbdefs-generated/envoy/config/listener/v3/api_listener.upbdefs.h" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.c" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.h" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.c" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.h" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.c" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.h" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.c" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.h" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.h" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.c" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.h" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.c" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.h" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.h" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.c" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.h" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.h" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.c" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.h" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.h" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/upbdefs-generated/envoy/service/cluster/v3/cds.upbdefs.c" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/upbdefs-generated/envoy/service/cluster/v3/cds.upbdefs.h" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.c" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.h" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.c" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.h" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/upbdefs-generated/envoy/service/endpoint/v3/eds.upbdefs.c" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/upbdefs-generated/envoy/service/endpoint/v3/eds.upbdefs.h" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/upbdefs-generated/envoy/service/listener/v3/lds.upbdefs.c" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/upbdefs-generated/envoy/service/listener/v3/lds.upbdefs.h" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.c" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.h" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/upbdefs-generated/envoy/service/route/v3/rds.upbdefs.c" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/upbdefs-generated/envoy/service/route/v3/rds.upbdefs.h" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/upbdefs-generated/envoy/service/route/v3/srds.upbdefs.c" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/upbdefs-generated/envoy/service/route/v3/srds.upbdefs.h" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/upbdefs-generated/envoy/type/matcher/v3/metadata.upbdefs.c" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/upbdefs-generated/envoy/type/matcher/v3/metadata.upbdefs.h" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/upbdefs-generated/envoy/type/matcher/v3/number.upbdefs.c" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/upbdefs-generated/envoy/type/matcher/v3/number.upbdefs.h" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/upbdefs-generated/envoy/type/matcher/v3/path.upbdefs.c" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/upbdefs-generated/envoy/type/matcher/v3/path.upbdefs.h" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.c" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.h" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.c" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.h" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/upbdefs-generated/envoy/type/matcher/v3/value.upbdefs.c" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/upbdefs-generated/envoy/type/matcher/v3/value.upbdefs.h" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/upbdefs-generated/envoy/type/metadata/v3/metadata.upbdefs.c" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/upbdefs-generated/envoy/type/metadata/v3/metadata.upbdefs.h" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/upbdefs-generated/envoy/type/tracing/v3/custom_tag.upbdefs.c" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/upbdefs-generated/envoy/type/tracing/v3/custom_tag.upbdefs.h" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/upbdefs-generated/envoy/type/v3/http.upbdefs.c" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/upbdefs-generated/envoy/type/v3/http.upbdefs.h" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/upbdefs-generated/envoy/type/v3/percent.upbdefs.c" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/upbdefs-generated/envoy/type/v3/percent.upbdefs.h" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/upbdefs-generated/envoy/type/v3/range.upbdefs.c" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/upbdefs-generated/envoy/type/v3/range.upbdefs.h" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/upbdefs-generated/envoy/type/v3/semantic_version.upbdefs.c" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/upbdefs-generated/envoy/type/v3/semantic_version.upbdefs.h" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/upbdefs-generated/google/api/annotations.upbdefs.c" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/upbdefs-generated/google/api/annotations.upbdefs.h" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/upbdefs-generated/google/api/http.upbdefs.c" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/upbdefs-generated/google/api/http.upbdefs.h" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/upbdefs-generated/google/protobuf/any.upbdefs.c" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/upbdefs-generated/google/protobuf/any.upbdefs.h" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.c" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.h" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/upbdefs-generated/google/protobuf/duration.upbdefs.c" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/upbdefs-generated/google/protobuf/duration.upbdefs.h" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/upbdefs-generated/google/protobuf/empty.upbdefs.c" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/upbdefs-generated/google/protobuf/empty.upbdefs.h" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/upbdefs-generated/google/protobuf/struct.upbdefs.c" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/upbdefs-generated/google/protobuf/struct.upbdefs.h" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/upbdefs-generated/google/protobuf/timestamp.upbdefs.c" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/upbdefs-generated/google/protobuf/timestamp.upbdefs.h" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.c" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.h" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.c" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.h" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.c" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.h" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.c" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.h" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.c" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.h" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.c" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.h" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.c" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.h" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/upbdefs-generated/udpa/core/v1/authority.upbdefs.c" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/upbdefs-generated/udpa/core/v1/authority.upbdefs.h" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/upbdefs-generated/udpa/core/v1/collection_entry.upbdefs.c" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/upbdefs-generated/udpa/core/v1/collection_entry.upbdefs.h" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/upbdefs-generated/udpa/core/v1/context_params.upbdefs.c" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/upbdefs-generated/udpa/core/v1/context_params.upbdefs.h" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/upbdefs-generated/udpa/core/v1/resource.upbdefs.c" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/upbdefs-generated/udpa/core/v1/resource.upbdefs.h" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/upbdefs-generated/udpa/core/v1/resource_locator.upbdefs.c" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/upbdefs-generated/udpa/core/v1/resource_locator.upbdefs.h" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/upbdefs-generated/udpa/core/v1/resource_name.upbdefs.c" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/upbdefs-generated/udpa/core/v1/resource_name.upbdefs.h" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/upbdefs-generated/validate/validate.upbdefs.c" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/upbdefs-generated/validate/validate.upbdefs.h" role="src" />
<file baseinstalldir="/" name="src/core/ext/xds/certificate_provider_factory.h" role="src" />
<file baseinstalldir="/" name="src/core/ext/xds/certificate_provider_registry.cc" role="src" />
<file baseinstalldir="/" name="src/core/ext/xds/certificate_provider_registry.h" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/xds/certificate_provider_store.cc" role="src" />
<file baseinstalldir="/" name="src/core/ext/xds/certificate_provider_store.h" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/xds/file_watcher_certificate_provider_factory.cc" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/xds/file_watcher_certificate_provider_factory.h" role="src" />
<file baseinstalldir="/" name="src/core/ext/xds/google_mesh_ca_certificate_provider_factory.cc" role="src" />
<file baseinstalldir="/" name="src/core/ext/xds/google_mesh_ca_certificate_provider_factory.h" role="src" />
<file baseinstalldir="/" name="src/core/ext/xds/xds_api.cc" role="src" />
<file baseinstalldir="/" name="src/core/ext/xds/xds_api.h" role="src" />
<file baseinstalldir="/" name="src/core/ext/xds/xds_bootstrap.cc" role="src" />
<file baseinstalldir="/" name="src/core/ext/xds/xds_bootstrap.h" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/xds/xds_certificate_provider.cc" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/xds/xds_certificate_provider.h" role="src" />
<file baseinstalldir="/" name="src/core/ext/xds/xds_channel_args.h" role="src" />
<file baseinstalldir="/" name="src/core/ext/xds/xds_client.cc" role="src" />
<file baseinstalldir="/" name="src/core/ext/xds/xds_client.h" role="src" />
<file baseinstalldir="/" name="src/core/lib/gpr/tls_msvc.h" role="src" />
<file baseinstalldir="/" name="src/core/lib/gpr/tls_pthread.cc" role="src" />
<file baseinstalldir="/" name="src/core/lib/gpr/tls_pthread.h" role="src" />
+ <file baseinstalldir="/" name="src/core/lib/gpr/tls_stdcpp.h" role="src" />
<file baseinstalldir="/" name="src/core/lib/gpr/tmpfile.h" role="src" />
<file baseinstalldir="/" name="src/core/lib/gpr/tmpfile_msys.cc" role="src" />
<file baseinstalldir="/" name="src/core/lib/gpr/tmpfile_posix.cc" role="src" />
<file baseinstalldir="/" name="src/core/lib/gprpp/atomic.h" role="src" />
<file baseinstalldir="/" name="src/core/lib/gprpp/debug_location.h" role="src" />
<file baseinstalldir="/" name="src/core/lib/gprpp/dual_ref_counted.h" role="src" />
+ <file baseinstalldir="/" name="src/core/lib/gprpp/examine_stack.cc" role="src" />
+ <file baseinstalldir="/" name="src/core/lib/gprpp/examine_stack.h" role="src" />
<file baseinstalldir="/" name="src/core/lib/gprpp/fork.cc" role="src" />
<file baseinstalldir="/" name="src/core/lib/gprpp/fork.h" role="src" />
<file baseinstalldir="/" name="src/core/lib/gprpp/global_config.h" role="src" />
<file baseinstalldir="/" name="src/core/lib/gprpp/orphanable.h" role="src" />
<file baseinstalldir="/" name="src/core/lib/gprpp/ref_counted.h" role="src" />
<file baseinstalldir="/" name="src/core/lib/gprpp/ref_counted_ptr.h" role="src" />
+ <file baseinstalldir="/" name="src/core/lib/gprpp/stat.h" role="src" />
+ <file baseinstalldir="/" name="src/core/lib/gprpp/stat_posix.cc" role="src" />
+ <file baseinstalldir="/" name="src/core/lib/gprpp/stat_windows.cc" role="src" />
<file baseinstalldir="/" name="src/core/lib/gprpp/sync.h" role="src" />
<file baseinstalldir="/" name="src/core/lib/gprpp/thd.h" role="src" />
<file baseinstalldir="/" name="src/core/lib/gprpp/thd_posix.cc" role="src" />
<file baseinstalldir="/" name="src/core/lib/security/authorization/mock_cel/cel_value.h" role="src" />
<file baseinstalldir="/" name="src/core/lib/security/authorization/mock_cel/evaluator_core.h" role="src" />
<file baseinstalldir="/" name="src/core/lib/security/authorization/mock_cel/flat_expr_builder.h" role="src" />
- <file baseinstalldir="/" name="src/core/lib/security/authorization/mock_cel/statusor.h" role="src" />
- <file baseinstalldir="/" name="src/core/lib/security/certificate_provider.h" role="src" />
<file baseinstalldir="/" name="src/core/lib/security/context/security_context.cc" role="src" />
<file baseinstalldir="/" name="src/core/lib/security/context/security_context.h" role="src" />
<file baseinstalldir="/" name="src/core/lib/security/credentials/alts/alts_credentials.cc" role="src" />
<file baseinstalldir="/" name="src/core/lib/security/credentials/credentials.cc" role="src" />
<file baseinstalldir="/" name="src/core/lib/security/credentials/credentials.h" role="src" />
<file baseinstalldir="/" name="src/core/lib/security/credentials/credentials_metadata.cc" role="src" />
+ <file baseinstalldir="/" name="src/core/lib/security/credentials/external/aws_request_signer.cc" role="src" />
+ <file baseinstalldir="/" name="src/core/lib/security/credentials/external/aws_request_signer.h" role="src" />
+ <file baseinstalldir="/" name="src/core/lib/security/credentials/external/external_account_credentials.cc" role="src" />
+ <file baseinstalldir="/" name="src/core/lib/security/credentials/external/external_account_credentials.h" role="src" />
+ <file baseinstalldir="/" name="src/core/lib/security/credentials/external/file_external_account_credentials.cc" role="src" />
+ <file baseinstalldir="/" name="src/core/lib/security/credentials/external/file_external_account_credentials.h" role="src" />
+ <file baseinstalldir="/" name="src/core/lib/security/credentials/external/url_external_account_credentials.cc" role="src" />
+ <file baseinstalldir="/" name="src/core/lib/security/credentials/external/url_external_account_credentials.h" role="src" />
<file baseinstalldir="/" name="src/core/lib/security/credentials/fake/fake_credentials.cc" role="src" />
<file baseinstalldir="/" name="src/core/lib/security/credentials/fake/fake_credentials.h" role="src" />
<file baseinstalldir="/" name="src/core/lib/security/credentials/google_default/credentials_generic.cc" role="src" />
<file baseinstalldir="/" name="src/core/lib/security/credentials/google_default/google_default_credentials.h" role="src" />
<file baseinstalldir="/" name="src/core/lib/security/credentials/iam/iam_credentials.cc" role="src" />
<file baseinstalldir="/" name="src/core/lib/security/credentials/iam/iam_credentials.h" role="src" />
+ <file baseinstalldir="/" name="src/core/lib/security/credentials/insecure/insecure_credentials.cc" role="src" />
<file baseinstalldir="/" name="src/core/lib/security/credentials/jwt/json_token.cc" role="src" />
<file baseinstalldir="/" name="src/core/lib/security/credentials/jwt/json_token.h" role="src" />
<file baseinstalldir="/" name="src/core/lib/security/credentials/jwt/jwt_credentials.cc" role="src" />
<file baseinstalldir="/" name="src/core/lib/security/credentials/ssl/ssl_credentials.h" role="src" />
<file baseinstalldir="/" name="src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc" role="src" />
<file baseinstalldir="/" name="src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h" role="src" />
+ <file baseinstalldir="/" name="src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc" role="src" />
+ <file baseinstalldir="/" name="src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h" role="src" />
<file baseinstalldir="/" name="src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc" role="src" />
<file baseinstalldir="/" name="src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h" role="src" />
<file baseinstalldir="/" name="src/core/lib/security/credentials/tls/tls_credentials.cc" role="src" />
<file baseinstalldir="/" name="src/core/lib/security/security_connector/alts/alts_security_connector.h" role="src" />
<file baseinstalldir="/" name="src/core/lib/security/security_connector/fake/fake_security_connector.cc" role="src" />
<file baseinstalldir="/" name="src/core/lib/security/security_connector/fake/fake_security_connector.h" role="src" />
+ <file baseinstalldir="/" name="src/core/lib/security/security_connector/insecure/insecure_security_connector.cc" role="src" />
+ <file baseinstalldir="/" name="src/core/lib/security/security_connector/insecure/insecure_security_connector.h" role="src" />
<file baseinstalldir="/" name="src/core/lib/security/security_connector/load_system_roots.h" role="src" />
<file baseinstalldir="/" name="src/core/lib/security/security_connector/load_system_roots_fallback.cc" role="src" />
<file baseinstalldir="/" name="src/core/lib/security/security_connector/load_system_roots_linux.cc" role="src" />
<file baseinstalldir="/" name="third_party/abseil-cpp/absl/base/casts.h" role="src" />
<file baseinstalldir="/" name="third_party/abseil-cpp/absl/base/config.h" role="src" />
<file baseinstalldir="/" name="third_party/abseil-cpp/absl/base/const_init.h" role="src" />
- <file baseinstalldir="/" name="third_party/abseil-cpp/absl/base/dynamic_annotations.cc" role="src" />
<file baseinstalldir="/" name="third_party/abseil-cpp/absl/base/dynamic_annotations.h" role="src" />
<file baseinstalldir="/" name="third_party/abseil-cpp/absl/base/internal/atomic_hook.h" role="src" />
<file baseinstalldir="/" name="third_party/abseil-cpp/absl/base/internal/bits.h" role="src" />
<file baseinstalldir="/" name="third_party/abseil-cpp/absl/base/internal/cycleclock.cc" role="src" />
<file baseinstalldir="/" name="third_party/abseil-cpp/absl/base/internal/cycleclock.h" role="src" />
<file baseinstalldir="/" name="third_party/abseil-cpp/absl/base/internal/direct_mmap.h" role="src" />
+ <file baseinstalldir="/" name="third_party/abseil-cpp/absl/base/internal/dynamic_annotations.h" role="src" />
<file baseinstalldir="/" name="third_party/abseil-cpp/absl/base/internal/endian.h" role="src" />
<file baseinstalldir="/" name="third_party/abseil-cpp/absl/base/internal/errno_saver.h" role="src" />
<file baseinstalldir="/" name="third_party/abseil-cpp/absl/base/internal/exponential_biased.cc" role="src" />
<file baseinstalldir="/" name="third_party/abseil-cpp/absl/debugging/stacktrace.h" role="src" />
<file baseinstalldir="/" name="third_party/abseil-cpp/absl/debugging/symbolize.cc" role="src" />
<file baseinstalldir="/" name="third_party/abseil-cpp/absl/debugging/symbolize.h" role="src" />
+ <file baseinstalldir="/" name="third_party/abseil-cpp/absl/debugging/symbolize_darwin.inc" role="src" />
<file baseinstalldir="/" name="third_party/abseil-cpp/absl/debugging/symbolize_elf.inc" role="src" />
<file baseinstalldir="/" name="third_party/abseil-cpp/absl/debugging/symbolize_unimplemented.inc" role="src" />
<file baseinstalldir="/" name="third_party/abseil-cpp/absl/debugging/symbolize_win32.inc" role="src" />
+ <file baseinstalldir="/" name="third_party/abseil-cpp/absl/functional/bind_front.h" role="src" />
<file baseinstalldir="/" name="third_party/abseil-cpp/absl/functional/function_ref.h" role="src" />
+ <file baseinstalldir="/" name="third_party/abseil-cpp/absl/functional/internal/front_binder.h" role="src" />
<file baseinstalldir="/" name="third_party/abseil-cpp/absl/functional/internal/function_ref.h" role="src" />
<file baseinstalldir="/" name="third_party/abseil-cpp/absl/hash/hash.h" role="src" />
<file baseinstalldir="/" name="third_party/abseil-cpp/absl/hash/internal/city.cc" role="src" />
<file baseinstalldir="/" name="third_party/abseil-cpp/absl/numeric/int128.h" role="src" />
<file baseinstalldir="/" name="third_party/abseil-cpp/absl/numeric/int128_have_intrinsic.inc" role="src" />
<file baseinstalldir="/" name="third_party/abseil-cpp/absl/numeric/int128_no_intrinsic.inc" role="src" />
+ <file baseinstalldir="/" name="third_party/abseil-cpp/absl/status/internal/status_internal.h" role="src" />
<file baseinstalldir="/" name="third_party/abseil-cpp/absl/status/status.cc" role="src" />
<file baseinstalldir="/" name="third_party/abseil-cpp/absl/status/status.h" role="src" />
<file baseinstalldir="/" name="third_party/abseil-cpp/absl/status/status_payload_printer.cc" role="src" />
<file baseinstalldir="/" name="third_party/boringssl-with-bazel/src/crypto/trust_token/internal.h" role="src" />
<file baseinstalldir="/" name="third_party/boringssl-with-bazel/src/crypto/trust_token/pmbtoken.c" role="src" />
<file baseinstalldir="/" name="third_party/boringssl-with-bazel/src/crypto/trust_token/trust_token.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl-with-bazel/src/crypto/trust_token/voprf.c" role="src" />
<file baseinstalldir="/" name="third_party/boringssl-with-bazel/src/crypto/x509/a_digest.c" role="src" />
<file baseinstalldir="/" name="third_party/boringssl-with-bazel/src/crypto/x509/a_sign.c" role="src" />
<file baseinstalldir="/" name="third_party/boringssl-with-bazel/src/crypto/x509/a_strex.c" role="src" />
<file baseinstalldir="/" name="third_party/re2/util/util.h" role="src" />
<file baseinstalldir="/" name="third_party/upb/upb/decode.c" role="src" />
<file baseinstalldir="/" name="third_party/upb/upb/decode.h" role="src" />
+ <file baseinstalldir="/" name="third_party/upb/upb/def.c" role="src" />
+ <file baseinstalldir="/" name="third_party/upb/upb/def.h" role="src" />
+ <file baseinstalldir="/" name="third_party/upb/upb/def.hpp" role="src" />
<file baseinstalldir="/" name="third_party/upb/upb/encode.c" role="src" />
<file baseinstalldir="/" name="third_party/upb/upb/encode.h" role="src" />
<file baseinstalldir="/" name="third_party/upb/upb/msg.c" role="src" />
<file baseinstalldir="/" name="third_party/upb/upb/port.c" role="src" />
<file baseinstalldir="/" name="third_party/upb/upb/port_def.inc" role="src" />
<file baseinstalldir="/" name="third_party/upb/upb/port_undef.inc" role="src" />
+ <file baseinstalldir="/" name="third_party/upb/upb/reflection.c" role="src" />
+ <file baseinstalldir="/" name="third_party/upb/upb/reflection.h" role="src" />
<file baseinstalldir="/" name="third_party/upb/upb/table.c" role="src" />
<file baseinstalldir="/" name="third_party/upb/upb/table.int.h" role="src" />
+ <file baseinstalldir="/" name="third_party/upb/upb/text_encode.c" role="src" />
+ <file baseinstalldir="/" name="third_party/upb/upb/text_encode.h" role="src" />
<file baseinstalldir="/" name="third_party/upb/upb/upb.c" role="src" />
<file baseinstalldir="/" name="third_party/upb/upb/upb.h" role="src" />
<file baseinstalldir="/" name="third_party/upb/upb/upb.hpp" role="src" />
<dependencies>
<required>
<php>
- <min>5.5.0</min>
+ <min>7.0.0</min>
</php>
<pearinstaller>
<min>1.4.0</min>
BUILD_WITH_SYSTEM_CARES = os.environ.get('GRPC_PYTHON_BUILD_SYSTEM_CARES',
False)
+# Export this variable to use the system installation of re2. You need to
+# have the header files installed (in /usr/include/re2) and during
+# runtime, the shared library must be installed
+BUILD_WITH_SYSTEM_RE2 = os.environ.get('GRPC_PYTHON_BUILD_SYSTEM_RE2', False)
+
# For local development use only: This skips building gRPC Core and its
# dependencies, including protobuf and boringssl. This allows "incremental"
# compilation by first building gRPC Core using make, then building only the
CORE_C_FILES = filter(lambda x: 'third_party/cares' not in x, CORE_C_FILES)
CARES_INCLUDE = (os.path.join('/usr', 'include'),)
+if BUILD_WITH_SYSTEM_RE2:
+ CORE_C_FILES = filter(lambda x: 'third_party/re2' not in x, CORE_C_FILES)
+ RE2_INCLUDE = (os.path.join('/usr', 'include', 're2'),)
+
EXTENSION_INCLUDE_DIRECTORIES = ((PYTHON_STEM,) + CORE_INCLUDE + ABSL_INCLUDE +
ADDRESS_SORTING_INCLUDE + CARES_INCLUDE +
RE2_INCLUDE + SSL_INCLUDE + UPB_INCLUDE +
EXTENSION_LIBRARIES += ('z',)
if BUILD_WITH_SYSTEM_CARES:
EXTENSION_LIBRARIES += ('cares',)
+if BUILD_WITH_SYSTEM_RE2:
+ EXTENSION_LIBRARIES += ('re2',)
DEFINE_MACROS = (('_WIN32_WINNT', 0x600),)
asm_files = []
asm_key = ''
-if BUILD_WITH_BORING_SSL_ASM:
+if BUILD_WITH_BORING_SSL_ASM and not BUILD_WITH_SYSTEM_OPENSSL:
LINUX_X86_64 = 'linux-x86_64'
LINUX_ARM = 'linux-arm'
if LINUX_X86_64 == util.get_platform():
DEFINE_MACROS += (('GRPC_POSIX_FORK_ALLOW_PTHREAD_ATFORK', 1),)
# By default, Python3 distutils enforces compatibility of
-# c plugins (.so files) with the OSX version Python3 was built with.
-# For Python3.4, this is OSX 10.6, but we need Thread Local Support (__thread)
-if 'darwin' in sys.platform and PY3:
+# c plugins (.so files) with the OSX version Python was built with.
+# We need OSX 10.10, the oldest which supports C++ thread_local.
+if 'darwin' in sys.platform:
mac_target = sysconfig.get_config_var('MACOSX_DEPLOYMENT_TARGET')
if mac_target and (pkg_resources.parse_version(mac_target) <
- pkg_resources.parse_version('10.7.0')):
- os.environ['MACOSX_DEPLOYMENT_TARGET'] = '10.7'
+ pkg_resources.parse_version('10.10.0')):
+ os.environ['MACOSX_DEPLOYMENT_TARGET'] = '10.10'
os.environ['_PYTHON_HOST_PLATFORM'] = re.sub(
- r'macosx-[0-9]+\.[0-9]+-(.+)', r'macosx-10.7-\1',
+ r'macosx-[0-9]+\.[0-9]+-(.+)', r'macosx-10.10-\1',
util.get_platform())
--- /dev/null
+../include/grpc
\ No newline at end of file
--- /dev/null
+../include/grpcpp
\ No newline at end of file
name: absl/base:core_headers
src: []
- cmake_target: absl::dynamic_annotations
- deps: []
+ deps:
+ - absl/base:config
+ - absl/base:core_headers
headers:
- third_party/abseil-cpp/absl/base/dynamic_annotations.h
+ - third_party/abseil-cpp/absl/base/internal/dynamic_annotations.h
name: absl/base:dynamic_annotations
- src:
- - third_party/abseil-cpp/absl/base/dynamic_annotations.cc
+ src: []
- cmake_target: absl::endian
deps:
- absl/base:config
name: absl/base:exponential_biased
src:
- third_party/abseil-cpp/absl/base/internal/exponential_biased.cc
+- cmake_target: absl::fast_type_id
+ deps:
+ - absl/base:config
+ headers:
+ - third_party/abseil-cpp/absl/base/internal/fast_type_id.h
+ name: absl/base:fast_type_id
+ src: []
- cmake_target: absl::log_severity
deps:
- absl/base:config
name: absl/base:spinlock_wait
src:
- third_party/abseil-cpp/absl/base/internal/spinlock_wait.cc
+- cmake_target: absl::strerror
+ deps:
+ - absl/base:config
+ - absl/base:core_headers
+ - absl/base:errno_saver
+ headers:
+ - third_party/abseil-cpp/absl/base/internal/strerror.h
+ name: absl/base:strerror
+ src:
+ - third_party/abseil-cpp/absl/base/internal/strerror.cc
- cmake_target: absl::throw_delegate
deps:
- absl/base:config
- absl/container:layout
- absl/memory:memory
- absl/meta:type_traits
+ - absl/strings:cord
- absl/strings:strings
- absl/types:compare
- absl/utility:utility
src: []
- cmake_target: absl::container_memory
deps:
+ - absl/base:config
- absl/memory:memory
+ - absl/meta:type_traits
- absl/utility:utility
headers:
- third_party/abseil-cpp/absl/container/internal/container_memory.h
- cmake_target: absl::fixed_array
deps:
- absl/algorithm:algorithm
+ - absl/base:config
- absl/base:core_headers
- absl/base:dynamic_annotations
- absl/base:throw_delegate
deps:
- absl/base:config
- absl/hash:hash
+ - absl/strings:cord
- absl/strings:strings
headers:
- third_party/abseil-cpp/absl/container/internal/hash_function_defaults.h
src: []
- cmake_target: absl::layout
deps:
+ - absl/base:config
- absl/base:core_headers
- absl/meta:type_traits
- absl/strings:strings
- absl/base:raw_logging_internal
- absl/debugging:debugging_internal
- absl/debugging:demangle_internal
+ - absl/strings:strings
headers:
- third_party/abseil-cpp/absl/debugging/internal/symbolize.h
- third_party/abseil-cpp/absl/debugging/symbolize.h
+ - third_party/abseil-cpp/absl/debugging/symbolize_darwin.inc
- third_party/abseil-cpp/absl/debugging/symbolize_elf.inc
- third_party/abseil-cpp/absl/debugging/symbolize_unimplemented.inc
- third_party/abseil-cpp/absl/debugging/symbolize_win32.inc
name: absl/debugging:symbolize
src:
- third_party/abseil-cpp/absl/debugging/symbolize.cc
+- cmake_target: absl::flags_commandlineflag
+ deps:
+ - absl/base:config
+ - absl/base:fast_type_id
+ - absl/flags:commandlineflag_internal
+ - absl/strings:strings
+ - absl/types:optional
+ headers:
+ - third_party/abseil-cpp/absl/flags/commandlineflag.h
+ name: absl/flags:commandlineflag
+ src:
+ - third_party/abseil-cpp/absl/flags/commandlineflag.cc
+- cmake_target: absl::flags_commandlineflag_internal
+ deps:
+ - absl/base:config
+ - absl/base:fast_type_id
+ headers:
+ - third_party/abseil-cpp/absl/flags/internal/commandlineflag.h
+ name: absl/flags:commandlineflag_internal
+ src:
+ - third_party/abseil-cpp/absl/flags/internal/commandlineflag.cc
- cmake_target: absl::flags_config
deps:
- absl/base:config
- absl/base:core_headers
- absl/flags:config
- absl/flags:flag_internal
- - absl/flags:handle
- - absl/flags:marshalling
- - absl/flags:registry
+ - absl/flags:reflection
- absl/strings:strings
headers:
- third_party/abseil-cpp/absl/flags/declare.h
- absl/base:base
- absl/base:config
- absl/base:core_headers
+ - absl/flags:commandlineflag
+ - absl/flags:commandlineflag_internal
- absl/flags:config
- - absl/flags:handle
- - absl/flags:registry
+ - absl/flags:marshalling
+ - absl/flags:reflection
- absl/memory:memory
+ - absl/meta:type_traits
- absl/strings:strings
- absl/synchronization:synchronization
+ - absl/utility:utility
headers:
- third_party/abseil-cpp/absl/flags/internal/flag.h
name: absl/flags:flag_internal
src:
- third_party/abseil-cpp/absl/flags/internal/flag.cc
-- cmake_target: absl::flags_handle
- deps:
- - absl/base:config
- - absl/base:core_headers
- - absl/flags:config
- - absl/flags:marshalling
- - absl/strings:strings
- - absl/types:optional
- headers:
- - third_party/abseil-cpp/absl/flags/internal/commandlineflag.h
- name: absl/flags:handle
- src: []
- cmake_target: absl::flags_marshalling
deps:
- absl/base:config
deps:
- absl/base:config
- absl/base:core_headers
+ - absl/flags:commandlineflag
+ - absl/flags:commandlineflag_internal
- absl/flags:config
- absl/flags:flag
- absl/flags:flag_internal
- - absl/flags:handle
+ - absl/flags:private_handle_accessor
- absl/flags:program_name
- - absl/flags:registry
+ - absl/flags:reflection
- absl/flags:usage
- absl/flags:usage_internal
- absl/strings:strings
- third_party/abseil-cpp/absl/flags/internal/path_util.h
name: absl/flags:path_util
src: []
+- cmake_target: absl::flags_private_handle_accessor
+ deps:
+ - absl/base:config
+ - absl/flags:commandlineflag
+ - absl/flags:commandlineflag_internal
+ - absl/strings:strings
+ headers:
+ - third_party/abseil-cpp/absl/flags/internal/private_handle_accessor.h
+ name: absl/flags:private_handle_accessor
+ src:
+ - third_party/abseil-cpp/absl/flags/internal/private_handle_accessor.cc
- cmake_target: absl::flags_program_name
deps:
- absl/base:config
name: absl/flags:program_name
src:
- third_party/abseil-cpp/absl/flags/internal/program_name.cc
-- cmake_target: absl::flags_registry
+- cmake_target: absl::flags_reflection
deps:
- absl/base:config
- absl/base:core_headers
- - absl/base:raw_logging_internal
+ - absl/container:flat_hash_map
+ - absl/flags:commandlineflag
+ - absl/flags:commandlineflag_internal
- absl/flags:config
- - absl/flags:handle
+ - absl/flags:private_handle_accessor
- absl/strings:strings
- absl/synchronization:synchronization
headers:
- third_party/abseil-cpp/absl/flags/internal/registry.h
- - third_party/abseil-cpp/absl/flags/internal/type_erased.h
- name: absl/flags:registry
+ - third_party/abseil-cpp/absl/flags/reflection.h
+ name: absl/flags:reflection
src:
- - third_party/abseil-cpp/absl/flags/internal/registry.cc
- - third_party/abseil-cpp/absl/flags/internal/type_erased.cc
+ - third_party/abseil-cpp/absl/flags/reflection.cc
- cmake_target: absl::flags_usage
deps:
- absl/base:config
deps:
- absl/base:config
- absl/base:core_headers
+ - absl/flags:commandlineflag
- absl/flags:config
- absl/flags:flag
- absl/flags:flag_internal
- - absl/flags:handle
- absl/flags:path_util
+ - absl/flags:private_handle_accessor
- absl/flags:program_name
- - absl/flags:registry
+ - absl/flags:reflection
- absl/strings:strings
headers:
- third_party/abseil-cpp/absl/flags/internal/usage.h
src: []
- cmake_target: absl::int128
deps:
+ - absl/base:bits
- absl/base:config
- absl/base:core_headers
headers:
- cmake_target: absl::random_internal_distribution_caller
deps:
- absl/base:config
+ - absl/base:fast_type_id
+ - absl/utility:utility
headers:
- third_party/abseil-cpp/absl/random/internal/distribution_caller.h
name: absl/random/internal:distribution_caller
src: []
-- cmake_target: absl::random_internal_distributions
- deps:
- - absl/base:base
- - absl/meta:type_traits
- - absl/random/internal:distribution_caller
- - absl/random/internal:traits
- - absl/random/internal:uniform_helper
- - absl/strings:strings
- headers:
- - third_party/abseil-cpp/absl/random/internal/distributions.h
- name: absl/random/internal:distributions
- src: []
- cmake_target: absl::random_internal_fast_uniform_bits
deps:
- absl/base:config
+ - absl/meta:type_traits
headers:
- third_party/abseil-cpp/absl/random/internal/fast_uniform_bits.h
name: absl/random/internal:fast_uniform_bits
- third_party/abseil-cpp/absl/random/internal/iostream_state_saver.h
name: absl/random/internal:iostream_state_saver
src: []
-- cmake_target: absl::random_internal_mocking_bit_gen_base
+- cmake_target: absl::random_internal_mock_helpers
deps:
- - absl/random:random
- - absl/strings:strings
+ - absl/base:fast_type_id
+ - absl/types:optional
headers:
- - third_party/abseil-cpp/absl/random/internal/mocking_bit_gen_base.h
- name: absl/random/internal:mocking_bit_gen_base
+ - third_party/abseil-cpp/absl/random/internal/mock_helpers.h
+ name: absl/random/internal:mock_helpers
src: []
- cmake_target: ''
deps:
+ - absl/base:config
- absl/base:core_headers
- absl/base:raw_logging_internal
- absl/random/internal:platform
- absl/random/internal:pool_urbg
- absl/random/internal:salted_seed_seq
- absl/random/internal:seed_material
- - absl/strings:strings
- absl/types:optional
- absl/types:span
headers:
- absl/base:config
headers:
- third_party/abseil-cpp/absl/random/internal/platform.h
- - third_party/abseil-cpp/absl/random/internal/randen-keys.inc
- third_party/abseil-cpp/absl/random/internal/randen_traits.h
name: absl/random/internal:platform
- src: []
+ src:
+ - third_party/abseil-cpp/absl/random/internal/randen_round_keys.cc
- cmake_target: absl::random_internal_pool_urbg
deps:
- absl/base:base
src: []
- cmake_target: absl::random_internal_uniform_helper
deps:
+ - absl/base:config
- absl/meta:type_traits
+ - absl/random/internal:traits
headers:
- third_party/abseil-cpp/absl/random/internal/uniform_helper.h
name: absl/random/internal:uniform_helper
- cmake_target: absl::random_bit_gen_ref
deps:
- absl/base:core_headers
+ - absl/base:fast_type_id
- absl/meta:type_traits
- absl/random/internal:distribution_caller
- absl/random/internal:fast_uniform_bits
- - absl/random/internal:mocking_bit_gen_base
+ - absl/random:random
headers:
- third_party/abseil-cpp/absl/random/bit_gen_ref.h
name: absl/random:bit_gen_ref
- absl/base:config
- absl/base:core_headers
- absl/meta:type_traits
- - absl/random/internal:distributions
+ - absl/random/internal:distribution_caller
- absl/random/internal:fast_uniform_bits
- absl/random/internal:fastmath
- absl/random/internal:generate_real
- absl/random/internal:uniform_helper
- absl/random/internal:wide_multiply
- absl/strings:strings
- - absl/types:span
headers:
- third_party/abseil-cpp/absl/random/bernoulli_distribution.h
- third_party/abseil-cpp/absl/random/beta_distribution.h
- third_party/abseil-cpp/absl/random/discrete_distribution.h
- - third_party/abseil-cpp/absl/random/distribution_format_traits.h
- third_party/abseil-cpp/absl/random/distributions.h
- third_party/abseil-cpp/absl/random/exponential_distribution.h
- third_party/abseil-cpp/absl/random/gaussian_distribution.h
- third_party/abseil-cpp/absl/random/seed_sequences.cc
- cmake_target: absl::status
deps:
+ - absl/base:atomic_hook
- absl/base:config
- absl/base:core_headers
- absl/base:raw_logging_internal
- absl/strings:strings
- absl/types:optional
headers:
+ - third_party/abseil-cpp/absl/status/internal/status_internal.h
- third_party/abseil-cpp/absl/status/status.h
- third_party/abseil-cpp/absl/status/status_payload_printer.h
name: absl/status:status
src:
- third_party/abseil-cpp/absl/status/status.cc
- third_party/abseil-cpp/absl/status/status_payload_printer.cc
+- cmake_target: absl::statusor
+ deps:
+ - absl/base:core_headers
+ - absl/base:raw_logging_internal
+ - absl/meta:type_traits
+ - absl/status:status
+ - absl/strings:strings
+ - absl/types:variant
+ - absl/utility:utility
+ headers:
+ - third_party/abseil-cpp/absl/status/internal/statusor_internal.h
+ - third_party/abseil-cpp/absl/status/statusor.h
+ name: absl/status:statusor
+ src:
+ - third_party/abseil-cpp/absl/status/statusor.cc
- cmake_target: absl::cord
deps:
- absl/base:base
- - absl/base:base_internal
- absl/base:core_headers
- absl/base:endian
- absl/base:raw_logging_internal
- absl/strings:internal
- absl/strings:str_format
- absl/strings:strings
+ - absl/types:optional
headers:
- third_party/abseil-cpp/absl/strings/cord.h
name: absl/strings:cord
- third_party/abseil-cpp/absl/strings/cord.cc
- cmake_target: absl::cord
deps:
+ - absl/base:base_internal
+ - absl/container:compressed_tuple
- absl/meta:type_traits
- absl/strings:strings
headers:
src: []
- cmake_target: absl::str_format_internal
deps:
+ - absl/base:bits
- absl/base:config
- absl/base:core_headers
+ - absl/functional:function_ref
- absl/meta:type_traits
- absl/numeric:int128
- absl/strings:strings
+ - absl/types:optional
- absl/types:span
headers:
- third_party/abseil-cpp/absl/strings/internal/str_format/arg.h
deps:
- absl/base:config
- absl/base:core_headers
+ - absl/base:fast_type_id
- absl/meta:type_traits
- absl/types:bad_any_cast
- absl/utility:utility
# See the License for the specific language governing permissions and
# limitations under the License.
-from __future__ import print_function
import os
import sys
import glob
-// generated by generate_boringssl_prefix_header.sh on BoringSSL commit: 88aeb757f1a415c71fb4cbf5af936ecae4bc8179
+// generated by generate_boringssl_prefix_header.sh on BoringSSL commit: 29c6e0e27268f5a43e039cd2ed4e849d6b736fc1
// Copyright (c) 2018, Google Inc.
//
#define SSL_accept BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_accept)
#define SSL_add0_chain_cert BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_add0_chain_cert)
#define SSL_add1_chain_cert BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_add1_chain_cert)
+#define SSL_add_application_settings BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_add_application_settings)
#define SSL_add_client_CA BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_add_client_CA)
#define SSL_add_file_cert_subjects_to_stack BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_add_file_cert_subjects_to_stack)
#define SSL_alert_desc_string BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_alert_desc_string)
#define SSL_dup_CA_list BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_dup_CA_list)
#define SSL_early_callback_ctx_extension_get BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_early_callback_ctx_extension_get)
#define SSL_early_data_accepted BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_early_data_accepted)
+#define SSL_early_data_reason_string BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_early_data_reason_string)
#define SSL_enable_ocsp_stapling BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_enable_ocsp_stapling)
#define SSL_enable_signed_cert_timestamps BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_enable_signed_cert_timestamps)
#define SSL_enable_tls_channel_id BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_enable_tls_channel_id)
#define SSL_get0_next_proto_negotiated BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_get0_next_proto_negotiated)
#define SSL_get0_ocsp_response BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_get0_ocsp_response)
#define SSL_get0_param BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_get0_param)
+#define SSL_get0_peer_application_settings BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_get0_peer_application_settings)
#define SSL_get0_peer_certificates BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_get0_peer_certificates)
#define SSL_get0_peer_delegation_algorithms BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_get0_peer_delegation_algorithms)
#define SSL_get0_peer_verify_algorithms BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_get0_peer_verify_algorithms)
#define SSL_get_wbio BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_get_wbio)
#define SSL_get_wfd BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_get_wfd)
#define SSL_get_write_sequence BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_get_write_sequence)
+#define SSL_has_application_settings BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_has_application_settings)
#define SSL_in_early_data BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_in_early_data)
#define SSL_in_false_start BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_in_false_start)
#define SSL_in_init BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_in_init)
#define BIO_set_mem_eof_return BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, BIO_set_mem_eof_return)
#define BIO_set_nbio BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, BIO_set_nbio)
#define BIO_set_retry_read BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, BIO_set_retry_read)
+#define BIO_set_retry_reason BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, BIO_set_retry_reason)
#define BIO_set_retry_special BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, BIO_set_retry_special)
#define BIO_set_retry_write BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, BIO_set_retry_write)
#define BIO_set_shutdown BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, BIO_set_shutdown)
#define CRYPTO_cleanup_all_ex_data BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CRYPTO_cleanup_all_ex_data)
#define CRYPTO_ctr128_encrypt BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CRYPTO_ctr128_encrypt)
#define CRYPTO_ctr128_encrypt_ctr32 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CRYPTO_ctr128_encrypt_ctr32)
-#define CRYPTO_fork_detect_ignore_madv_wipeonfork_for_testing BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CRYPTO_fork_detect_ignore_madv_wipeonfork_for_testing)
#define CRYPTO_free_ex_data BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CRYPTO_free_ex_data)
#define CRYPTO_gcm128_aad BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CRYPTO_gcm128_aad)
#define CRYPTO_gcm128_decrypt BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CRYPTO_gcm128_decrypt)
#define EVP_aead_aes_128_ccm_bluetooth_8 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, EVP_aead_aes_128_ccm_bluetooth_8)
#define EVP_aead_aes_128_ctr_hmac_sha256 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, EVP_aead_aes_128_ctr_hmac_sha256)
#define EVP_aead_aes_128_gcm BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, EVP_aead_aes_128_gcm)
+#define EVP_aead_aes_128_gcm_randnonce BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, EVP_aead_aes_128_gcm_randnonce)
#define EVP_aead_aes_128_gcm_siv BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, EVP_aead_aes_128_gcm_siv)
#define EVP_aead_aes_128_gcm_tls12 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, EVP_aead_aes_128_gcm_tls12)
#define EVP_aead_aes_128_gcm_tls13 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, EVP_aead_aes_128_gcm_tls13)
#define EVP_aead_aes_256_cbc_sha384_tls BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, EVP_aead_aes_256_cbc_sha384_tls)
#define EVP_aead_aes_256_ctr_hmac_sha256 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, EVP_aead_aes_256_ctr_hmac_sha256)
#define EVP_aead_aes_256_gcm BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, EVP_aead_aes_256_gcm)
+#define EVP_aead_aes_256_gcm_randnonce BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, EVP_aead_aes_256_gcm_randnonce)
#define EVP_aead_aes_256_gcm_siv BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, EVP_aead_aes_256_gcm_siv)
#define EVP_aead_aes_256_gcm_tls12 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, EVP_aead_aes_256_gcm_tls12)
#define EVP_aead_aes_256_gcm_tls13 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, EVP_aead_aes_256_gcm_tls13)
#define PKCS8_parse_encrypted_private_key BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, PKCS8_parse_encrypted_private_key)
#define PKCS8_pkey_get0 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, PKCS8_pkey_get0)
#define PKCS8_pkey_set0 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, PKCS8_pkey_set0)
-#define PMBTOKEN_PRETOKEN_free BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, PMBTOKEN_PRETOKEN_free)
#define POLICYINFO_free BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, POLICYINFO_free)
#define POLICYINFO_it BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, POLICYINFO_it)
#define POLICYINFO_new BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, POLICYINFO_new)
#define TRUST_TOKEN_ISSUER_issue BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, TRUST_TOKEN_ISSUER_issue)
#define TRUST_TOKEN_ISSUER_new BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, TRUST_TOKEN_ISSUER_new)
#define TRUST_TOKEN_ISSUER_redeem BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, TRUST_TOKEN_ISSUER_redeem)
+#define TRUST_TOKEN_ISSUER_redeem_raw BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, TRUST_TOKEN_ISSUER_redeem_raw)
#define TRUST_TOKEN_ISSUER_set_metadata_key BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, TRUST_TOKEN_ISSUER_set_metadata_key)
#define TRUST_TOKEN_ISSUER_set_srr_key BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, TRUST_TOKEN_ISSUER_set_srr_key)
+#define TRUST_TOKEN_PRETOKEN_free BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, TRUST_TOKEN_PRETOKEN_free)
#define TRUST_TOKEN_decode_private_metadata BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, TRUST_TOKEN_decode_private_metadata)
#define TRUST_TOKEN_experiment_v1 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, TRUST_TOKEN_experiment_v1)
#define TRUST_TOKEN_experiment_v2_pmb BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, TRUST_TOKEN_experiment_v2_pmb)
-#define TRUST_TOKEN_experiment_v2_pp BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, TRUST_TOKEN_experiment_v2_pp)
+#define TRUST_TOKEN_experiment_v2_voprf BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, TRUST_TOKEN_experiment_v2_voprf)
#define TRUST_TOKEN_free BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, TRUST_TOKEN_free)
#define TRUST_TOKEN_generate_key BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, TRUST_TOKEN_generate_key)
#define TRUST_TOKEN_new BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, TRUST_TOKEN_new)
#define policy_node_cmp_new BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, policy_node_cmp_new)
#define policy_node_free BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, policy_node_free)
#define policy_node_match BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, policy_node_match)
-#define poly_Rq_mul BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, poly_Rq_mul)
#define rand_fork_unsafe_buffering_enabled BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, rand_fork_unsafe_buffering_enabled)
#define rsa_asn1_meth BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, rsa_asn1_meth)
#define rsa_check_public_key BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, rsa_check_public_key)
#define v3_policy_mappings BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, v3_policy_mappings)
#define v3_sinfo BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, v3_sinfo)
#define v3_skey_id BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, v3_skey_id)
+#define voprf_exp2_blind BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, voprf_exp2_blind)
+#define voprf_exp2_client_key_from_bytes BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, voprf_exp2_client_key_from_bytes)
+#define voprf_exp2_generate_key BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, voprf_exp2_generate_key)
+#define voprf_exp2_issuer_key_from_bytes BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, voprf_exp2_issuer_key_from_bytes)
+#define voprf_exp2_read BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, voprf_exp2_read)
+#define voprf_exp2_sign BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, voprf_exp2_sign)
+#define voprf_exp2_unblind BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, voprf_exp2_unblind)
#define vpaes_cbc_encrypt BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, vpaes_cbc_encrypt)
#define vpaes_ctr32_encrypt_blocks BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, vpaes_ctr32_encrypt_blocks)
#define vpaes_decrypt BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, vpaes_decrypt)
except:
pass
-print yaml.dump(out)
+print(yaml.dump(out))
"const $Request$& request, $Response$* response) {\n");
printer->Print(*vars,
" return ::grpc::internal::BlockingUnaryCall"
+ "< $Request$, $Response$, ::grpc::protobuf::MessageLite, "
+ "::grpc::protobuf::MessageLite>"
"(channel_.get(), rpcmethod_$Method$_, "
"context, request, response);\n}\n\n");
"std::function<void(::grpc::Status)> f) {\n");
printer->Print(*vars,
" ::grpc::internal::CallbackUnaryCall"
+ "< $Request$, $Response$, ::grpc::protobuf::MessageLite, "
+ "::grpc::protobuf::MessageLite>"
"(stub_->channel_.get(), stub_->rpcmethod_$Method$_, "
"context, request, response, std::move(f));\n}\n\n");
"::grpc::experimental::ClientUnaryReactor* reactor) {\n");
printer->Print(*vars,
" ::grpc::internal::ClientCallbackUnaryFactory::Create"
+ "< ::grpc::protobuf::MessageLite, "
+ "::grpc::protobuf::MessageLite>"
"(stub_->channel_.get(), stub_->rpcmethod_$Method$_, "
"context, request, response, reactor);\n}\n\n");
"::grpc::CompletionQueue* cq) {\n");
printer->Print(*vars,
" return "
- "::grpc::internal::ClientAsyncResponseReaderFactory"
- "< $Response$>::Create(channel_.get(), cq, "
- "rpcmethod_$Method$_, "
- "context, request, false);\n"
+ "::grpc::internal::ClientAsyncResponseReaderHelper::Create"
+ "< $Response$, $Request$, ::grpc::protobuf::MessageLite, "
+ "::grpc::protobuf::MessageLite>"
+ "(channel_.get(), cq, rpcmethod_$Method$_, "
+ "context, request);\n"
"}\n\n");
printer->Print(*vars,
"::grpc::ClientAsyncResponseReader< $Response$>* "
" $prefix$$Service$_method_names[$Idx$],\n"
" ::grpc::internal::RpcMethod::NORMAL_RPC,\n"
" new ::grpc::internal::RpcMethodHandler< $ns$$Service$::Service, "
- "$Request$, "
- "$Response$>(\n"
+ "$Request$, $Response$, ::grpc::protobuf::MessageLite, "
+ "::grpc::protobuf::MessageLite>(\n"
" []($ns$$Service$::Service* service,\n"
" ::grpc::ServerContext* ctx,\n"
" const $Request$* req,\n"
inline void Split(const std::string& s, char delim,
std::vector<std::string>* append_to) {
- auto current = s.begin();
- while (current <= s.end()) {
- auto next = std::find(current, s.end(), delim);
- append_to->emplace_back(current, next);
- current = next + 1;
+ if (s.empty()) {
+ // splitting an empty string logically produces a single-element list
+ append_to->emplace_back();
+ } else {
+ auto current = s.begin();
+ while (current < s.end()) {
+ const auto next = std::find(current, s.end(), delim);
+ append_to->emplace_back(current, next);
+ current = next;
+ if (current != s.end()) {
+ // it was the delimiter - need to be at the start of the next entry
+ ++current;
+ }
+ }
}
}
grpc_closure* on_complete,
grpc_closure* watcher_timer_init);
- ~ExternalConnectivityWatcher();
+ ~ExternalConnectivityWatcher() override;
// Removes the watcher from the external_watchers_ map.
static void RemoveWatcherFromExternalWatchersMap(ChannelData* chand,
// ChannelData::SubchannelWrapper
//
-using ServerAddressAttributeMap =
- std::map<const char*, std::unique_ptr<ServerAddress::AttributeInterface>>;
-
// This class is a wrapper for Subchannel that hides details of the
// channel's implementation (such as the health check service name and
// connected subchannel) from the LB policy API.
class ChannelData::SubchannelWrapper : public SubchannelInterface {
public:
SubchannelWrapper(ChannelData* chand, Subchannel* subchannel,
- grpc_core::UniquePtr<char> health_check_service_name,
- ServerAddressAttributeMap attributes)
- : SubchannelInterface(&grpc_client_channel_routing_trace),
+ grpc_core::UniquePtr<char> health_check_service_name)
+ : SubchannelInterface(
+ GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)
+ ? "SubchannelWrapper"
+ : nullptr),
chand_(chand),
subchannel_(subchannel),
- health_check_service_name_(std::move(health_check_service_name)),
- attributes_(std::move(attributes)) {
+ health_check_service_name_(std::move(health_check_service_name)) {
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
gpr_log(GPR_INFO,
"chand=%p: creating subchannel wrapper %p for subchannel %p",
chand_->subchannel_wrappers_.insert(this);
}
- ~SubchannelWrapper() {
+ ~SubchannelWrapper() override {
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
gpr_log(GPR_INFO,
"chand=%p: destroying subchannel wrapper %p for subchannel %p",
return subchannel_->channel_args();
}
- const ServerAddress::AttributeInterface* GetAttribute(
- const char* key) const override {
- auto it = attributes_.find(key);
- if (it == attributes_.end()) return nullptr;
- return it->second.get();
- }
-
void ThrottleKeepaliveTime(int new_keepalive_time) {
subchannel_->ThrottleKeepaliveTime(new_keepalive_time);
}
parent_(std::move(parent)),
last_seen_state_(initial_state) {}
- ~WatcherWrapper() {
+ ~WatcherWrapper() override {
auto* parent = parent_.release(); // ref owned by lambda
parent->chand_->work_serializer_->Run(
[parent]() { parent->Unref(DEBUG_LOCATION, "WatcherWrapper"); },
ChannelData* chand_;
Subchannel* subchannel_;
grpc_core::UniquePtr<char> health_check_service_name_;
- ServerAddressAttributeMap attributes_;
// Maps from the address of the watcher passed to us by the LB policy
// to the address of the WrapperWatcher that we passed to the underlying
// subchannel. This is needed so that when the LB policy calls
// ChannelData::ClientChannelControlHelper
//
-} // namespace
-
-// Allows accessing the attributes from a ServerAddress.
-class ChannelServerAddressPeer {
- public:
- static ServerAddressAttributeMap GetAttributes(ServerAddress* address) {
- return std::move(address->attributes_);
- }
-};
-
-namespace {
-
class ChannelData::ClientChannelControlHelper
: public LoadBalancingPolicy::ChannelControlHelper {
public:
subchannel->ThrottleKeepaliveTime(chand_->keepalive_time_);
// Create and return wrapper for the subchannel.
return MakeRefCounted<SubchannelWrapper>(
- chand_, subchannel, std::move(health_check_service_name),
- ChannelServerAddressPeer::GetAttributes(&address));
+ chand_, subchannel, std::move(health_check_service_name));
}
void UpdateState(
CallData::CallData(grpc_call_element* elem, const ChannelData& chand,
const grpc_call_element_args& args)
- : deadline_state_(elem, args.call_stack, args.call_combiner,
+ : deadline_state_(elem, args,
GPR_LIKELY(chand.deadline_checking_enabled())
? args.deadline
: GRPC_MILLIS_INF_FUTURE),
#include "absl/strings/string_view.h"
-#include <grpc/impl/codegen/grpc_types.h>
-#include <grpc/impl/codegen/slice.h>
+#include <grpc/grpc.h>
#include "src/core/ext/filters/client_channel/service_config.h"
#include "src/core/ext/filters/client_channel/service_config_parser.h"
std::function<void()> on_call_committed;
};
- virtual ~ConfigSelector() = default;
+ ~ConfigSelector() override = default;
virtual const char* name() const = 0;
grpc_pollset_set* interested_parties,
RefCountedPtr<channelz::SubchannelNode> channelz_node,
RefCountedPtr<ConnectivityStateWatcherInterface> watcher)
- : InternallyRefCounted<HealthCheckClient>(&grpc_health_check_client_trace),
+ : InternallyRefCounted<HealthCheckClient>(
+ GRPC_TRACE_FLAG_ENABLED(grpc_health_check_client_trace)
+ ? "HealthCheckClient"
+ : nullptr),
service_name_(service_name),
connected_subchannel_(std::move(connected_subchannel)),
interested_parties_(interested_parties),
RefCountedPtr<channelz::SubchannelNode> channelz_node,
RefCountedPtr<ConnectivityStateWatcherInterface> watcher);
- ~HealthCheckClient();
+ ~HealthCheckClient() override;
void Orphan() override;
public:
CallState(RefCountedPtr<HealthCheckClient> health_check_client,
grpc_pollset_set* interested_parties_);
- ~CallState();
+ ~CallState() override;
void Orphan() override;
const char* name() const override { return "http_connect"; }
private:
- virtual ~HttpConnectHandshaker();
+ ~HttpConnectHandshaker() override;
void CleanupArgsForFailureLocked();
void HandshakeFailedLocked(grpc_error* error);
static void OnWriteDone(void* arg, grpc_error* error);
//
LoadBalancingPolicy::LoadBalancingPolicy(Args args, intptr_t initial_refcount)
- : InternallyRefCounted(&grpc_trace_lb_policy_refcount, initial_refcount),
+ : InternallyRefCounted(
+ GRPC_TRACE_FLAG_ENABLED(grpc_trace_lb_policy_refcount)
+ ? "LoadBalancingPolicy"
+ : nullptr,
+ initial_refcount),
work_serializer_(std::move(args.work_serializer)),
interested_parties_(grpc_pollset_set_create()),
channel_control_helper_(std::move(args.channel_control_helper)) {}
/// return the parameters they need.
class Config : public RefCounted<Config> {
public:
- virtual ~Config() = default;
+ ~Config() override = default;
// Returns the load balancing policy name
virtual const char* name() const = 0;
};
explicit LoadBalancingPolicy(Args args, intptr_t initial_refcount = 1);
- virtual ~LoadBalancingPolicy();
+ ~LoadBalancingPolicy() override;
// Not copyable nor movable.
LoadBalancingPolicy(const LoadBalancingPolicy&) = delete;
explicit QueuePicker(RefCountedPtr<LoadBalancingPolicy> parent)
: parent_(std::move(parent)) {}
- ~QueuePicker() { parent_.reset(DEBUG_LOCATION, "QueuePicker"); }
+ ~QueuePicker() override { parent_.reset(DEBUG_LOCATION, "QueuePicker"); }
PickResult Pick(PickArgs args) override;
explicit Helper(RefCountedPtr<ChildPolicyHandler> parent)
: parent_(std::move(parent)) {}
- ~Helper() { parent_.reset(DEBUG_LOCATION, "Helper"); }
+ ~Helper() override { parent_.reset(DEBUG_LOCATION, "Helper"); }
RefCountedPtr<SubchannelInterface> CreateSubchannel(
ServerAddress address, const grpc_channel_args& args) override {
ChildPolicyHandler(Args args, TraceFlag* tracer)
: LoadBalancingPolicy(std::move(args)), tracer_(tracer) {}
- virtual const char* name() const override { return "child_policy_handler"; }
+ const char* name() const override { return "child_policy_handler"; }
void UpdateLocked(UpdateArgs args) override;
void ExitIdleLocked() override;
public:
explicit BalancerCallState(
RefCountedPtr<LoadBalancingPolicy> parent_grpclb_policy);
- ~BalancerCallState();
+ ~BalancerCallState() override;
// It's the caller's responsibility to ensure that Orphan() is called from
// inside the combiner.
grpc_closure client_load_report_closure_;
};
+ class SubchannelWrapper : public DelegatingSubchannel {
+ public:
+ SubchannelWrapper(RefCountedPtr<SubchannelInterface> subchannel,
+ std::string lb_token,
+ RefCountedPtr<GrpcLbClientStats> client_stats)
+ : DelegatingSubchannel(std::move(subchannel)),
+ lb_token_(std::move(lb_token)),
+ client_stats_(std::move(client_stats)) {}
+
+ const std::string& lb_token() const { return lb_token_; }
+ GrpcLbClientStats* client_stats() const { return client_stats_.get(); }
+
+ private:
+ std::string lb_token_;
+ RefCountedPtr<GrpcLbClientStats> client_stats_;
+ };
+
class TokenAndClientStatsAttribute
: public ServerAddress::AttributeInterface {
public:
}
const std::string& lb_token() const { return lb_token_; }
- GrpcLbClientStats* client_stats() const { return client_stats_.get(); }
+ RefCountedPtr<GrpcLbClientStats> client_stats() const {
+ return client_stats_;
+ }
private:
std::string lb_token_;
class Picker : public SubchannelPicker {
public:
- Picker(GrpcLb* parent, RefCountedPtr<Serverlist> serverlist,
+ Picker(RefCountedPtr<Serverlist> serverlist,
std::unique_ptr<SubchannelPicker> child_picker,
RefCountedPtr<GrpcLbClientStats> client_stats)
- : parent_(parent),
- serverlist_(std::move(serverlist)),
+ : serverlist_(std::move(serverlist)),
child_picker_(std::move(child_picker)),
client_stats_(std::move(client_stats)) {}
PickResult Pick(PickArgs args) override;
private:
- // Storing the address for logging, but not holding a ref.
- // DO NOT DEFERENCE!
- GrpcLb* parent_;
-
// Serverlist to be used for determining drops.
RefCountedPtr<Serverlist> serverlist_;
: AsyncConnectivityStateWatcherInterface(parent->work_serializer()),
parent_(std::move(parent)) {}
- ~StateWatcher() { parent_.reset(DEBUG_LOCATION, "StateWatcher"); }
+ ~StateWatcher() override { parent_.reset(DEBUG_LOCATION, "StateWatcher"); }
private:
void OnConnectivityStateChange(grpc_connectivity_state new_state,
RefCountedPtr<GrpcLb> parent_;
};
- ~GrpcLb();
+ ~GrpcLb() override;
void ShutdownLocked() override;
GrpcLb::PickResult GrpcLb::Picker::Pick(PickArgs args) {
PickResult result;
// Check if we should drop the call.
- const char* drop_token = serverlist_->ShouldDrop();
+ const char* drop_token =
+ serverlist_ == nullptr ? nullptr : serverlist_->ShouldDrop();
if (drop_token != nullptr) {
// Update client load reporting stats to indicate the number of
// dropped calls. Note that we have to do this here instead of in
// If pick succeeded, add LB token to initial metadata.
if (result.type == PickResult::PICK_COMPLETE &&
result.subchannel != nullptr) {
- const TokenAndClientStatsAttribute* attribute =
- static_cast<const TokenAndClientStatsAttribute*>(
- result.subchannel->GetAttribute(kGrpcLbAddressAttributeKey));
- if (attribute == nullptr) {
- gpr_log(GPR_ERROR, "[grpclb %p picker %p] No LB token for subchannel %p",
- parent_, this, result.subchannel.get());
- abort();
- }
+ const SubchannelWrapper* subchannel_wrapper =
+ static_cast<SubchannelWrapper*>(result.subchannel.get());
// Encode client stats object into metadata for use by
// client_load_reporting filter.
- GrpcLbClientStats* client_stats = attribute->client_stats();
+ GrpcLbClientStats* client_stats = subchannel_wrapper->client_stats();
if (client_stats != nullptr) {
client_stats->Ref().release(); // Ref passed via metadata.
// The metadata value is a hack: we pretend the pointer points to
// Create a new copy on the call arena, since the subchannel list
// may get refreshed between when we return this pick and when the
// initial metadata goes out on the wire.
- char* lb_token = static_cast<char*>(
- args.call_state->Alloc(attribute->lb_token().size() + 1));
- strcpy(lb_token, attribute->lb_token().c_str());
- args.initial_metadata->Add(kGrpcLbLbTokenMetadataKey, lb_token);
+ if (!subchannel_wrapper->lb_token().empty()) {
+ char* lb_token = static_cast<char*>(
+ args.call_state->Alloc(subchannel_wrapper->lb_token().size() + 1));
+ strcpy(lb_token, subchannel_wrapper->lb_token().c_str());
+ args.initial_metadata->Add(kGrpcLbLbTokenMetadataKey, lb_token);
+ }
+ // Unwrap subchannel to pass up to the channel.
+ result.subchannel = subchannel_wrapper->wrapped_subchannel();
}
return result;
}
RefCountedPtr<SubchannelInterface> GrpcLb::Helper::CreateSubchannel(
ServerAddress address, const grpc_channel_args& args) {
if (parent_->shutting_down_) return nullptr;
- return parent_->channel_control_helper()->CreateSubchannel(std::move(address),
- args);
+ const TokenAndClientStatsAttribute* attribute =
+ static_cast<const TokenAndClientStatsAttribute*>(
+ address.GetAttribute(kGrpcLbAddressAttributeKey));
+ if (attribute == nullptr) {
+ gpr_log(GPR_ERROR,
+ "[grpclb %p] no TokenAndClientStatsAttribute for address %p",
+ parent_.get(), address.ToString().c_str());
+ abort();
+ }
+ std::string lb_token = attribute->lb_token();
+ RefCountedPtr<GrpcLbClientStats> client_stats = attribute->client_stats();
+ return MakeRefCounted<SubchannelWrapper>(
+ parent_->channel_control_helper()->CreateSubchannel(std::move(address),
+ args),
+ std::move(lb_token), std::move(client_stats));
}
void GrpcLb::Helper::UpdateState(grpc_connectivity_state state,
parent_->child_policy_ready_ = state == GRPC_CHANNEL_READY;
// Enter fallback mode if needed.
parent_->MaybeEnterFallbackModeAfterStartup();
- // There are three cases to consider here:
- // 1. We're in fallback mode. In this case, we're always going to use
- // the child policy's result, so we pass its picker through as-is.
- // 2. The serverlist contains only drop entries. In this case, we
- // want to use our own picker so that we can return the drops.
- // 3. Not in fallback mode and serverlist is not all drops (i.e., it
- // may be empty or contain at least one backend address). There are
- // two sub-cases:
- // a. The child policy is reporting state READY. In this case, we wrap
- // the child's picker in our own, so that we can handle drops and LB
- // token metadata for each pick.
- // b. The child policy is reporting a state other than READY. In this
- // case, we don't want to use our own picker, because we don't want
- // to process drops for picks that yield a QUEUE result; this would
- // result in dropping too many calls, since we will see the
- // queued picks multiple times, and we'd consider each one a
- // separate call for the drop calculation.
- //
- // Cases 1 and 3b: return picker from the child policy as-is.
- if (parent_->serverlist_ == nullptr ||
- (!parent_->serverlist_->ContainsAllDropEntries() &&
- state != GRPC_CHANNEL_READY)) {
- if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_glb_trace)) {
- gpr_log(GPR_INFO,
- "[grpclb %p helper %p] state=%s (%s) passing "
- "child picker %p as-is",
- parent_.get(), this, ConnectivityStateName(state),
- status.ToString().c_str(), picker.get());
- }
- parent_->channel_control_helper()->UpdateState(state, status,
- std::move(picker));
- return;
- }
- // Cases 2 and 3a: wrap picker from the child in our own picker.
- if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_glb_trace)) {
- gpr_log(GPR_INFO,
- "[grpclb %p helper %p] state=%s (%s) wrapping child "
- "picker %p",
- parent_.get(), this, ConnectivityStateName(state),
- status.ToString().c_str(), picker.get());
+ // We pass the serverlist to the picker so that it can handle drops.
+ // However, we don't want to handle drops in the case where the child
+ // policy is reporting a state other than READY (unless we are
+ // dropping *all* calls), because we don't want to process drops for picks
+ // that yield a QUEUE result; this would result in dropping too many calls,
+ // since we will see the queued picks multiple times, and we'd consider each
+ // one a separate call for the drop calculation. So in this case, we pass
+ // a null serverlist to the picker, which tells it not to do drops.
+ RefCountedPtr<Serverlist> serverlist;
+ if (state == GRPC_CHANNEL_READY ||
+ (parent_->serverlist_ != nullptr &&
+ parent_->serverlist_->ContainsAllDropEntries())) {
+ serverlist = parent_->serverlist_;
}
RefCountedPtr<GrpcLbClientStats> client_stats;
if (parent_->lb_calld_ != nullptr &&
parent_->lb_calld_->client_stats() != nullptr) {
client_stats = parent_->lb_calld_->client_stats()->Ref();
}
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_glb_trace)) {
+ gpr_log(GPR_INFO,
+ "[grpclb %p helper %p] state=%s (%s) wrapping child "
+ "picker %p (serverlist=%p, client_stats=%p)",
+ parent_.get(), this, ConnectivityStateName(state),
+ status.ToString().c_str(), picker.get(), serverlist.get(),
+ client_stats.get());
+ }
parent_->channel_control_helper()->UpdateState(
state, status,
- absl::make_unique<Picker>(parent_.get(), parent_->serverlist_,
- std::move(picker), std::move(client_stats)));
+ absl::make_unique<Picker>(std::move(serverlist), std::move(picker),
+ std::move(client_stats)));
}
void GrpcLb::Helper::RequestReresolution() {
GrpcLb::BalancerCallState::BalancerCallState(
RefCountedPtr<LoadBalancingPolicy> parent_grpclb_policy)
- : InternallyRefCounted<BalancerCallState>(&grpc_lb_glb_trace),
+ : InternallyRefCounted<BalancerCallState>(
+ GRPC_TRACE_FLAG_ENABLED(grpc_lb_glb_trace) ? "BalancerCallState"
+ : nullptr),
grpclb_policy_(std::move(parent_grpclb_policy)) {
GPR_ASSERT(grpclb_policy_ != nullptr);
GPR_ASSERT(!grpclb_policy()->shutting_down_);
if (num_calls_started == 0 && num_calls_finished == 0 &&
num_calls_finished_with_client_failed_to_send == 0 &&
num_calls_finished_known_received == 0 &&
- (drop_token_counts == nullptr || drop_token_counts->size() == 0)) {
+ (drop_token_counts == nullptr || drop_token_counts->empty())) {
if (last_client_load_report_counters_were_zero_) {
ScheduleNextClientLoadReportLocked();
return;
#include <grpc/support/atm.h>
#include <grpc/support/string_util.h>
+#include "absl/memory/memory.h"
+
#include "src/core/lib/gprpp/sync.h"
namespace grpc_core {
// Record the drop.
MutexLock lock(&drop_count_mu_);
if (drop_token_counts_ == nullptr) {
- drop_token_counts_.reset(new DroppedCallCounts());
+ drop_token_counts_ = absl::make_unique<DroppedCallCounts>();
}
for (size_t i = 0; i < drop_token_counts_->size(); ++i) {
if (strcmp((*drop_token_counts_)[i].token.get(), token) == 0) {
void ResetBackoffLocked() override;
private:
- ~PickFirst();
+ ~PickFirst() override;
class PickFirstSubchannelList;
policy->Ref(DEBUG_LOCATION, "subchannel_list").release();
}
- ~PickFirstSubchannelList() {
+ ~PickFirstSubchannelList() override {
PickFirst* p = static_cast<PickFirst*>(policy());
p->Unref(DEBUG_LOCATION, "subchannel_list");
}
// Config for priority LB policy.
class PriorityLbConfig : public LoadBalancingPolicy::Config {
public:
- PriorityLbConfig(
- std::map<std::string, RefCountedPtr<LoadBalancingPolicy::Config>>
- children,
- std::vector<std::string> priorities)
+ struct PriorityLbChild {
+ RefCountedPtr<LoadBalancingPolicy::Config> config;
+ bool ignore_reresolution_requests = false;
+ };
+
+ PriorityLbConfig(std::map<std::string, PriorityLbChild> children,
+ std::vector<std::string> priorities)
: children_(std::move(children)), priorities_(std::move(priorities)) {}
const char* name() const override { return kPriority; }
- const std::map<std::string, RefCountedPtr<LoadBalancingPolicy::Config>>&
- children() const {
+ const std::map<std::string, PriorityLbChild>& children() const {
return children_;
}
const std::vector<std::string>& priorities() const { return priorities_; }
private:
- const std::map<std::string, RefCountedPtr<LoadBalancingPolicy::Config>>
- children_;
+ const std::map<std::string, PriorityLbChild> children_;
const std::vector<std::string> priorities_;
};
public:
ChildPriority(RefCountedPtr<PriorityLb> priority_policy, std::string name);
- ~ChildPriority() {
+ ~ChildPriority() override {
priority_policy_.reset(DEBUG_LOCATION, "ChildPriority");
}
const std::string& name() const { return name_; }
- void UpdateLocked(RefCountedPtr<LoadBalancingPolicy::Config> config);
+ void UpdateLocked(RefCountedPtr<LoadBalancingPolicy::Config> config,
+ bool ignore_reresolution_requests);
void ExitIdleLocked();
void ResetBackoffLocked();
void DeactivateLocked();
explicit Helper(RefCountedPtr<ChildPriority> priority)
: priority_(std::move(priority)) {}
- ~Helper() { priority_.reset(DEBUG_LOCATION, "Helper"); }
+ ~Helper() override { priority_.reset(DEBUG_LOCATION, "Helper"); }
RefCountedPtr<SubchannelInterface> CreateSubchannel(
ServerAddress address, const grpc_channel_args& args) override;
RefCountedPtr<PriorityLb> priority_policy_;
const std::string name_;
+ bool ignore_reresolution_requests_ = false;
OrphanablePtr<LoadBalancingPolicy> child_policy_;
bool failover_timer_callback_pending_ = false;
};
- ~PriorityLb();
+ ~PriorityLb() override;
void ShutdownLocked() override;
child->DeactivateLocked();
} else {
// Existing child found in new config. Update it.
- child->UpdateLocked(config_it->second);
+ child->UpdateLocked(config_it->second.config,
+ config_it->second.ignore_reresolution_requests);
}
}
// Try to get connected.
}
child = MakeOrphanable<ChildPriority>(
Ref(DEBUG_LOCATION, "ChildPriority"), child_name);
- child->UpdateLocked(config_->children().find(child_name)->second);
+ auto child_config = config_->children().find(child_name);
+ GPR_DEBUG_ASSERT(child_config != config_->children().end());
+ child->UpdateLocked(child_config->second.config,
+ child_config->second.ignore_reresolution_requests);
return;
}
// The child already exists.
}
void PriorityLb::ChildPriority::UpdateLocked(
- RefCountedPtr<LoadBalancingPolicy::Config> config) {
+ RefCountedPtr<LoadBalancingPolicy::Config> config,
+ bool ignore_reresolution_requests) {
if (priority_policy_->shutting_down_) return;
if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_priority_trace)) {
gpr_log(GPR_INFO, "[priority_lb %p] child %s (%p): start update",
priority_policy_.get(), name_.c_str(), this);
}
+ ignore_reresolution_requests_ = ignore_reresolution_requests;
// Create policy if needed.
if (child_policy_ == nullptr) {
child_policy_ = CreateChildPolicyLocked(priority_policy_->args_);
void PriorityLb::ChildPriority::Helper::RequestReresolution() {
if (priority_->priority_policy_->shutting_down_) return;
+ if (priority_->ignore_reresolution_requests_) {
+ return;
+ }
priority_->priority_policy_->channel_control_helper()->RequestReresolution();
}
}
std::vector<grpc_error*> error_list;
// Children.
- std::map<std::string, RefCountedPtr<LoadBalancingPolicy::Config>> children;
+ std::map<std::string, PriorityLbConfig::PriorityLbChild> children;
auto it = json.object_value().find("children");
if (it == json.object_value().end()) {
error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
grpc_error* parse_error = GRPC_ERROR_NONE;
auto config = LoadBalancingPolicyRegistry::ParseLoadBalancingConfig(
it2->second, &parse_error);
+ bool ignore_resolution_requests = false;
+ // If present, ignore_reresolution_requests must be of type
+ // boolean.
+ auto it3 =
+ element.object_value().find("ignore_reresolution_requests");
+ if (it3 != element.object_value().end()) {
+ if (it3->second.type() == Json::Type::JSON_TRUE) {
+ ignore_resolution_requests = true;
+ } else if (it3->second.type() != Json::Type::JSON_FALSE) {
+ error_list.push_back(GRPC_ERROR_CREATE_FROM_COPIED_STRING(
+ absl::StrCat("field:children key:", child_name,
+ " field:ignore_reresolution_requests:should "
+ "be type boolean")
+ .c_str()));
+ }
+ }
if (config == nullptr) {
GPR_DEBUG_ASSERT(parse_error != GRPC_ERROR_NONE);
error_list.push_back(
&parse_error, 1));
GRPC_ERROR_UNREF(parse_error);
}
- children[child_name] = std::move(config);
+ children[child_name].config = std::move(config);
+ children[child_name].ignore_reresolution_requests =
+ ignore_resolution_requests;
}
}
}
void ResetBackoffLocked() override;
private:
- ~RoundRobin();
+ ~RoundRobin() override;
// Forward declaration.
class RoundRobinSubchannelList;
policy->Ref(DEBUG_LOCATION, "subchannel_list").release();
}
- ~RoundRobinSubchannelList() {
+ ~RoundRobinSubchannelList() override {
RoundRobin* p = static_cast<RoundRobin*>(policy());
p->Unref(DEBUG_LOCATION, "subchannel_list");
}
: subchannel_data_(subchannel_data),
subchannel_list_(std::move(subchannel_list)) {}
- ~Watcher() { subchannel_list_.reset(DEBUG_LOCATION, "Watcher dtor"); }
+ ~Watcher() override {
+ subchannel_list_.reset(DEBUG_LOCATION, "Watcher dtor");
+ }
void OnConnectivityStateChange(grpc_connectivity_state new_state) override;
LoadBalancingPolicy* policy, TraceFlag* tracer, ServerAddressList addresses,
LoadBalancingPolicy::ChannelControlHelper* helper,
const grpc_channel_args& args)
- : InternallyRefCounted<SubchannelListType>(tracer),
+ : InternallyRefCounted<SubchannelListType>(
+ GRPC_TRACE_FLAG_ENABLED(*tracer) ? "SubchannelList" : nullptr),
policy_(policy),
tracer_(tracer) {
if (GRPC_TRACE_FLAG_ENABLED(*tracer_)) {
}
subchannels_.reserve(addresses.size());
// Create a subchannel for each address.
- for (const ServerAddress& address : addresses) {
+ for (ServerAddress address : addresses) {
RefCountedPtr<SubchannelInterface> subchannel =
- helper->CreateSubchannel(std::move(address), args);
+ helper->CreateSubchannel(address, args);
if (subchannel == nullptr) {
// Subchannel could not be created.
if (GRPC_TRACE_FLAG_ENABLED(*tracer_)) {
tracer_->name(), policy_, this, subchannels_.size(),
subchannel.get(), address.ToString().c_str());
}
- subchannels_.emplace_back(this, address, std::move(subchannel));
+ subchannels_.emplace_back(this, std::move(address), std::move(subchannel));
}
}
public:
WeightedChild(RefCountedPtr<WeightedTargetLb> weighted_target_policy,
const std::string& name);
- ~WeightedChild();
+ ~WeightedChild() override;
void Orphan() override;
explicit Helper(RefCountedPtr<WeightedChild> weighted_child)
: weighted_child_(std::move(weighted_child)) {}
- ~Helper() { weighted_child_.reset(DEBUG_LOCATION, "Helper"); }
+ ~Helper() override { weighted_child_.reset(DEBUG_LOCATION, "Helper"); }
RefCountedPtr<SubchannelInterface> CreateSubchannel(
ServerAddress address, const grpc_channel_args& args) override;
bool shutdown_ = false;
};
- ~WeightedTargetLb();
+ ~WeightedTargetLb() override;
void ShutdownLocked() override;
RefCountedPtr<CdsLb> parent_;
};
- ~CdsLb();
+ ~CdsLb() override;
void ShutdownLocked() override;
#include "src/core/ext/xds/xds_client.h"
#include "src/core/ext/xds/xds_client_stats.h"
#include "src/core/lib/channel/channel_args.h"
-#include "src/core/lib/gpr/env.h"
#include "src/core/lib/gpr/string.h"
#include "src/core/lib/gprpp/orphanable.h"
#include "src/core/lib/gprpp/ref_counted_ptr.h"
-#include "src/core/lib/iomgr/timer.h"
#include "src/core/lib/iomgr/work_serializer.h"
#include "src/core/lib/transport/error_utils.h"
#include "src/core/lib/uri/uri_parser.h"
TraceFlag grpc_lb_eds_trace(false, "eds_lb");
+const char* kXdsLocalityNameAttributeKey = "xds_locality_name";
+
namespace {
constexpr char kEds[] = "eds_experimental";
-const char* kXdsLocalityNameAttributeKey = "xds_locality_name";
-
-// TODO (donnadionne): Check to see if circuit breaking is enabled, this will be
-// removed once circuit breaking feature is fully integrated and enabled by
-// default.
-bool XdsCircuitBreakingEnabled() {
- char* value = gpr_getenv("GRPC_XDS_EXPERIMENTAL_CIRCUIT_BREAKING");
- bool parsed_value;
- bool parse_succeeded = gpr_parse_bool_value(value, &parsed_value);
- gpr_free(value);
- return parse_succeeded && parsed_value;
-}
-
// Config for EDS LB policy.
class EdsLbConfig : public LoadBalancingPolicy::Config {
public:
void ResetBackoffLocked() override;
private:
- class XdsLocalityAttribute : public ServerAddress::AttributeInterface {
- public:
- explicit XdsLocalityAttribute(RefCountedPtr<XdsLocalityName> locality_name)
- : locality_name_(std::move(locality_name)) {}
-
- RefCountedPtr<XdsLocalityName> locality_name() const {
- return locality_name_;
- }
-
- std::unique_ptr<AttributeInterface> Copy() const override {
- return absl::make_unique<XdsLocalityAttribute>(locality_name_->Ref());
- }
-
- int Cmp(const AttributeInterface* other) const override {
- const auto* other_locality_attr =
- static_cast<const XdsLocalityAttribute*>(other);
- return locality_name_->Compare(*other_locality_attr->locality_name_);
- }
-
- std::string ToString() const override {
- return locality_name_->AsHumanReadableString();
- }
-
- private:
- RefCountedPtr<XdsLocalityName> locality_name_;
- };
-
- class StatsSubchannelWrapper : public DelegatingSubchannel {
- public:
- StatsSubchannelWrapper(
- RefCountedPtr<SubchannelInterface> wrapped_subchannel,
- RefCountedPtr<XdsClusterLocalityStats> locality_stats)
- : DelegatingSubchannel(std::move(wrapped_subchannel)),
- locality_stats_(std::move(locality_stats)) {}
-
- XdsClusterLocalityStats* locality_stats() const {
- return locality_stats_.get();
- }
-
- private:
- RefCountedPtr<XdsClusterLocalityStats> locality_stats_;
- };
-
class EndpointWatcher : public XdsClient::EndpointWatcherInterface {
public:
explicit EndpointWatcher(RefCountedPtr<EdsLb> parent)
RefCountedPtr<EdsLb> parent_;
};
- // A simple wrapper for ref-counting a picker from the child policy.
- class ChildPickerWrapper : public RefCounted<ChildPickerWrapper> {
- public:
- explicit ChildPickerWrapper(std::unique_ptr<SubchannelPicker> picker)
- : picker_(std::move(picker)) {}
- PickResult Pick(PickArgs args) { return picker_->Pick(args); }
-
- private:
- std::unique_ptr<SubchannelPicker> picker_;
- };
-
- // A picker that handles drops.
- class EdsPicker : public SubchannelPicker {
- public:
- explicit EdsPicker(RefCountedPtr<EdsLb> eds_policy);
-
- PickResult Pick(PickArgs args) override;
-
- private:
- RefCountedPtr<EdsLb> eds_policy_;
- RefCountedPtr<XdsApi::EdsUpdate::DropConfig> drop_config_;
- RefCountedPtr<XdsClusterDropStats> drop_stats_;
- RefCountedPtr<ChildPickerWrapper> child_picker_;
- bool xds_circuit_breaking_enabled_;
- uint32_t max_concurrent_requests_;
- };
-
class Helper : public ChannelControlHelper {
public:
explicit Helper(RefCountedPtr<EdsLb> eds_policy)
: eds_policy_(std::move(eds_policy)) {}
- ~Helper() { eds_policy_.reset(DEBUG_LOCATION, "Helper"); }
+ ~Helper() override { eds_policy_.reset(DEBUG_LOCATION, "Helper"); }
RefCountedPtr<SubchannelInterface> CreateSubchannel(
ServerAddress address, const grpc_channel_args& args) override;
RefCountedPtr<EdsLb> eds_policy_;
};
- ~EdsLb();
+ ~EdsLb() override;
void ShutdownLocked() override;
RefCountedPtr<Config> CreateChildPolicyConfigLocked();
grpc_channel_args* CreateChildPolicyArgsLocked(
const grpc_channel_args* args_in);
- void MaybeUpdateEdsPickerLocked();
// Caller must ensure that config_ is set before calling.
const absl::string_view GetEdsResourceName() const {
std::vector<size_t /*child_number*/> priority_child_numbers_;
RefCountedPtr<XdsApi::EdsUpdate::DropConfig> drop_config_;
- RefCountedPtr<XdsClusterDropStats> drop_stats_;
- // Current concurrent number of requests;
- Atomic<uint32_t> concurrent_requests_{0};
OrphanablePtr<LoadBalancingPolicy> child_policy_;
-
- // The latest state and picker returned from the child policy.
- grpc_connectivity_state child_state_;
- absl::Status child_status_;
- RefCountedPtr<ChildPickerWrapper> child_picker_;
};
//
-// EdsLb::EdsPicker
-//
-
-EdsLb::EdsPicker::EdsPicker(RefCountedPtr<EdsLb> eds_policy)
- : eds_policy_(std::move(eds_policy)),
- drop_stats_(eds_policy_->drop_stats_),
- child_picker_(eds_policy_->child_picker_),
- xds_circuit_breaking_enabled_(XdsCircuitBreakingEnabled()),
- max_concurrent_requests_(
- eds_policy_->config_->max_concurrent_requests()) {
- if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_eds_trace)) {
- gpr_log(GPR_INFO, "[edslb %p] constructed new drop picker %p",
- eds_policy_.get(), this);
- }
-}
-
-EdsLb::PickResult EdsLb::EdsPicker::Pick(PickArgs args) {
- uint32_t current = eds_policy_->concurrent_requests_.FetchAdd(1);
- if (xds_circuit_breaking_enabled_) {
- // Check and see if we exceeded the max concurrent requests count.
- if (current >= max_concurrent_requests_) {
- eds_policy_->concurrent_requests_.FetchSub(1);
- if (drop_stats_ != nullptr) {
- drop_stats_->AddUncategorizedDrops();
- }
- PickResult result;
- result.type = PickResult::PICK_COMPLETE;
- return result;
- }
- }
- // If we're not dropping the call, we should always have a child picker.
- if (child_picker_ == nullptr) { // Should never happen.
- PickResult result;
- result.type = PickResult::PICK_FAILED;
- result.error =
- grpc_error_set_int(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "eds drop picker not given any child picker"),
- GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_INTERNAL);
- eds_policy_->concurrent_requests_.FetchSub(1);
- return result;
- }
- // Not dropping, so delegate to child's picker.
- PickResult result = child_picker_->Pick(args);
- if (result.type == result.PICK_COMPLETE && result.subchannel != nullptr) {
- XdsClusterLocalityStats* locality_stats = nullptr;
- if (drop_stats_ != nullptr) { // If load reporting is enabled.
- auto* subchannel_wrapper =
- static_cast<StatsSubchannelWrapper*>(result.subchannel.get());
- // Handle load reporting.
- locality_stats = subchannel_wrapper->locality_stats()->Ref().release();
- // Record a call started.
- locality_stats->AddCallStarted();
- // Unwrap subchannel to pass back up the stack.
- result.subchannel = subchannel_wrapper->wrapped_subchannel();
- }
- // Intercept the recv_trailing_metadata op to record call completion.
- EdsLb* eds_policy = static_cast<EdsLb*>(
- eds_policy_->Ref(DEBUG_LOCATION, "DropPickPicker+call").release());
- auto original_recv_trailing_metadata_ready =
- result.recv_trailing_metadata_ready;
- result.recv_trailing_metadata_ready =
- // Note: This callback does not run in either the control plane
- // work serializer or in the data plane mutex.
- [locality_stats, original_recv_trailing_metadata_ready, eds_policy](
- grpc_error* error, MetadataInterface* metadata,
- CallState* call_state) {
- // Record call completion for load reporting.
- if (locality_stats != nullptr) {
- const bool call_failed = error != GRPC_ERROR_NONE;
- locality_stats->AddCallFinished(call_failed);
- locality_stats->Unref(DEBUG_LOCATION, "LocalityStats+call");
- }
- // Decrement number of calls in flight.
- eds_policy->concurrent_requests_.FetchSub(1);
- eds_policy->Unref(DEBUG_LOCATION, "DropPickPicker+call");
- // Invoke the original recv_trailing_metadata_ready callback, if any.
- if (original_recv_trailing_metadata_ready != nullptr) {
- original_recv_trailing_metadata_ready(error, metadata, call_state);
- }
- };
- } else {
- // TODO(roth): We should ideally also record call failures here in the case
- // where a pick fails. This is challenging, because we don't know which
- // picks are for wait_for_ready RPCs or how many times we'll return a
- // failure for the same wait_for_ready RPC.
- eds_policy_->concurrent_requests_.FetchSub(1);
- }
- return result;
-}
-
-//
// EdsLb::Helper
//
RefCountedPtr<SubchannelInterface> EdsLb::Helper::CreateSubchannel(
ServerAddress address, const grpc_channel_args& args) {
if (eds_policy_->shutting_down_) return nullptr;
- // If load reporting is enabled, wrap the subchannel such that it
- // includes the locality stats object, which will be used by the EdsPicker.
- if (eds_policy_->config_->lrs_load_reporting_server_name().has_value()) {
- RefCountedPtr<XdsLocalityName> locality_name;
- auto* attribute = address.GetAttribute(kXdsLocalityNameAttributeKey);
- if (attribute != nullptr) {
- const auto* locality_attr =
- static_cast<const XdsLocalityAttribute*>(attribute);
- locality_name = locality_attr->locality_name();
- }
- RefCountedPtr<XdsClusterLocalityStats> locality_stats =
- eds_policy_->xds_client_->AddClusterLocalityStats(
- *eds_policy_->config_->lrs_load_reporting_server_name(),
- eds_policy_->config_->cluster_name(),
- eds_policy_->config_->eds_service_name(), std::move(locality_name));
- return MakeRefCounted<StatsSubchannelWrapper>(
- eds_policy_->channel_control_helper()->CreateSubchannel(
- std::move(address), args),
- std::move(locality_stats));
- }
- // Load reporting not enabled, so don't wrap the subchannel.
return eds_policy_->channel_control_helper()->CreateSubchannel(
std::move(address), args);
}
return;
}
if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_eds_trace)) {
- gpr_log(GPR_INFO,
- "[edslb %p] child policy updated state=%s (%s) "
- "picker=%p",
+ gpr_log(GPR_INFO, "[edslb %p] child policy updated state=%s (%s) picker=%p",
eds_policy_.get(), ConnectivityStateName(state),
status.ToString().c_str(), picker.get());
}
- // Save the state and picker.
- eds_policy_->child_state_ = state;
- eds_policy_->child_status_ = status;
- eds_policy_->child_picker_ =
- MakeRefCounted<ChildPickerWrapper>(std::move(picker));
- // Wrap the picker in a EdsPicker and pass it up.
- eds_policy_->MaybeUpdateEdsPickerLocked();
+ eds_policy_->channel_control_helper()->UpdateState(state, status,
+ std::move(picker));
}
void EdsLb::Helper::AddTraceEvent(TraceSeverity severity,
gpr_log(GPR_INFO, "[edslb %p] shutting down", this);
}
shutting_down_ = true;
- // Drop our ref to the child's picker, in case it's holding a ref to
- // the child.
- child_picker_.reset();
MaybeDestroyChildPolicyLocked();
- drop_stats_.reset();
// Cancel watcher.
if (endpoint_watcher_ != nullptr) {
if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_eds_trace)) {
grpc_channel_args_destroy(args_);
args_ = args.args;
args.args = nullptr;
- const bool lrs_server_changed =
- is_initial_update || config_->lrs_load_reporting_server_name() !=
- old_config->lrs_load_reporting_server_name();
- const bool max_concurrent_requests_changed =
- is_initial_update || config_->max_concurrent_requests() !=
- old_config->max_concurrent_requests();
- // Update drop stats for load reporting if needed.
- if (lrs_server_changed) {
- drop_stats_.reset();
- if (config_->lrs_load_reporting_server_name().has_value()) {
- const auto key = GetLrsClusterKey();
- drop_stats_ = xds_client_->AddClusterDropStats(
- config_->lrs_load_reporting_server_name().value(),
- key.first /*cluster_name*/, key.second /*eds_service_name*/);
- }
- }
- if (lrs_server_changed || max_concurrent_requests_changed) {
- MaybeUpdateEdsPickerLocked();
- }
// Update child policy if needed.
- // Note that this comes after updating drop_stats_, since we want that
- // to be used by any new picker we create here.
if (child_policy_ != nullptr) UpdateChildPolicyLocked();
// Create endpoint watcher if needed.
if (is_initial_update) {
// Update the drop config.
drop_config_ = std::move(update.drop_config);
// If priority list is empty, add a single priority, just so that we
- // have a child in which to create the eds_drop policy.
+ // have a child in which to create the xds_cluster_impl policy.
if (update.priorities.empty()) update.priorities.emplace_back();
// Update child policy.
UpdatePriorityList(std::move(update.priorities));
if (!child_number.has_value()) {
for (child_number = 0;
child_locality_map.find(*child_number) != child_locality_map.end();
- ++(*child_number))
- ;
+ ++(*child_number)) {
+ }
// Add entry so we know that the child number is in use.
// (Don't need to add the list of localities, since we won't use them.)
child_locality_map[*child_number];
{"requests_per_million", category.parts_per_million},
});
}
- Json::Object eds_drop_config = {
+ Json::Object xds_cluster_impl_config = {
{"clusterName", std::string(lrs_key.first)},
{"childPolicy", std::move(locality_picking_config)},
{"dropCategories", std::move(drop_categories)},
+ {"maxConcurrentRequests", config_->max_concurrent_requests()},
};
if (!lrs_key.second.empty()) {
- eds_drop_config["edsServiceName"] = std::string(lrs_key.second);
+ xds_cluster_impl_config["edsServiceName"] = std::string(lrs_key.second);
}
if (config_->lrs_load_reporting_server_name().has_value()) {
- eds_drop_config["lrsLoadReportingServerName"] =
+ xds_cluster_impl_config["lrsLoadReportingServerName"] =
config_->lrs_load_reporting_server_name().value();
}
Json locality_picking_policy = Json::Array{Json::Object{
- {"eds_drop_experimental", std::move(eds_drop_config)},
+ {"xds_cluster_impl_experimental", std::move(xds_cluster_impl_config)},
}};
// Add priority entry.
const size_t child_number = priority_child_numbers_[priority];
priority_priorities.emplace_back(child_name);
priority_children[child_name] = Json::Object{
{"config", std::move(locality_picking_policy)},
+ {"ignore_reresolution_requests", true},
};
}
Json json = Json::Array{Json::Object{
return lb_policy;
}
-void EdsLb::MaybeUpdateEdsPickerLocked() {
- // Update only if we have a child picker.
- if (child_picker_ != nullptr) {
- channel_control_helper()->UpdateState(
- child_state_, child_status_,
- absl::make_unique<EdsPicker>(Ref(DEBUG_LOCATION, "EdsPicker")));
- }
-}
-
//
// factory
//
+++ /dev/null
-//
-// Copyright 2018 gRPC authors.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-
-#include <grpc/support/port_platform.h>
-
-#include "absl/strings/string_view.h"
-
-#include <grpc/grpc.h>
-
-#include "src/core/ext/filters/client_channel/lb_policy.h"
-#include "src/core/ext/filters/client_channel/lb_policy/child_policy_handler.h"
-#include "src/core/ext/filters/client_channel/lb_policy_factory.h"
-#include "src/core/ext/filters/client_channel/lb_policy_registry.h"
-#include "src/core/ext/xds/xds_client.h"
-#include "src/core/ext/xds/xds_client_stats.h"
-#include "src/core/lib/channel/channel_args.h"
-#include "src/core/lib/gpr/string.h"
-#include "src/core/lib/gprpp/orphanable.h"
-#include "src/core/lib/gprpp/ref_counted_ptr.h"
-#include "src/core/lib/iomgr/work_serializer.h"
-
-namespace grpc_core {
-
-TraceFlag grpc_eds_drop_lb_trace(false, "eds_drop_lb");
-
-namespace {
-
-constexpr char kEdsDrop[] = "eds_drop_experimental";
-
-// Config for EDS drop LB policy.
-class EdsDropLbConfig : public LoadBalancingPolicy::Config {
- public:
- EdsDropLbConfig(RefCountedPtr<LoadBalancingPolicy::Config> child_policy,
- std::string cluster_name, std::string eds_service_name,
- absl::optional<std::string> lrs_load_reporting_server_name,
- RefCountedPtr<XdsApi::EdsUpdate::DropConfig> drop_config)
- : child_policy_(std::move(child_policy)),
- cluster_name_(std::move(cluster_name)),
- eds_service_name_(std::move(eds_service_name)),
- lrs_load_reporting_server_name_(
- std::move(lrs_load_reporting_server_name)),
- drop_config_(std::move(drop_config)) {}
-
- const char* name() const override { return kEdsDrop; }
-
- RefCountedPtr<LoadBalancingPolicy::Config> child_policy() const {
- return child_policy_;
- }
- const std::string& cluster_name() const { return cluster_name_; }
- const std::string& eds_service_name() const { return eds_service_name_; }
- const absl::optional<std::string>& lrs_load_reporting_server_name() const {
- return lrs_load_reporting_server_name_;
- };
- RefCountedPtr<XdsApi::EdsUpdate::DropConfig> drop_config() const {
- return drop_config_;
- }
-
- private:
- RefCountedPtr<LoadBalancingPolicy::Config> child_policy_;
- std::string cluster_name_;
- std::string eds_service_name_;
- absl::optional<std::string> lrs_load_reporting_server_name_;
- RefCountedPtr<XdsApi::EdsUpdate::DropConfig> drop_config_;
-};
-
-// EDS Drop LB policy.
-class EdsDropLb : public LoadBalancingPolicy {
- public:
- EdsDropLb(RefCountedPtr<XdsClient> xds_client, Args args);
-
- const char* name() const override { return kEdsDrop; }
-
- void UpdateLocked(UpdateArgs args) override;
- void ExitIdleLocked() override;
- void ResetBackoffLocked() override;
-
- private:
- // A simple wrapper for ref-counting a picker from the child policy.
- class RefCountedPicker : public RefCounted<RefCountedPicker> {
- public:
- explicit RefCountedPicker(std::unique_ptr<SubchannelPicker> picker)
- : picker_(std::move(picker)) {}
- PickResult Pick(PickArgs args) { return picker_->Pick(args); }
-
- private:
- std::unique_ptr<SubchannelPicker> picker_;
- };
-
- // A picker that wraps the picker from the child to perform drops.
- class DropPicker : public SubchannelPicker {
- public:
- DropPicker(EdsDropLb* eds_drop_lb, RefCountedPtr<RefCountedPicker> picker)
- : drop_config_(eds_drop_lb->config_->drop_config()),
- drop_stats_(eds_drop_lb->drop_stats_),
- picker_(std::move(picker)) {}
-
- PickResult Pick(PickArgs args);
-
- private:
- RefCountedPtr<XdsApi::EdsUpdate::DropConfig> drop_config_;
- RefCountedPtr<XdsClusterDropStats> drop_stats_;
- RefCountedPtr<RefCountedPicker> picker_;
- };
-
- class Helper : public ChannelControlHelper {
- public:
- explicit Helper(RefCountedPtr<EdsDropLb> eds_drop_policy)
- : eds_drop_policy_(std::move(eds_drop_policy)) {}
-
- ~Helper() { eds_drop_policy_.reset(DEBUG_LOCATION, "Helper"); }
-
- RefCountedPtr<SubchannelInterface> CreateSubchannel(
- ServerAddress address, const grpc_channel_args& args) override;
- void UpdateState(grpc_connectivity_state state, const absl::Status& status,
- std::unique_ptr<SubchannelPicker> picker) override;
- void RequestReresolution() override;
- void AddTraceEvent(TraceSeverity severity,
- absl::string_view message) override;
-
- private:
- RefCountedPtr<EdsDropLb> eds_drop_policy_;
- };
-
- ~EdsDropLb();
-
- void ShutdownLocked() override;
-
- OrphanablePtr<LoadBalancingPolicy> CreateChildPolicyLocked(
- const grpc_channel_args* args);
- void UpdateChildPolicyLocked(ServerAddressList addresses,
- const grpc_channel_args* args);
-
- void MaybeUpdatePickerLocked();
-
- // Current config from the resolver.
- RefCountedPtr<EdsDropLbConfig> config_;
-
- // Internal state.
- bool shutting_down_ = false;
-
- // The xds client.
- RefCountedPtr<XdsClient> xds_client_;
-
- // The stats for client-side load reporting.
- RefCountedPtr<XdsClusterDropStats> drop_stats_;
-
- OrphanablePtr<LoadBalancingPolicy> child_policy_;
-
- // Latest state and picker reported by the child policy.
- grpc_connectivity_state state_ = GRPC_CHANNEL_IDLE;
- absl::Status status_;
- RefCountedPtr<RefCountedPicker> picker_;
-};
-
-//
-// EdsDropLb::DropPicker
-//
-
-LoadBalancingPolicy::PickResult EdsDropLb::DropPicker::Pick(
- LoadBalancingPolicy::PickArgs args) {
- // Handle drop.
- const std::string* drop_category;
- if (drop_config_->ShouldDrop(&drop_category)) {
- if (drop_stats_ != nullptr) drop_stats_->AddCallDropped(*drop_category);
- PickResult result;
- result.type = PickResult::PICK_COMPLETE;
- return result;
- }
- // If we're not dropping the call, we should always have a child picker.
- if (picker_ == nullptr) { // Should never happen.
- PickResult result;
- result.type = PickResult::PICK_FAILED;
- result.error =
- grpc_error_set_int(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "eds_drop picker not given any child picker"),
- GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_INTERNAL);
- return result;
- }
- // Not dropping, so delegate to child picker.
- return picker_->Pick(args);
-}
-
-//
-// EdsDropLb
-//
-
-EdsDropLb::EdsDropLb(RefCountedPtr<XdsClient> xds_client, Args args)
- : LoadBalancingPolicy(std::move(args)), xds_client_(std::move(xds_client)) {
- if (GRPC_TRACE_FLAG_ENABLED(grpc_eds_drop_lb_trace)) {
- gpr_log(GPR_INFO, "[eds_drop_lb %p] created -- using xds client %p", this,
- xds_client_.get());
- }
-}
-
-EdsDropLb::~EdsDropLb() {
- if (GRPC_TRACE_FLAG_ENABLED(grpc_eds_drop_lb_trace)) {
- gpr_log(GPR_INFO, "[eds_drop_lb %p] destroying xds LB policy", this);
- }
-}
-
-void EdsDropLb::ShutdownLocked() {
- if (GRPC_TRACE_FLAG_ENABLED(grpc_eds_drop_lb_trace)) {
- gpr_log(GPR_INFO, "[eds_drop_lb %p] shutting down", this);
- }
- shutting_down_ = true;
- // Remove the child policy's interested_parties pollset_set from the
- // xDS policy.
- if (child_policy_ != nullptr) {
- grpc_pollset_set_del_pollset_set(child_policy_->interested_parties(),
- interested_parties());
- child_policy_.reset();
- }
- // Drop our ref to the child's picker, in case it's holding a ref to
- // the child.
- picker_.reset();
- drop_stats_.reset();
- xds_client_.reset();
-}
-
-void EdsDropLb::ExitIdleLocked() {
- if (child_policy_ != nullptr) child_policy_->ExitIdleLocked();
-}
-
-void EdsDropLb::ResetBackoffLocked() {
- // The XdsClient will have its backoff reset by the xds resolver, so we
- // don't need to do it here.
- if (child_policy_ != nullptr) child_policy_->ResetBackoffLocked();
-}
-
-void EdsDropLb::UpdateLocked(UpdateArgs args) {
- if (GRPC_TRACE_FLAG_ENABLED(grpc_eds_drop_lb_trace)) {
- gpr_log(GPR_INFO, "[eds_drop_lb %p] Received update", this);
- }
- // Update config.
- auto old_config = std::move(config_);
- config_ = std::move(args.config);
- // Update load reporting if needed.
- if (old_config == nullptr ||
- config_->lrs_load_reporting_server_name() !=
- old_config->lrs_load_reporting_server_name() ||
- config_->cluster_name() != old_config->cluster_name() ||
- config_->eds_service_name() != old_config->eds_service_name()) {
- drop_stats_.reset();
- if (config_->lrs_load_reporting_server_name().has_value()) {
- drop_stats_ = xds_client_->AddClusterDropStats(
- config_->lrs_load_reporting_server_name().value(),
- config_->cluster_name(), config_->eds_service_name());
- }
- MaybeUpdatePickerLocked();
- }
- // Update child policy.
- UpdateChildPolicyLocked(std::move(args.addresses), args.args);
- args.args = nullptr;
-}
-
-void EdsDropLb::MaybeUpdatePickerLocked() {
- // If we're dropping all calls, report READY, regardless of what (or
- // whether) the child has reported.
- if (config_->drop_config() != nullptr && config_->drop_config()->drop_all()) {
- auto drop_picker = absl::make_unique<DropPicker>(this, picker_);
- if (GRPC_TRACE_FLAG_ENABLED(grpc_eds_drop_lb_trace)) {
- gpr_log(GPR_INFO,
- "[eds_drop_lb %p] updating connectivity (drop all): state=READY "
- "picker=%p",
- this, drop_picker.get());
- }
- channel_control_helper()->UpdateState(GRPC_CHANNEL_READY, absl::Status(),
- std::move(drop_picker));
- return;
- }
- // Otherwise, update only if we have a child picker.
- if (picker_ != nullptr) {
- auto drop_picker = absl::make_unique<DropPicker>(this, picker_);
- if (GRPC_TRACE_FLAG_ENABLED(grpc_eds_drop_lb_trace)) {
- gpr_log(GPR_INFO,
- "[eds_drop_lb %p] updating connectivity: state=%s status=(%s) "
- "picker=%p",
- this, ConnectivityStateName(state_), status_.ToString().c_str(),
- drop_picker.get());
- }
- channel_control_helper()->UpdateState(state_, status_,
- std::move(drop_picker));
- }
-}
-
-OrphanablePtr<LoadBalancingPolicy> EdsDropLb::CreateChildPolicyLocked(
- const grpc_channel_args* args) {
- LoadBalancingPolicy::Args lb_policy_args;
- lb_policy_args.work_serializer = work_serializer();
- lb_policy_args.args = args;
- lb_policy_args.channel_control_helper =
- absl::make_unique<Helper>(Ref(DEBUG_LOCATION, "Helper"));
- OrphanablePtr<LoadBalancingPolicy> lb_policy =
- MakeOrphanable<ChildPolicyHandler>(std::move(lb_policy_args),
- &grpc_eds_drop_lb_trace);
- if (GRPC_TRACE_FLAG_ENABLED(grpc_eds_drop_lb_trace)) {
- gpr_log(GPR_INFO, "[eds_drop_lb %p] Created new child policy handler %p",
- this, lb_policy.get());
- }
- // Add our interested_parties pollset_set to that of the newly created
- // child policy. This will make the child policy progress upon activity on
- // this policy, which in turn is tied to the application's call.
- grpc_pollset_set_add_pollset_set(lb_policy->interested_parties(),
- interested_parties());
- return lb_policy;
-}
-
-void EdsDropLb::UpdateChildPolicyLocked(ServerAddressList addresses,
- const grpc_channel_args* args) {
- // Create policy if needed.
- if (child_policy_ == nullptr) {
- child_policy_ = CreateChildPolicyLocked(args);
- }
- // Construct update args.
- UpdateArgs update_args;
- update_args.addresses = std::move(addresses);
- update_args.config = config_->child_policy();
- update_args.args = args;
- // Update the policy.
- if (GRPC_TRACE_FLAG_ENABLED(grpc_eds_drop_lb_trace)) {
- gpr_log(GPR_INFO, "[eds_drop_lb %p] Updating child policy handler %p", this,
- child_policy_.get());
- }
- child_policy_->UpdateLocked(std::move(update_args));
-}
-
-//
-// EdsDropLb::Helper
-//
-
-RefCountedPtr<SubchannelInterface> EdsDropLb::Helper::CreateSubchannel(
- ServerAddress address, const grpc_channel_args& args) {
- if (eds_drop_policy_->shutting_down_) return nullptr;
- return eds_drop_policy_->channel_control_helper()->CreateSubchannel(
- std::move(address), args);
-}
-
-void EdsDropLb::Helper::UpdateState(grpc_connectivity_state state,
- const absl::Status& status,
- std::unique_ptr<SubchannelPicker> picker) {
- if (eds_drop_policy_->shutting_down_) return;
- if (GRPC_TRACE_FLAG_ENABLED(grpc_eds_drop_lb_trace)) {
- gpr_log(GPR_INFO,
- "[eds_drop_lb %p] child connectivity state update: state=%s (%s) "
- "picker=%p",
- eds_drop_policy_.get(), ConnectivityStateName(state),
- status.ToString().c_str(), picker.get());
- }
- // Save the state and picker.
- eds_drop_policy_->state_ = state;
- eds_drop_policy_->status_ = status;
- eds_drop_policy_->picker_ =
- MakeRefCounted<RefCountedPicker>(std::move(picker));
- // Wrap the picker and return it to the channel.
- eds_drop_policy_->MaybeUpdatePickerLocked();
-}
-
-void EdsDropLb::Helper::RequestReresolution() {
- if (eds_drop_policy_->shutting_down_) return;
- eds_drop_policy_->channel_control_helper()->RequestReresolution();
-}
-
-void EdsDropLb::Helper::AddTraceEvent(TraceSeverity severity,
- absl::string_view message) {
- if (eds_drop_policy_->shutting_down_) return;
- eds_drop_policy_->channel_control_helper()->AddTraceEvent(severity, message);
-}
-
-//
-// factory
-//
-
-class EdsDropLbFactory : public LoadBalancingPolicyFactory {
- public:
- OrphanablePtr<LoadBalancingPolicy> CreateLoadBalancingPolicy(
- LoadBalancingPolicy::Args args) const override {
- grpc_error* error = GRPC_ERROR_NONE;
- RefCountedPtr<XdsClient> xds_client = XdsClient::GetOrCreate(&error);
- if (error != GRPC_ERROR_NONE) {
- gpr_log(GPR_ERROR,
- "cannot get XdsClient to instantiate eds_drop LB policy: %s",
- grpc_error_string(error));
- GRPC_ERROR_UNREF(error);
- return nullptr;
- }
- return MakeOrphanable<EdsDropLb>(std::move(xds_client), std::move(args));
- }
-
- const char* name() const override { return kEdsDrop; }
-
- RefCountedPtr<LoadBalancingPolicy::Config> ParseLoadBalancingConfig(
- const Json& json, grpc_error** error) const override {
- GPR_DEBUG_ASSERT(error != nullptr && *error == GRPC_ERROR_NONE);
- if (json.type() == Json::Type::JSON_NULL) {
- // This policy was configured in the deprecated loadBalancingPolicy
- // field or in the client API.
- *error = GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "field:loadBalancingPolicy error:eds_drop policy requires "
- "configuration. Please use loadBalancingConfig field of service "
- "config instead.");
- return nullptr;
- }
- std::vector<grpc_error*> error_list;
- // Child policy.
- RefCountedPtr<LoadBalancingPolicy::Config> child_policy;
- auto it = json.object_value().find("childPolicy");
- if (it == json.object_value().end()) {
- error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "field:childPolicy error:required field missing"));
- } else {
- grpc_error* parse_error = GRPC_ERROR_NONE;
- child_policy = LoadBalancingPolicyRegistry::ParseLoadBalancingConfig(
- it->second, &parse_error);
- if (child_policy == nullptr) {
- GPR_DEBUG_ASSERT(parse_error != GRPC_ERROR_NONE);
- std::vector<grpc_error*> child_errors;
- child_errors.push_back(parse_error);
- error_list.push_back(
- GRPC_ERROR_CREATE_FROM_VECTOR("field:childPolicy", &child_errors));
- }
- }
- // Cluster name.
- std::string cluster_name;
- it = json.object_value().find("clusterName");
- if (it == json.object_value().end()) {
- error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "field:clusterName error:required field missing"));
- } else if (it->second.type() != Json::Type::STRING) {
- error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "field:clusterName error:type should be string"));
- } else {
- cluster_name = it->second.string_value();
- }
- // EDS service name.
- std::string eds_service_name;
- it = json.object_value().find("edsServiceName");
- if (it != json.object_value().end()) {
- if (it->second.type() != Json::Type::STRING) {
- error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "field:edsServiceName error:type should be string"));
- } else {
- eds_service_name = it->second.string_value();
- }
- }
- // LRS load reporting server name.
- absl::optional<std::string> lrs_load_reporting_server_name;
- it = json.object_value().find("lrsLoadReportingServerName");
- if (it != json.object_value().end()) {
- if (it->second.type() != Json::Type::STRING) {
- error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "field:lrsLoadReportingServerName error:type should be string"));
- } else {
- lrs_load_reporting_server_name = it->second.string_value();
- }
- }
- // Drop config.
- auto drop_config = MakeRefCounted<XdsApi::EdsUpdate::DropConfig>();
- it = json.object_value().find("dropCategories");
- if (it == json.object_value().end()) {
- error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "field:dropCategories error:required field missing"));
- } else {
- std::vector<grpc_error*> child_errors =
- ParseDropCategories(it->second, drop_config.get());
- if (!child_errors.empty()) {
- error_list.push_back(GRPC_ERROR_CREATE_FROM_VECTOR(
- "field:dropCategories", &child_errors));
- }
- }
- if (!error_list.empty()) {
- *error = GRPC_ERROR_CREATE_FROM_VECTOR(
- "eds_drop_experimental LB policy config", &error_list);
- return nullptr;
- }
- return MakeRefCounted<EdsDropLbConfig>(
- std::move(child_policy), std::move(cluster_name),
- std::move(eds_service_name), std::move(lrs_load_reporting_server_name),
- std::move(drop_config));
- }
-
- private:
- static std::vector<grpc_error*> ParseDropCategories(
- const Json& json, XdsApi::EdsUpdate::DropConfig* drop_config) {
- std::vector<grpc_error*> error_list;
- if (json.type() != Json::Type::ARRAY) {
- error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "dropCategories field is not an array"));
- return error_list;
- }
- for (size_t i = 0; i < json.array_value().size(); ++i) {
- const Json& entry = json.array_value()[i];
- std::vector<grpc_error*> child_errors =
- ParseDropCategory(entry, drop_config);
- if (!child_errors.empty()) {
- grpc_error* error = GRPC_ERROR_CREATE_FROM_COPIED_STRING(
- absl::StrCat("errors parsing index ", i).c_str());
- for (size_t i = 0; i < child_errors.size(); ++i) {
- error = grpc_error_add_child(error, child_errors[i]);
- }
- error_list.push_back(error);
- }
- }
- return error_list;
- }
-
- static std::vector<grpc_error*> ParseDropCategory(
- const Json& json, XdsApi::EdsUpdate::DropConfig* drop_config) {
- std::vector<grpc_error*> error_list;
- if (json.type() != Json::Type::OBJECT) {
- error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "dropCategories entry is not an object"));
- return error_list;
- }
- std::string category;
- auto it = json.object_value().find("category");
- if (it == json.object_value().end()) {
- error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "\"category\" field not present"));
- } else if (it->second.type() != Json::Type::STRING) {
- error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "\"category\" field is not a string"));
- } else {
- category = it->second.string_value();
- }
- uint32_t requests_per_million = 0;
- it = json.object_value().find("requests_per_million");
- if (it == json.object_value().end()) {
- error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "\"requests_per_million\" field is not present"));
- } else if (it->second.type() != Json::Type::NUMBER) {
- error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "\"requests_per_million\" field is not a number"));
- } else {
- requests_per_million =
- gpr_parse_nonnegative_int(it->second.string_value().c_str());
- }
- if (error_list.empty()) {
- drop_config->AddCategory(std::move(category), requests_per_million);
- }
- return error_list;
- }
-};
-
-} // namespace
-
-} // namespace grpc_core
-
-//
-// Plugin registration
-//
-
-void grpc_lb_policy_eds_drop_init() {
- grpc_core::LoadBalancingPolicyRegistry::Builder::
- RegisterLoadBalancingPolicyFactory(
- absl::make_unique<grpc_core::EdsDropLbFactory>());
-}
-
-void grpc_lb_policy_eds_drop_shutdown() {}
-/*
- *
- * Copyright 2018 gRPC authors.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
+//
+// Copyright 2018 gRPC authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
#ifndef GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_LB_POLICY_XDS_XDS_H
#define GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_LB_POLICY_XDS_XDS_H
#include <grpc/support/port_platform.h>
+#include "src/core/ext/filters/client_channel/server_address.h"
+#include "src/core/ext/xds/xds_client_stats.h"
+#include "src/core/lib/gprpp/ref_counted_ptr.h"
+
/** Channel arg indicating if a target corresponding to the address is a backend
* received from a balancer. The type of this arg is an integer and the value is
* treated as a bool. */
#define GRPC_ARG_ADDRESS_IS_BACKEND_FROM_XDS_LOAD_BALANCER \
"grpc.address_is_backend_from_xds_load_balancer"
+namespace grpc_core {
+
+// Defined in the EDS policy.
+extern const char* kXdsLocalityNameAttributeKey;
+
+class XdsLocalityAttribute : public ServerAddress::AttributeInterface {
+ public:
+ explicit XdsLocalityAttribute(RefCountedPtr<XdsLocalityName> locality_name)
+ : locality_name_(std::move(locality_name)) {}
+
+ RefCountedPtr<XdsLocalityName> locality_name() const {
+ return locality_name_;
+ }
+
+ std::unique_ptr<AttributeInterface> Copy() const override {
+ return absl::make_unique<XdsLocalityAttribute>(locality_name_->Ref());
+ }
+
+ int Cmp(const AttributeInterface* other) const override {
+ const auto* other_locality_attr =
+ static_cast<const XdsLocalityAttribute*>(other);
+ return locality_name_->Compare(*other_locality_attr->locality_name_);
+ }
+
+ std::string ToString() const override {
+ return locality_name_->AsHumanReadableString();
+ }
+
+ private:
+ RefCountedPtr<XdsLocalityName> locality_name_;
+};
+
+} // namespace grpc_core
+
#endif /* GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_LB_POLICY_XDS_XDS_H */
--- /dev/null
+//
+// Copyright 2018 gRPC authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+#include <grpc/support/port_platform.h>
+
+#include "absl/strings/string_view.h"
+
+#include <grpc/grpc.h>
+
+#include "src/core/ext/filters/client_channel/lb_policy.h"
+#include "src/core/ext/filters/client_channel/lb_policy/child_policy_handler.h"
+#include "src/core/ext/filters/client_channel/lb_policy/xds/xds.h"
+#include "src/core/ext/filters/client_channel/lb_policy_factory.h"
+#include "src/core/ext/filters/client_channel/lb_policy_registry.h"
+#include "src/core/ext/xds/xds_client.h"
+#include "src/core/ext/xds/xds_client_stats.h"
+#include "src/core/lib/channel/channel_args.h"
+#include "src/core/lib/gpr/env.h"
+#include "src/core/lib/gpr/string.h"
+#include "src/core/lib/gprpp/orphanable.h"
+#include "src/core/lib/gprpp/ref_counted_ptr.h"
+#include "src/core/lib/gprpp/sync.h"
+#include "src/core/lib/iomgr/work_serializer.h"
+
+namespace grpc_core {
+
+TraceFlag grpc_xds_cluster_impl_lb_trace(false, "xds_cluster_impl_lb");
+
+namespace {
+
+//
+// global circuit breaker atomic map
+//
+
+class CircuitBreakerCallCounterMap {
+ public:
+ using Key =
+ std::pair<std::string /*cluster*/, std::string /*eds_service_name*/>;
+
+ class CallCounter : public RefCounted<CallCounter> {
+ public:
+ explicit CallCounter(Key key) : key_(std::move(key)) {}
+ ~CallCounter() override;
+
+ uint32_t Increment() { return concurrent_requests_.FetchAdd(1); }
+ void Decrement() { concurrent_requests_.FetchSub(1); }
+
+ private:
+ Key key_;
+ Atomic<uint32_t> concurrent_requests_{0};
+ };
+
+ RefCountedPtr<CallCounter> GetOrCreate(const std::string& cluster,
+ const std::string& eds_service_name);
+
+ private:
+ Mutex mu_;
+ std::map<Key, CallCounter*> map_;
+};
+
+CircuitBreakerCallCounterMap* g_call_counter_map = nullptr;
+
+RefCountedPtr<CircuitBreakerCallCounterMap::CallCounter>
+CircuitBreakerCallCounterMap::GetOrCreate(const std::string& cluster,
+ const std::string& eds_service_name) {
+ Key key(cluster, eds_service_name);
+ RefCountedPtr<CallCounter> result;
+ MutexLock lock(&mu_);
+ auto it = map_.find(key);
+ if (it == map_.end()) {
+ it = map_.insert({key, nullptr}).first;
+ } else {
+ result = it->second->RefIfNonZero();
+ }
+ if (result == nullptr) {
+ result = MakeRefCounted<CallCounter>(std::move(key));
+ it->second = result.get();
+ }
+ return result;
+}
+
+CircuitBreakerCallCounterMap::CallCounter::~CallCounter() {
+ MutexLock lock(&g_call_counter_map->mu_);
+ auto it = g_call_counter_map->map_.find(key_);
+ if (it != g_call_counter_map->map_.end() && it->second == this) {
+ g_call_counter_map->map_.erase(it);
+ }
+}
+
+//
+// LB policy
+//
+
+constexpr char kXdsClusterImpl[] = "xds_cluster_impl_experimental";
+
+// TODO (donnadionne): Check to see if circuit breaking is enabled, this will be
+// removed once circuit breaking feature is fully integrated and enabled by
+// default.
+bool XdsCircuitBreakingEnabled() {
+ char* value = gpr_getenv("GRPC_XDS_EXPERIMENTAL_CIRCUIT_BREAKING");
+ bool parsed_value;
+ bool parse_succeeded = gpr_parse_bool_value(value, &parsed_value);
+ gpr_free(value);
+ return parse_succeeded && parsed_value;
+}
+
+// Config for xDS Cluster Impl LB policy.
+class XdsClusterImplLbConfig : public LoadBalancingPolicy::Config {
+ public:
+ XdsClusterImplLbConfig(
+ RefCountedPtr<LoadBalancingPolicy::Config> child_policy,
+ std::string cluster_name, std::string eds_service_name,
+ absl::optional<std::string> lrs_load_reporting_server_name,
+ uint32_t max_concurrent_requests,
+ RefCountedPtr<XdsApi::EdsUpdate::DropConfig> drop_config)
+ : child_policy_(std::move(child_policy)),
+ cluster_name_(std::move(cluster_name)),
+ eds_service_name_(std::move(eds_service_name)),
+ lrs_load_reporting_server_name_(
+ std::move(lrs_load_reporting_server_name)),
+ max_concurrent_requests_(max_concurrent_requests),
+ drop_config_(std::move(drop_config)) {}
+
+ const char* name() const override { return kXdsClusterImpl; }
+
+ RefCountedPtr<LoadBalancingPolicy::Config> child_policy() const {
+ return child_policy_;
+ }
+ const std::string& cluster_name() const { return cluster_name_; }
+ const std::string& eds_service_name() const { return eds_service_name_; }
+ const absl::optional<std::string>& lrs_load_reporting_server_name() const {
+ return lrs_load_reporting_server_name_;
+ };
+ const uint32_t max_concurrent_requests() const {
+ return max_concurrent_requests_;
+ }
+ RefCountedPtr<XdsApi::EdsUpdate::DropConfig> drop_config() const {
+ return drop_config_;
+ }
+
+ private:
+ RefCountedPtr<LoadBalancingPolicy::Config> child_policy_;
+ std::string cluster_name_;
+ std::string eds_service_name_;
+ absl::optional<std::string> lrs_load_reporting_server_name_;
+ uint32_t max_concurrent_requests_;
+ RefCountedPtr<XdsApi::EdsUpdate::DropConfig> drop_config_;
+};
+
+// xDS Cluster Impl LB policy.
+class XdsClusterImplLb : public LoadBalancingPolicy {
+ public:
+ XdsClusterImplLb(RefCountedPtr<XdsClient> xds_client, Args args);
+
+ const char* name() const override { return kXdsClusterImpl; }
+
+ void UpdateLocked(UpdateArgs args) override;
+ void ExitIdleLocked() override;
+ void ResetBackoffLocked() override;
+
+ private:
+ class StatsSubchannelWrapper : public DelegatingSubchannel {
+ public:
+ StatsSubchannelWrapper(
+ RefCountedPtr<SubchannelInterface> wrapped_subchannel,
+ RefCountedPtr<XdsClusterLocalityStats> locality_stats)
+ : DelegatingSubchannel(std::move(wrapped_subchannel)),
+ locality_stats_(std::move(locality_stats)) {}
+
+ XdsClusterLocalityStats* locality_stats() const {
+ return locality_stats_.get();
+ }
+
+ private:
+ RefCountedPtr<XdsClusterLocalityStats> locality_stats_;
+ };
+
+ // A simple wrapper for ref-counting a picker from the child policy.
+ class RefCountedPicker : public RefCounted<RefCountedPicker> {
+ public:
+ explicit RefCountedPicker(std::unique_ptr<SubchannelPicker> picker)
+ : picker_(std::move(picker)) {}
+ PickResult Pick(PickArgs args) { return picker_->Pick(args); }
+
+ private:
+ std::unique_ptr<SubchannelPicker> picker_;
+ };
+
+ // A picker that wraps the picker from the child to perform drops.
+ class Picker : public SubchannelPicker {
+ public:
+ Picker(XdsClusterImplLb* xds_cluster_impl_lb,
+ RefCountedPtr<RefCountedPicker> picker);
+
+ PickResult Pick(PickArgs args) override;
+
+ private:
+ RefCountedPtr<CircuitBreakerCallCounterMap::CallCounter> call_counter_;
+ bool xds_circuit_breaking_enabled_;
+ uint32_t max_concurrent_requests_;
+ RefCountedPtr<XdsApi::EdsUpdate::DropConfig> drop_config_;
+ RefCountedPtr<XdsClusterDropStats> drop_stats_;
+ RefCountedPtr<RefCountedPicker> picker_;
+ };
+
+ class Helper : public ChannelControlHelper {
+ public:
+ explicit Helper(RefCountedPtr<XdsClusterImplLb> xds_cluster_impl_policy)
+ : xds_cluster_impl_policy_(std::move(xds_cluster_impl_policy)) {}
+
+ ~Helper() override {
+ xds_cluster_impl_policy_.reset(DEBUG_LOCATION, "Helper");
+ }
+
+ RefCountedPtr<SubchannelInterface> CreateSubchannel(
+ ServerAddress address, const grpc_channel_args& args) override;
+ void UpdateState(grpc_connectivity_state state, const absl::Status& status,
+ std::unique_ptr<SubchannelPicker> picker) override;
+ void RequestReresolution() override;
+ void AddTraceEvent(TraceSeverity severity,
+ absl::string_view message) override;
+
+ private:
+ RefCountedPtr<XdsClusterImplLb> xds_cluster_impl_policy_;
+ };
+
+ ~XdsClusterImplLb() override;
+
+ void ShutdownLocked() override;
+
+ OrphanablePtr<LoadBalancingPolicy> CreateChildPolicyLocked(
+ const grpc_channel_args* args);
+ void UpdateChildPolicyLocked(ServerAddressList addresses,
+ const grpc_channel_args* args);
+
+ void MaybeUpdatePickerLocked();
+
+ // Current config from the resolver.
+ RefCountedPtr<XdsClusterImplLbConfig> config_;
+
+ // Current concurrent number of requests.
+ RefCountedPtr<CircuitBreakerCallCounterMap::CallCounter> call_counter_;
+
+ // Internal state.
+ bool shutting_down_ = false;
+
+ // The xds client.
+ RefCountedPtr<XdsClient> xds_client_;
+
+ // The stats for client-side load reporting.
+ RefCountedPtr<XdsClusterDropStats> drop_stats_;
+
+ OrphanablePtr<LoadBalancingPolicy> child_policy_;
+
+ // Latest state and picker reported by the child policy.
+ grpc_connectivity_state state_ = GRPC_CHANNEL_IDLE;
+ absl::Status status_;
+ RefCountedPtr<RefCountedPicker> picker_;
+};
+
+//
+// XdsClusterImplLb::Picker
+//
+
+XdsClusterImplLb::Picker::Picker(XdsClusterImplLb* xds_cluster_impl_lb,
+ RefCountedPtr<RefCountedPicker> picker)
+ : call_counter_(xds_cluster_impl_lb->call_counter_),
+ xds_circuit_breaking_enabled_(XdsCircuitBreakingEnabled()),
+ max_concurrent_requests_(
+ xds_cluster_impl_lb->config_->max_concurrent_requests()),
+ drop_config_(xds_cluster_impl_lb->config_->drop_config()),
+ drop_stats_(xds_cluster_impl_lb->drop_stats_),
+ picker_(std::move(picker)) {
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_cluster_impl_lb_trace)) {
+ gpr_log(GPR_INFO, "[xds_cluster_impl_lb %p] constructed new picker %p",
+ xds_cluster_impl_lb, this);
+ }
+}
+
+LoadBalancingPolicy::PickResult XdsClusterImplLb::Picker::Pick(
+ LoadBalancingPolicy::PickArgs args) {
+ // Handle EDS drops.
+ const std::string* drop_category;
+ if (drop_config_->ShouldDrop(&drop_category)) {
+ if (drop_stats_ != nullptr) drop_stats_->AddCallDropped(*drop_category);
+ PickResult result;
+ result.type = PickResult::PICK_COMPLETE;
+ return result;
+ }
+ // Handle circuit breaking.
+ uint32_t current = call_counter_->Increment();
+ if (xds_circuit_breaking_enabled_) {
+ // Check and see if we exceeded the max concurrent requests count.
+ if (current >= max_concurrent_requests_) {
+ call_counter_->Decrement();
+ if (drop_stats_ != nullptr) drop_stats_->AddUncategorizedDrops();
+ PickResult result;
+ result.type = PickResult::PICK_COMPLETE;
+ return result;
+ }
+ }
+ // If we're not dropping the call, we should always have a child picker.
+ if (picker_ == nullptr) { // Should never happen.
+ PickResult result;
+ result.type = PickResult::PICK_FAILED;
+ result.error = grpc_error_set_int(
+ GRPC_ERROR_CREATE_FROM_STATIC_STRING(
+ "xds_cluster_impl picker not given any child picker"),
+ GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_INTERNAL);
+ call_counter_->Decrement();
+ return result;
+ }
+ // Not dropping, so delegate to child picker.
+ PickResult result = picker_->Pick(args);
+ if (result.type == result.PICK_COMPLETE && result.subchannel != nullptr) {
+ XdsClusterLocalityStats* locality_stats = nullptr;
+ if (drop_stats_ != nullptr) { // If load reporting is enabled.
+ auto* subchannel_wrapper =
+ static_cast<StatsSubchannelWrapper*>(result.subchannel.get());
+ // Handle load reporting.
+ locality_stats = subchannel_wrapper->locality_stats()->Ref().release();
+ // Record a call started.
+ locality_stats->AddCallStarted();
+ // Unwrap subchannel to pass back up the stack.
+ result.subchannel = subchannel_wrapper->wrapped_subchannel();
+ }
+ // Intercept the recv_trailing_metadata op to record call completion.
+ auto* call_counter = call_counter_->Ref(DEBUG_LOCATION, "call").release();
+ auto original_recv_trailing_metadata_ready =
+ result.recv_trailing_metadata_ready;
+ result.recv_trailing_metadata_ready =
+ // Note: This callback does not run in either the control plane
+ // work serializer or in the data plane mutex.
+ [locality_stats, original_recv_trailing_metadata_ready, call_counter](
+ grpc_error* error, MetadataInterface* metadata,
+ CallState* call_state) {
+ // Record call completion for load reporting.
+ if (locality_stats != nullptr) {
+ const bool call_failed = error != GRPC_ERROR_NONE;
+ locality_stats->AddCallFinished(call_failed);
+ locality_stats->Unref(DEBUG_LOCATION, "LocalityStats+call");
+ }
+ // Decrement number of calls in flight.
+ call_counter->Decrement();
+ call_counter->Unref(DEBUG_LOCATION, "call");
+ // Invoke the original recv_trailing_metadata_ready callback, if any.
+ if (original_recv_trailing_metadata_ready != nullptr) {
+ original_recv_trailing_metadata_ready(error, metadata, call_state);
+ }
+ };
+ } else {
+ // TODO(roth): We should ideally also record call failures here in the case
+ // where a pick fails. This is challenging, because we don't know which
+ // picks are for wait_for_ready RPCs or how many times we'll return a
+ // failure for the same wait_for_ready RPC.
+ call_counter_->Decrement();
+ }
+ return result;
+}
+
+//
+// XdsClusterImplLb
+//
+
+XdsClusterImplLb::XdsClusterImplLb(RefCountedPtr<XdsClient> xds_client,
+ Args args)
+ : LoadBalancingPolicy(std::move(args)), xds_client_(std::move(xds_client)) {
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_cluster_impl_lb_trace)) {
+ gpr_log(GPR_INFO, "[xds_cluster_impl_lb %p] created -- using xds client %p",
+ this, xds_client_.get());
+ }
+}
+
+XdsClusterImplLb::~XdsClusterImplLb() {
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_cluster_impl_lb_trace)) {
+ gpr_log(GPR_INFO,
+ "[xds_cluster_impl_lb %p] destroying xds_cluster_impl LB policy",
+ this);
+ }
+}
+
+void XdsClusterImplLb::ShutdownLocked() {
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_cluster_impl_lb_trace)) {
+ gpr_log(GPR_INFO, "[xds_cluster_impl_lb %p] shutting down", this);
+ }
+ shutting_down_ = true;
+ // Remove the child policy's interested_parties pollset_set from the
+ // xDS policy.
+ if (child_policy_ != nullptr) {
+ grpc_pollset_set_del_pollset_set(child_policy_->interested_parties(),
+ interested_parties());
+ child_policy_.reset();
+ }
+ // Drop our ref to the child's picker, in case it's holding a ref to
+ // the child.
+ picker_.reset();
+ drop_stats_.reset();
+ xds_client_.reset();
+}
+
+void XdsClusterImplLb::ExitIdleLocked() {
+ if (child_policy_ != nullptr) child_policy_->ExitIdleLocked();
+}
+
+void XdsClusterImplLb::ResetBackoffLocked() {
+ // The XdsClient will have its backoff reset by the xds resolver, so we
+ // don't need to do it here.
+ if (child_policy_ != nullptr) child_policy_->ResetBackoffLocked();
+}
+
+void XdsClusterImplLb::UpdateLocked(UpdateArgs args) {
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_cluster_impl_lb_trace)) {
+ gpr_log(GPR_INFO, "[xds_cluster_impl_lb %p] Received update", this);
+ }
+ // Update config.
+ const bool is_initial_update = config_ == nullptr;
+ auto old_config = std::move(config_);
+ config_ = std::move(args.config);
+ // On initial update, create drop stats.
+ if (is_initial_update) {
+ if (config_->lrs_load_reporting_server_name().has_value()) {
+ drop_stats_ = xds_client_->AddClusterDropStats(
+ config_->lrs_load_reporting_server_name().value(),
+ config_->cluster_name(), config_->eds_service_name());
+ }
+ call_counter_ = g_call_counter_map->GetOrCreate(
+ config_->cluster_name(), config_->eds_service_name());
+ } else {
+ // Cluster name, EDS service name, and LRS server name should never
+ // change, because the EDS policy above us should be swapped out if
+ // that happens.
+ GPR_ASSERT(config_->cluster_name() == old_config->cluster_name());
+ GPR_ASSERT(config_->eds_service_name() == old_config->eds_service_name());
+ GPR_ASSERT(config_->lrs_load_reporting_server_name() ==
+ old_config->lrs_load_reporting_server_name());
+ }
+ // Update picker if max_concurrent_requests has changed.
+ if (is_initial_update || config_->max_concurrent_requests() !=
+ old_config->max_concurrent_requests()) {
+ MaybeUpdatePickerLocked();
+ }
+ // Update child policy.
+ UpdateChildPolicyLocked(std::move(args.addresses), args.args);
+ args.args = nullptr;
+}
+
+void XdsClusterImplLb::MaybeUpdatePickerLocked() {
+ // If we're dropping all calls, report READY, regardless of what (or
+ // whether) the child has reported.
+ if (config_->drop_config() != nullptr && config_->drop_config()->drop_all()) {
+ auto drop_picker = absl::make_unique<Picker>(this, picker_);
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_cluster_impl_lb_trace)) {
+ gpr_log(GPR_INFO,
+ "[xds_cluster_impl_lb %p] updating connectivity (drop all): "
+ "state=READY "
+ "picker=%p",
+ this, drop_picker.get());
+ }
+ channel_control_helper()->UpdateState(GRPC_CHANNEL_READY, absl::Status(),
+ std::move(drop_picker));
+ return;
+ }
+ // Otherwise, update only if we have a child picker.
+ if (picker_ != nullptr) {
+ auto drop_picker = absl::make_unique<Picker>(this, picker_);
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_cluster_impl_lb_trace)) {
+ gpr_log(GPR_INFO,
+ "[xds_cluster_impl_lb %p] updating connectivity: state=%s "
+ "status=(%s) "
+ "picker=%p",
+ this, ConnectivityStateName(state_), status_.ToString().c_str(),
+ drop_picker.get());
+ }
+ channel_control_helper()->UpdateState(state_, status_,
+ std::move(drop_picker));
+ }
+}
+
+OrphanablePtr<LoadBalancingPolicy> XdsClusterImplLb::CreateChildPolicyLocked(
+ const grpc_channel_args* args) {
+ LoadBalancingPolicy::Args lb_policy_args;
+ lb_policy_args.work_serializer = work_serializer();
+ lb_policy_args.args = args;
+ lb_policy_args.channel_control_helper =
+ absl::make_unique<Helper>(Ref(DEBUG_LOCATION, "Helper"));
+ OrphanablePtr<LoadBalancingPolicy> lb_policy =
+ MakeOrphanable<ChildPolicyHandler>(std::move(lb_policy_args),
+ &grpc_xds_cluster_impl_lb_trace);
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_cluster_impl_lb_trace)) {
+ gpr_log(GPR_INFO,
+ "[xds_cluster_impl_lb %p] Created new child policy handler %p",
+ this, lb_policy.get());
+ }
+ // Add our interested_parties pollset_set to that of the newly created
+ // child policy. This will make the child policy progress upon activity on
+ // this policy, which in turn is tied to the application's call.
+ grpc_pollset_set_add_pollset_set(lb_policy->interested_parties(),
+ interested_parties());
+ return lb_policy;
+}
+
+void XdsClusterImplLb::UpdateChildPolicyLocked(ServerAddressList addresses,
+ const grpc_channel_args* args) {
+ // Create policy if needed.
+ if (child_policy_ == nullptr) {
+ child_policy_ = CreateChildPolicyLocked(args);
+ }
+ // Construct update args.
+ UpdateArgs update_args;
+ update_args.addresses = std::move(addresses);
+ update_args.config = config_->child_policy();
+ update_args.args = args;
+ // Update the policy.
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_cluster_impl_lb_trace)) {
+ gpr_log(GPR_INFO,
+ "[xds_cluster_impl_lb %p] Updating child policy handler %p", this,
+ child_policy_.get());
+ }
+ child_policy_->UpdateLocked(std::move(update_args));
+}
+
+//
+// XdsClusterImplLb::Helper
+//
+
+RefCountedPtr<SubchannelInterface> XdsClusterImplLb::Helper::CreateSubchannel(
+ ServerAddress address, const grpc_channel_args& args) {
+ if (xds_cluster_impl_policy_->shutting_down_) return nullptr;
+ // If load reporting is enabled, wrap the subchannel such that it
+ // includes the locality stats object, which will be used by the EdsPicker.
+ if (xds_cluster_impl_policy_->config_->lrs_load_reporting_server_name()
+ .has_value()) {
+ RefCountedPtr<XdsLocalityName> locality_name;
+ auto* attribute = address.GetAttribute(kXdsLocalityNameAttributeKey);
+ if (attribute != nullptr) {
+ const auto* locality_attr =
+ static_cast<const XdsLocalityAttribute*>(attribute);
+ locality_name = locality_attr->locality_name();
+ }
+ RefCountedPtr<XdsClusterLocalityStats> locality_stats =
+ xds_cluster_impl_policy_->xds_client_->AddClusterLocalityStats(
+ *xds_cluster_impl_policy_->config_
+ ->lrs_load_reporting_server_name(),
+ xds_cluster_impl_policy_->config_->cluster_name(),
+ xds_cluster_impl_policy_->config_->eds_service_name(),
+ std::move(locality_name));
+ return MakeRefCounted<StatsSubchannelWrapper>(
+ xds_cluster_impl_policy_->channel_control_helper()->CreateSubchannel(
+ std::move(address), args),
+ std::move(locality_stats));
+ }
+ // Load reporting not enabled, so don't wrap the subchannel.
+ return xds_cluster_impl_policy_->channel_control_helper()->CreateSubchannel(
+ std::move(address), args);
+}
+
+void XdsClusterImplLb::Helper::UpdateState(
+ grpc_connectivity_state state, const absl::Status& status,
+ std::unique_ptr<SubchannelPicker> picker) {
+ if (xds_cluster_impl_policy_->shutting_down_) return;
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_cluster_impl_lb_trace)) {
+ gpr_log(GPR_INFO,
+ "[xds_cluster_impl_lb %p] child connectivity state update: "
+ "state=%s (%s) "
+ "picker=%p",
+ xds_cluster_impl_policy_.get(), ConnectivityStateName(state),
+ status.ToString().c_str(), picker.get());
+ }
+ // Save the state and picker.
+ xds_cluster_impl_policy_->state_ = state;
+ xds_cluster_impl_policy_->status_ = status;
+ xds_cluster_impl_policy_->picker_ =
+ MakeRefCounted<RefCountedPicker>(std::move(picker));
+ // Wrap the picker and return it to the channel.
+ xds_cluster_impl_policy_->MaybeUpdatePickerLocked();
+}
+
+void XdsClusterImplLb::Helper::RequestReresolution() {
+ if (xds_cluster_impl_policy_->shutting_down_) return;
+ xds_cluster_impl_policy_->channel_control_helper()->RequestReresolution();
+}
+
+void XdsClusterImplLb::Helper::AddTraceEvent(TraceSeverity severity,
+ absl::string_view message) {
+ if (xds_cluster_impl_policy_->shutting_down_) return;
+ xds_cluster_impl_policy_->channel_control_helper()->AddTraceEvent(severity,
+ message);
+}
+
+//
+// factory
+//
+
+class XdsClusterImplLbFactory : public LoadBalancingPolicyFactory {
+ public:
+ OrphanablePtr<LoadBalancingPolicy> CreateLoadBalancingPolicy(
+ LoadBalancingPolicy::Args args) const override {
+ grpc_error* error = GRPC_ERROR_NONE;
+ RefCountedPtr<XdsClient> xds_client = XdsClient::GetOrCreate(&error);
+ if (error != GRPC_ERROR_NONE) {
+ gpr_log(
+ GPR_ERROR,
+ "cannot get XdsClient to instantiate xds_cluster_impl LB policy: %s",
+ grpc_error_string(error));
+ GRPC_ERROR_UNREF(error);
+ return nullptr;
+ }
+ return MakeOrphanable<XdsClusterImplLb>(std::move(xds_client),
+ std::move(args));
+ }
+
+ const char* name() const override { return kXdsClusterImpl; }
+
+ RefCountedPtr<LoadBalancingPolicy::Config> ParseLoadBalancingConfig(
+ const Json& json, grpc_error** error) const override {
+ GPR_DEBUG_ASSERT(error != nullptr && *error == GRPC_ERROR_NONE);
+ if (json.type() == Json::Type::JSON_NULL) {
+ // This policy was configured in the deprecated loadBalancingPolicy
+ // field or in the client API.
+ *error = GRPC_ERROR_CREATE_FROM_STATIC_STRING(
+ "field:loadBalancingPolicy error:xds_cluster_impl policy requires "
+ "configuration. Please use loadBalancingConfig field of service "
+ "config instead.");
+ return nullptr;
+ }
+ std::vector<grpc_error*> error_list;
+ // Child policy.
+ RefCountedPtr<LoadBalancingPolicy::Config> child_policy;
+ auto it = json.object_value().find("childPolicy");
+ if (it == json.object_value().end()) {
+ error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
+ "field:childPolicy error:required field missing"));
+ } else {
+ grpc_error* parse_error = GRPC_ERROR_NONE;
+ child_policy = LoadBalancingPolicyRegistry::ParseLoadBalancingConfig(
+ it->second, &parse_error);
+ if (child_policy == nullptr) {
+ GPR_DEBUG_ASSERT(parse_error != GRPC_ERROR_NONE);
+ std::vector<grpc_error*> child_errors;
+ child_errors.push_back(parse_error);
+ error_list.push_back(
+ GRPC_ERROR_CREATE_FROM_VECTOR("field:childPolicy", &child_errors));
+ }
+ }
+ // Cluster name.
+ std::string cluster_name;
+ it = json.object_value().find("clusterName");
+ if (it == json.object_value().end()) {
+ error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
+ "field:clusterName error:required field missing"));
+ } else if (it->second.type() != Json::Type::STRING) {
+ error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
+ "field:clusterName error:type should be string"));
+ } else {
+ cluster_name = it->second.string_value();
+ }
+ // EDS service name.
+ std::string eds_service_name;
+ it = json.object_value().find("edsServiceName");
+ if (it != json.object_value().end()) {
+ if (it->second.type() != Json::Type::STRING) {
+ error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
+ "field:edsServiceName error:type should be string"));
+ } else {
+ eds_service_name = it->second.string_value();
+ }
+ }
+ // LRS load reporting server name.
+ absl::optional<std::string> lrs_load_reporting_server_name;
+ it = json.object_value().find("lrsLoadReportingServerName");
+ if (it != json.object_value().end()) {
+ if (it->second.type() != Json::Type::STRING) {
+ error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
+ "field:lrsLoadReportingServerName error:type should be string"));
+ } else {
+ lrs_load_reporting_server_name = it->second.string_value();
+ }
+ }
+ // Max concurrent requests.
+ uint32_t max_concurrent_requests = 1024;
+ it = json.object_value().find("maxConcurrentRequests");
+ if (it != json.object_value().end()) {
+ if (it->second.type() != Json::Type::NUMBER) {
+ error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
+ "field:max_concurrent_requests error:must be of type number"));
+ } else {
+ max_concurrent_requests =
+ gpr_parse_nonnegative_int(it->second.string_value().c_str());
+ }
+ }
+ // Drop config.
+ auto drop_config = MakeRefCounted<XdsApi::EdsUpdate::DropConfig>();
+ it = json.object_value().find("dropCategories");
+ if (it == json.object_value().end()) {
+ error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
+ "field:dropCategories error:required field missing"));
+ } else {
+ std::vector<grpc_error*> child_errors =
+ ParseDropCategories(it->second, drop_config.get());
+ if (!child_errors.empty()) {
+ error_list.push_back(GRPC_ERROR_CREATE_FROM_VECTOR(
+ "field:dropCategories", &child_errors));
+ }
+ }
+ if (!error_list.empty()) {
+ *error = GRPC_ERROR_CREATE_FROM_VECTOR(
+ "xds_cluster_impl_experimental LB policy config", &error_list);
+ return nullptr;
+ }
+ return MakeRefCounted<XdsClusterImplLbConfig>(
+ std::move(child_policy), std::move(cluster_name),
+ std::move(eds_service_name), std::move(lrs_load_reporting_server_name),
+ max_concurrent_requests, std::move(drop_config));
+ }
+
+ private:
+ static std::vector<grpc_error*> ParseDropCategories(
+ const Json& json, XdsApi::EdsUpdate::DropConfig* drop_config) {
+ std::vector<grpc_error*> error_list;
+ if (json.type() != Json::Type::ARRAY) {
+ error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
+ "dropCategories field is not an array"));
+ return error_list;
+ }
+ for (size_t i = 0; i < json.array_value().size(); ++i) {
+ const Json& entry = json.array_value()[i];
+ std::vector<grpc_error*> child_errors =
+ ParseDropCategory(entry, drop_config);
+ if (!child_errors.empty()) {
+ grpc_error* error = GRPC_ERROR_CREATE_FROM_COPIED_STRING(
+ absl::StrCat("errors parsing index ", i).c_str());
+ for (size_t i = 0; i < child_errors.size(); ++i) {
+ error = grpc_error_add_child(error, child_errors[i]);
+ }
+ error_list.push_back(error);
+ }
+ }
+ return error_list;
+ }
+
+ static std::vector<grpc_error*> ParseDropCategory(
+ const Json& json, XdsApi::EdsUpdate::DropConfig* drop_config) {
+ std::vector<grpc_error*> error_list;
+ if (json.type() != Json::Type::OBJECT) {
+ error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
+ "dropCategories entry is not an object"));
+ return error_list;
+ }
+ std::string category;
+ auto it = json.object_value().find("category");
+ if (it == json.object_value().end()) {
+ error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
+ "\"category\" field not present"));
+ } else if (it->second.type() != Json::Type::STRING) {
+ error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
+ "\"category\" field is not a string"));
+ } else {
+ category = it->second.string_value();
+ }
+ uint32_t requests_per_million = 0;
+ it = json.object_value().find("requests_per_million");
+ if (it == json.object_value().end()) {
+ error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
+ "\"requests_per_million\" field is not present"));
+ } else if (it->second.type() != Json::Type::NUMBER) {
+ error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
+ "\"requests_per_million\" field is not a number"));
+ } else {
+ requests_per_million =
+ gpr_parse_nonnegative_int(it->second.string_value().c_str());
+ }
+ if (error_list.empty()) {
+ drop_config->AddCategory(std::move(category), requests_per_million);
+ }
+ return error_list;
+ }
+};
+
+} // namespace
+
+} // namespace grpc_core
+
+//
+// Plugin registration
+//
+
+void grpc_lb_policy_xds_cluster_impl_init() {
+ grpc_core::g_call_counter_map = new grpc_core::CircuitBreakerCallCounterMap();
+ grpc_core::LoadBalancingPolicyRegistry::Builder::
+ RegisterLoadBalancingPolicyFactory(
+ absl::make_unique<grpc_core::XdsClusterImplLbFactory>());
+}
+
+void grpc_lb_policy_xds_cluster_impl_shutdown() {
+ delete grpc_core::g_call_counter_map;
+}
#include <grpc/support/port_platform.h>
-#include <inttypes.h>
-#include <limits.h>
-#include <string.h>
+#include <set>
+#include <string>
+#include <vector>
-#include "absl/container/inlined_vector.h"
-#include "absl/strings/match.h"
-#include "absl/strings/numbers.h"
+#include "absl/status/status.h"
#include "absl/strings/str_cat.h"
-#include "absl/strings/str_join.h"
-#include "absl/strings/str_split.h"
#include "absl/strings/string_view.h"
-#include "re2/re2.h"
#include <grpc/grpc.h>
#include "src/core/ext/filters/client_channel/lb_policy_factory.h"
#include "src/core/ext/filters/client_channel/lb_policy_registry.h"
#include "src/core/ext/filters/client_channel/resolver/xds/xds_resolver.h"
-#include "src/core/ext/xds/xds_api.h"
#include "src/core/lib/channel/channel_args.h"
#include "src/core/lib/gpr/string.h"
#include "src/core/lib/gprpp/orphanable.h"
// It is required that the keys of cluster_map have to live at least as long
// as the ClusterPicker instance.
- ClusterPicker(ClusterMap cluster_map,
- RefCountedPtr<XdsClusterManagerLbConfig> config)
- : cluster_map_(std::move(cluster_map)), config_(std::move(config)) {}
+ explicit ClusterPicker(ClusterMap cluster_map)
+ : cluster_map_(std::move(cluster_map)) {}
PickResult Pick(PickArgs args) override;
private:
ClusterMap cluster_map_;
- // Take a reference to config so that we can use
- // XdsApi::RdsUpdate::RdsRoute::Matchers from it.
- RefCountedPtr<XdsClusterManagerLbConfig> config_;
};
// Each ClusterChild holds a ref to its parent XdsClusterManagerLb.
public:
ClusterChild(RefCountedPtr<XdsClusterManagerLb> xds_cluster_manager_policy,
const std::string& name);
- ~ClusterChild();
+ ~ClusterChild() override;
void Orphan() override;
explicit Helper(RefCountedPtr<ClusterChild> xds_cluster_manager_child)
: xds_cluster_manager_child_(std::move(xds_cluster_manager_child)) {}
- ~Helper() { xds_cluster_manager_child_.reset(DEBUG_LOCATION, "Helper"); }
+ ~Helper() override {
+ xds_cluster_manager_child_.reset(DEBUG_LOCATION, "Helper");
+ }
RefCountedPtr<SubchannelInterface> CreateSubchannel(
ServerAddress address, const grpc_channel_args& args) override;
bool shutdown_ = false;
};
- ~XdsClusterManagerLb();
+ ~XdsClusterManagerLb() override;
void ShutdownLocked() override;
Ref(DEBUG_LOCATION, "QueuePicker")));
}
}
- picker =
- absl::make_unique<ClusterPicker>(std::move(cluster_map), config_);
+ picker = absl::make_unique<ClusterPicker>(std::move(cluster_map));
break;
}
case GRPC_CHANNEL_CONNECTING:
RefCountedPtr<SubchannelInterface>
XdsClusterManagerLb::ClusterChild::Helper::CreateSubchannel(
ServerAddress address, const grpc_channel_args& args) {
- if (xds_cluster_manager_child_->xds_cluster_manager_policy_->shutting_down_)
+ if (xds_cluster_manager_child_->xds_cluster_manager_policy_->shutting_down_) {
return nullptr;
+ }
return xds_cluster_manager_child_->xds_cluster_manager_policy_
->channel_control_helper()
->CreateSubchannel(std::move(address), args);
xds_cluster_manager_child_->name_.c_str(), ConnectivityStateName(state),
status.ToString().c_str(), picker.get());
}
- if (xds_cluster_manager_child_->xds_cluster_manager_policy_->shutting_down_)
+ if (xds_cluster_manager_child_->xds_cluster_manager_policy_->shutting_down_) {
return;
+ }
// Cache the picker in the ClusterChild.
xds_cluster_manager_child_->picker_wrapper_ =
MakeRefCounted<ChildPickerWrapper>(xds_cluster_manager_child_->name_,
}
void XdsClusterManagerLb::ClusterChild::Helper::RequestReresolution() {
- if (xds_cluster_manager_child_->xds_cluster_manager_policy_->shutting_down_)
+ if (xds_cluster_manager_child_->xds_cluster_manager_policy_->shutting_down_) {
return;
+ }
xds_cluster_manager_child_->xds_cluster_manager_policy_
->channel_control_helper()
->RequestReresolution();
void XdsClusterManagerLb::ClusterChild::Helper::AddTraceEvent(
TraceSeverity severity, absl::string_view message) {
- if (xds_cluster_manager_child_->xds_cluster_manager_policy_->shutting_down_)
+ if (xds_cluster_manager_child_->xds_cluster_manager_policy_->shutting_down_) {
return;
+ }
xds_cluster_manager_child_->xds_cluster_manager_policy_
->channel_control_helper()
->AddTraceEvent(severity, message);
Resolver::Resolver(std::shared_ptr<WorkSerializer> work_serializer,
std::unique_ptr<ResultHandler> result_handler)
- : InternallyRefCounted(&grpc_trace_resolver_refcount),
+ : InternallyRefCounted(GRPC_TRACE_FLAG_ENABLED(grpc_trace_resolver_refcount)
+ ? "Resolver"
+ : nullptr),
work_serializer_(std::move(work_serializer)),
result_handler_(std::move(result_handler)) {}
extern grpc_core::DebugOnlyTraceFlag grpc_trace_resolver_refcount;
+// Name associated with individual address, if available.
+#define GRPC_ARG_ADDRESS_NAME "grpc.address_name"
+
namespace grpc_core {
/// Interface for name resolution.
// Not copyable nor movable.
Resolver(const Resolver&) = delete;
Resolver& operator=(const Resolver&) = delete;
- virtual ~Resolver() = default;
+ ~Resolver() override = default;
/// Starts resolving.
virtual void StartLocked() = 0;
void ShutdownLocked() override;
private:
- virtual ~AresDnsResolver();
+ ~AresDnsResolver() override;
void MaybeStartResolvingLocked();
void StartResolvingLocked();
grpc_pollset_set_add_fd(driver_pollset_set_, fd_);
}
- ~GrpcPolledFdPosix() {
+ ~GrpcPolledFdPosix() override {
grpc_pollset_set_del_fd(driver_pollset_set_, fd_);
/* c-ares library will close the fd inside grpc_fd. This fd may be picked up
immediately by another thread, and should not be closed by the following
void ShutdownLocked() override;
private:
- virtual ~NativeDnsResolver();
+ ~NativeDnsResolver() override;
void MaybeStartResolvingLocked();
void StartResolvingLocked();
friend class FakeResolverResponseGenerator;
friend class FakeResolverResponseSetter;
- virtual ~FakeResolver();
+ ~FakeResolver() override;
void ShutdownLocked() override;
: public RefCounted<FakeResolverResponseGenerator> {
public:
FakeResolverResponseGenerator();
- ~FakeResolverResponseGenerator();
+ ~FakeResolverResponseGenerator() override;
// Instructs the fake resolver associated with the response generator
// instance to trigger a new resolution with the specified result. If the
const char* scheme() const override { return "unix"; }
};
+
+class UnixAbstractResolverFactory : public ResolverFactory {
+ public:
+ bool IsValidUri(const grpc_uri* uri) const override {
+ return ParseUri(uri, grpc_parse_unix_abstract, nullptr);
+ }
+
+ OrphanablePtr<Resolver> CreateResolver(ResolverArgs args) const override {
+ return CreateSockaddrResolver(std::move(args), grpc_parse_unix_abstract);
+ }
+
+ grpc_core::UniquePtr<char> GetDefaultAuthority(
+ grpc_uri* /*uri*/) const override {
+ return grpc_core::UniquePtr<char>(gpr_strdup("localhost"));
+ }
+
+ const char* scheme() const override { return "unix-abstract"; }
+};
#endif // GRPC_HAVE_UNIX_SOCKET
} // namespace
#ifdef GRPC_HAVE_UNIX_SOCKET
grpc_core::ResolverRegistry::Builder::RegisterResolverFactory(
absl::make_unique<grpc_core::UnixResolverFactory>());
+ grpc_core::ResolverRegistry::Builder::RegisterResolverFactory(
+ absl::make_unique<grpc_core::UnixAbstractResolverFactory>());
#endif
}
class XdsConfigSelector : public ConfigSelector {
public:
XdsConfigSelector(RefCountedPtr<XdsResolver> resolver,
- const std::vector<XdsApi::Route>& routes);
- ~XdsConfigSelector();
+ const std::vector<XdsApi::Route>& routes,
+ grpc_error* error);
+ ~XdsConfigSelector() override;
const char* name() const override { return "XdsConfigSelector"; }
XdsApi::Route route;
absl::InlinedVector<std::pair<uint32_t, absl::string_view>, 2>
weighted_cluster_state;
+ RefCountedPtr<ServiceConfig> method_config;
bool operator==(const Route& other) const {
return route == other.route &&
weighted_cluster_state == other.weighted_cluster_state;
using RouteTable = std::vector<Route>;
void MaybeAddCluster(const std::string& name);
+ grpc_error* CreateMethodConfig(RefCountedPtr<ServiceConfig>* method_config,
+ const XdsApi::Route& route);
RefCountedPtr<XdsResolver> resolver_;
RouteTable route_table_;
XdsClient::RouteConfigWatcherInterface* route_config_watcher_ = nullptr;
ClusterState::ClusterStateMap cluster_state_map_;
std::vector<XdsApi::Route> current_update_;
+ XdsApi::Duration http_max_stream_duration_;
};
//
XdsResolver::XdsConfigSelector::XdsConfigSelector(
RefCountedPtr<XdsResolver> resolver,
- const std::vector<XdsApi::Route>& routes)
+ const std::vector<XdsApi::Route>& routes, grpc_error* error)
: resolver_(std::move(resolver)) {
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_resolver_trace)) {
gpr_log(GPR_INFO, "[xds_resolver %p] creating XdsConfigSelector %p",
route_table_.emplace_back();
auto& route_entry = route_table_.back();
route_entry.route = route;
+ // If the route doesn't specify a timeout, set its timeout to the global
+ // one.
+ if (!route.max_stream_duration.has_value()) {
+ route_entry.route.max_stream_duration =
+ resolver_->http_max_stream_duration_;
+ }
+ error = CreateMethodConfig(&route_entry.method_config, route_entry.route);
if (route.weighted_clusters.empty()) {
MaybeAddCluster(route.cluster_name);
} else {
}
}
+grpc_error* XdsResolver::XdsConfigSelector::CreateMethodConfig(
+ RefCountedPtr<ServiceConfig>* method_config, const XdsApi::Route& route) {
+ grpc_error* error = GRPC_ERROR_NONE;
+ std::vector<std::string> fields;
+ if (route.max_stream_duration.has_value() &&
+ (route.max_stream_duration->seconds != 0 ||
+ route.max_stream_duration->nanos != 0)) {
+ fields.emplace_back(absl::StrFormat(" \"timeout\": \"%d.%09ds\"",
+ route.max_stream_duration->seconds,
+ route.max_stream_duration->nanos));
+ }
+ if (!fields.empty()) {
+ std::string json = absl::StrCat(
+ "{\n"
+ " \"methodConfig\": [ {\n"
+ " \"name\": [\n"
+ " {}\n"
+ " ],\n"
+ " ",
+ absl::StrJoin(fields, ",\n"),
+ "\n } ]\n"
+ "}");
+ *method_config =
+ ServiceConfig::Create(resolver_->args_, json.c_str(), &error);
+ }
+ return error;
+}
+
XdsResolver::XdsConfigSelector::~XdsConfigSelector() {
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_resolver_trace)) {
gpr_log(GPR_INFO, "[xds_resolver %p] destroying XdsConfigSelector %p",
const XdsApi::Route::Matchers::PathMatcher& path_matcher) {
switch (path_matcher.type) {
case XdsApi::Route::Matchers::PathMatcher::PathMatcherType::PREFIX:
- return absl::StartsWith(path, path_matcher.string_matcher);
+ return path_matcher.case_sensitive
+ ? absl::StartsWith(path, path_matcher.string_matcher)
+ : absl::StartsWithIgnoreCase(path,
+ path_matcher.string_matcher);
case XdsApi::Route::Matchers::PathMatcher::PathMatcherType::PATH:
- return path == path_matcher.string_matcher;
+ return path_matcher.case_sensitive
+ ? path == path_matcher.string_matcher
+ : absl::EqualsIgnoreCase(path, path_matcher.string_matcher);
case XdsApi::Route::Matchers::PathMatcher::PathMatcherType::REGEX:
+ // Note: Case-sensitive option will already have been set appropriately
+ // in path_matcher.regex_matcher when it was constructed, so no
+ // need to check it here.
return RE2::FullMatch(path.data(), *path_matcher.regex_matcher);
default:
return false;
static_cast<XdsResolver*>(resolver_->Ref().release());
ClusterState* cluster_state = it->second->Ref().release();
CallConfig call_config;
+ if (entry.method_config != nullptr) {
+ call_config.service_config = entry.method_config;
+ call_config.method_configs =
+ entry.method_config->GetMethodParsedConfigVector(grpc_empty_slice());
+ }
call_config.call_attributes[kXdsClusterAttribute] = it->first;
call_config.on_call_committed = [resolver, cluster_state]() {
cluster_state->Unref();
xds_client_->WatchRouteConfigData(route_config_name_, std::move(watcher));
}
}
+ http_max_stream_duration_ = listener.http_max_stream_duration;
if (route_config_name_.empty()) {
GPR_ASSERT(listener.rds_update.has_value());
OnRouteConfigUpdate(std::move(*listener.rds_update));
if (current_update_.empty()) return;
// First create XdsConfigSelector, which may add new entries to the cluster
// state map, and then CreateServiceConfig for LB policies.
+ grpc_error* error = GRPC_ERROR_NONE;
auto config_selector =
- MakeRefCounted<XdsConfigSelector>(Ref(), current_update_);
+ MakeRefCounted<XdsConfigSelector>(Ref(), current_update_, error);
+ if (error != GRPC_ERROR_NONE) {
+ OnError(error);
+ return;
+ }
Result result;
- grpc_error* error = CreateServiceConfig(&result.service_config);
+ error = CreateServiceConfig(&result.service_config);
if (error != GRPC_ERROR_NONE) {
OnError(error);
return;
ResolverFactory* FindResolverFactory(const char* target, grpc_uri** uri,
std::string* canonical_target) const {
GPR_ASSERT(uri != nullptr);
- *uri = grpc_uri_parse(target, 1);
+ *uri = grpc_uri_parse(target, true);
ResolverFactory* factory =
*uri == nullptr ? nullptr : LookupResolverFactory((*uri)->scheme);
if (factory == nullptr) {
grpc_uri_destroy(*uri);
*canonical_target = absl::StrCat(default_prefix_.get(), target);
- *uri = grpc_uri_parse(canonical_target->c_str(), 1);
+ *uri = grpc_uri_parse(canonical_target->c_str(), true);
factory =
*uri == nullptr ? nullptr : LookupResolverFactory((*uri)->scheme);
if (factory == nullptr) {
- grpc_uri_destroy(grpc_uri_parse(target, 0));
- grpc_uri_destroy(grpc_uri_parse(canonical_target->c_str(), 0));
+ grpc_uri_destroy(grpc_uri_parse(target, false));
+ grpc_uri_destroy(grpc_uri_parse(canonical_target->c_str(), false));
gpr_log(GPR_ERROR, "don't know how to resolve '%s' or '%s'", target,
canonical_target->c_str());
}
}
}
// Parse initialBackoff.
- it = json.object_value().find("initialBackoff");
- if (it != json.object_value().end()) {
- if (!ParseDurationFromJson(it->second, &retry_policy->initial_backoff)) {
- error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "field:initialBackoff error:Failed to parse"));
- } else if (retry_policy->initial_backoff == 0) {
- error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "field:initialBackoff error:must be greater than 0"));
- }
+ if (ParseJsonObjectFieldAsDuration(json.object_value(), "initialBackoff",
+ &retry_policy->initial_backoff,
+ &error_list) &&
+ retry_policy->initial_backoff == 0) {
+ error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
+ "field:initialBackoff error:must be greater than 0"));
}
// Parse maxBackoff.
- it = json.object_value().find("maxBackoff");
- if (it != json.object_value().end()) {
- if (!ParseDurationFromJson(it->second, &retry_policy->max_backoff)) {
- error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "field:maxBackoff error:failed to parse"));
- } else if (retry_policy->max_backoff == 0) {
- error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "field:maxBackoff error:should be greater than 0"));
- }
+ if (ParseJsonObjectFieldAsDuration(json.object_value(), "maxBackoff",
+ &retry_policy->max_backoff, &error_list) &&
+ retry_policy->max_backoff == 0) {
+ error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
+ "field:maxBackoff error:should be greater than 0"));
}
// Parse backoffMultiplier.
it = json.object_value().find("backoffMultiplier");
}
}
// Parse timeout.
- it = json.object_value().find("timeout");
- if (it != json.object_value().end()) {
- if (!ParseDurationFromJson(it->second, &timeout)) {
- error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "field:timeout error:Failed parsing"));
- };
- }
+ ParseJsonObjectFieldAsDuration(json.object_value(), "timeout", &timeout,
+ &error_list, false);
// Parse retry policy.
it = json.object_value().find("retryPolicy");
if (it != json.object_value().end()) {
RefCountedPtr<ResolvingLoadBalancingPolicy> parent)
: parent_(std::move(parent)) {}
- ~ResolverResultHandler() {
+ ~ResolverResultHandler() override {
if (GRPC_TRACE_FLAG_ENABLED(*(parent_->tracer_))) {
gpr_log(GPR_INFO, "resolving_lb=%p: resolver shutdown complete",
parent_.get());
grpc_core::UniquePtr<char> target_uri,
ChannelConfigHelper* helper);
- virtual const char* name() const override { return "resolving_lb"; }
+ const char* name() const override { return "resolving_lb"; }
// No-op -- should never get updates from the channel.
// TODO(roth): Need to support updating child LB policy's config for xds
class ResolverResultHandler;
class ResolvingControlHelper;
- ~ResolvingLoadBalancingPolicy();
+ ~ResolvingLoadBalancingPolicy() override;
void ShutdownLocked() override;
public:
ServerRetryThrottleData(intptr_t max_milli_tokens, intptr_t milli_token_ratio,
ServerRetryThrottleData* old_throttle_data);
- ~ServerRetryThrottleData();
+ ~ServerRetryThrottleData() override;
/// Records a failure. Returns true if it's okay to send a retry.
bool RecordFailure();
std::string ToString() const;
private:
- // Allows the channel to access the attributes without knowing the keys.
- // (We intentionally do not allow LB policies to do this.)
- friend class ChannelServerAddressPeer;
-
grpc_resolved_address address_;
grpc_channel_args* args_;
std::map<const char*, std::unique_ptr<AttributeInterface>> attributes_;
const ServiceConfigParser::ParsedConfigVector*
ServiceConfig::GetMethodParsedConfigVector(const grpc_slice& path) const {
- if (parsed_method_configs_map_.empty()) return nullptr;
+ if (parsed_method_configs_map_.empty()) {
+ return default_method_config_vector_;
+ }
// Try looking up the full path in the map.
auto it = parsed_method_configs_map_.find(path);
if (it != parsed_method_configs_map_.end()) return it->second;
ServiceConfig(const grpc_channel_args* args, std::string json_string,
Json json, grpc_error** error);
- ~ServiceConfig();
+ ~ServiceConfig() override;
const std::string& json_string() const { return json_string_; }
ConnectedSubchannel::ConnectedSubchannel(
grpc_channel_stack* channel_stack, const grpc_channel_args* args,
RefCountedPtr<channelz::SubchannelNode> channelz_subchannel)
- : RefCounted<ConnectedSubchannel>(&grpc_trace_subchannel_refcount),
+ : RefCounted<ConnectedSubchannel>(
+ GRPC_TRACE_FLAG_ENABLED(grpc_trace_subchannel_refcount)
+ ? "ConnectedSubchannel"
+ : nullptr),
channel_stack_(channel_stack),
args_(grpc_channel_args_copy(args)),
channelz_subchannel_(std::move(channelz_subchannel)) {}
GRPC_SUBCHANNEL_WEAK_UNREF(subchannel_, "connecting");
}
- ~ConnectedSubchannelStateWatcher() {
+ ~ConnectedSubchannelStateWatcher() override {
GRPC_SUBCHANNEL_WEAK_UNREF(subchannel_, "state_watcher");
}
}
watcher_->PushConnectivityStateChange(
{state, status, std::move(connected_subchannel)});
- ExecCtx::Run(
- DEBUG_LOCATION,
- GRPC_CLOSURE_INIT(&closure_,
- [](void* arg, grpc_error* /*error*/) {
- auto* self =
- static_cast<AsyncWatcherNotifierLocked*>(arg);
- self->watcher_->OnConnectivityStateChange();
- delete self;
- },
- this, nullptr),
- GRPC_ERROR_NONE);
+ ExecCtx::Run(DEBUG_LOCATION,
+ GRPC_CLOSURE_INIT(
+ &closure_,
+ [](void* arg, grpc_error* /*error*/) {
+ auto* self =
+ static_cast<AsyncWatcherNotifierLocked*>(arg);
+ self->watcher_->OnConnectivityStateChange();
+ delete self;
+ },
+ this, nullptr),
+ GRPC_ERROR_NONE);
}
private:
if (subchannel_state == GRPC_CHANNEL_READY) StartHealthCheckingLocked();
}
- ~HealthWatcher() {
+ ~HealthWatcher() override {
GRPC_SUBCHANNEL_WEAK_UNREF(subchannel_, "health_watcher");
}
namespace {
void UriToSockaddr(const char* uri_str, grpc_resolved_address* addr) {
- grpc_uri* uri = grpc_uri_parse(uri_str, 0 /* suppress_errors */);
+ grpc_uri* uri = grpc_uri_parse(uri_str, false /* suppress_errors */);
GPR_ASSERT(uri != nullptr);
if (!grpc_parse_uri(uri, addr)) memset(addr, 0, sizeof(*addr));
grpc_uri_destroy(uri);
ConnectedSubchannel(
grpc_channel_stack* channel_stack, const grpc_channel_args* args,
RefCountedPtr<channelz::SubchannelNode> channelz_subchannel);
- ~ConnectedSubchannel();
+ ~ConnectedSubchannel() override;
void StartWatch(grpc_pollset_set* interested_parties,
OrphanablePtr<ConnectivityStateWatcherInterface> watcher);
RefCountedPtr<ConnectedSubchannel> connected_subchannel;
};
- virtual ~ConnectivityStateWatcherInterface() = default;
+ ~ConnectivityStateWatcherInterface() override = default;
// Will be invoked whenever the subchannel's connectivity state
// changes. There will be only one invocation of this method on a
#include <grpc/support/port_platform.h>
-#include "src/core/ext/filters/client_channel/server_address.h"
+#include <grpc/impl/codegen/connectivity_state.h>
+#include <grpc/impl/codegen/grpc_types.h>
+
#include "src/core/lib/gprpp/ref_counted.h"
-#include "src/core/lib/gprpp/ref_counted_ptr.h"
+#include "src/core/lib/iomgr/pollset_set.h"
namespace grpc_core {
virtual grpc_pollset_set* interested_parties() = 0;
};
- template <typename TraceFlagT = TraceFlag>
- explicit SubchannelInterface(TraceFlagT* trace_flag = nullptr)
- : RefCounted<SubchannelInterface>(trace_flag) {}
+ explicit SubchannelInterface(const char* trace = nullptr)
+ : RefCounted<SubchannelInterface>(trace) {}
- virtual ~SubchannelInterface() = default;
+ ~SubchannelInterface() override = default;
// Returns the current connectivity state of the subchannel.
virtual grpc_connectivity_state CheckConnectivityState() = 0;
// TODO(roth): Need a better non-grpc-specific abstraction here.
virtual const grpc_channel_args* channel_args() = 0;
-
- // Allows accessing the attributes associated with the address for
- // this subchannel.
- virtual const ServerAddress::AttributeInterface* GetAttribute(
- const char* key) const = 0;
};
// A class that delegates to another subchannel, to be used in cases
const grpc_channel_args* channel_args() override {
return wrapped_subchannel_->channel_args();
}
- const ServerAddress::AttributeInterface* GetAttribute(
- const char* key) const override {
- return wrapped_subchannel_->GetAttribute(key);
- }
private:
RefCountedPtr<SubchannelInterface> wrapped_subchannel_;
#include "src/core/lib/avl/avl.h"
#include "src/core/lib/channel/channel_args.h"
+#include "src/core/lib/debug/trace.h"
#include "src/core/lib/gprpp/ref_counted.h"
namespace grpc_core {
// shut down safely. See https://github.com/grpc/grpc/issues/12560.
class SubchannelPoolInterface : public RefCounted<SubchannelPoolInterface> {
public:
- SubchannelPoolInterface() : RefCounted(&grpc_subchannel_pool_trace) {}
- virtual ~SubchannelPoolInterface() {}
+ SubchannelPoolInterface()
+ : RefCounted(GRPC_TRACE_FLAG_ENABLED(grpc_subchannel_pool_trace)
+ ? "SubchannelPoolInterface"
+ : nullptr) {}
+ ~SubchannelPoolInterface() override {}
// Registers a subchannel against a key. Returns the subchannel registered
// with \a key, which may be different from \a constructed because we reuse
#include "src/core/lib/slice/slice_internal.h"
#include "src/core/lib/surface/channel_init.h"
-//
-// grpc_deadline_state
-//
+namespace grpc_core {
+
+// A fire-and-forget class representing a pending deadline timer.
+// Allocated on the call arena.
+class TimerState {
+ public:
+ TimerState(grpc_call_element* elem, grpc_millis deadline) : elem_(elem) {
+ grpc_deadline_state* deadline_state =
+ static_cast<grpc_deadline_state*>(elem_->call_data);
+ GRPC_CALL_STACK_REF(deadline_state->call_stack, "DeadlineTimerState");
+ GRPC_CLOSURE_INIT(&closure_, TimerCallback, this, nullptr);
+ grpc_timer_init(&timer_, deadline, &closure_);
+ }
-// The on_complete callback used when sending a cancel_error batch down the
-// filter stack. Yields the call combiner when the batch returns.
-static void yield_call_combiner(void* arg, grpc_error* /*ignored*/) {
- grpc_deadline_state* deadline_state = static_cast<grpc_deadline_state*>(arg);
- GRPC_CALL_COMBINER_STOP(deadline_state->call_combiner,
- "got on_complete from cancel_stream batch");
- GRPC_CALL_STACK_UNREF(deadline_state->call_stack, "deadline_timer");
-}
+ void Cancel() { grpc_timer_cancel(&timer_); }
+
+ private:
+ // The on_complete callback used when sending a cancel_error batch down the
+ // filter stack. Yields the call combiner when the batch returns.
+ static void YieldCallCombiner(void* arg, grpc_error* /*ignored*/) {
+ TimerState* self = static_cast<TimerState*>(arg);
+ grpc_deadline_state* deadline_state =
+ static_cast<grpc_deadline_state*>(self->elem_->call_data);
+ GRPC_CALL_COMBINER_STOP(deadline_state->call_combiner,
+ "got on_complete from cancel_stream batch");
+ GRPC_CALL_STACK_UNREF(deadline_state->call_stack, "DeadlineTimerState");
+ }
-// This is called via the call combiner, so access to deadline_state is
-// synchronized.
-static void send_cancel_op_in_call_combiner(void* arg, grpc_error* error) {
- grpc_call_element* elem = static_cast<grpc_call_element*>(arg);
- grpc_deadline_state* deadline_state =
- static_cast<grpc_deadline_state*>(elem->call_data);
- grpc_transport_stream_op_batch* batch = grpc_make_transport_stream_op(
- GRPC_CLOSURE_INIT(&deadline_state->timer_callback, yield_call_combiner,
- deadline_state, grpc_schedule_on_exec_ctx));
- batch->cancel_stream = true;
- batch->payload->cancel_stream.cancel_error = GRPC_ERROR_REF(error);
- elem->filter->start_transport_stream_op_batch(elem, batch);
-}
+ // This is called via the call combiner, so access to deadline_state is
+ // synchronized.
+ static void SendCancelOpInCallCombiner(void* arg, grpc_error* error) {
+ TimerState* self = static_cast<TimerState*>(arg);
+ grpc_transport_stream_op_batch* batch = grpc_make_transport_stream_op(
+ GRPC_CLOSURE_INIT(&self->closure_, YieldCallCombiner, self, nullptr));
+ batch->cancel_stream = true;
+ batch->payload->cancel_stream.cancel_error = GRPC_ERROR_REF(error);
+ self->elem_->filter->start_transport_stream_op_batch(self->elem_, batch);
+ }
-// Timer callback.
-static void timer_callback(void* arg, grpc_error* error) {
- grpc_call_element* elem = static_cast<grpc_call_element*>(arg);
- grpc_deadline_state* deadline_state =
- static_cast<grpc_deadline_state*>(elem->call_data);
- if (error != GRPC_ERROR_CANCELLED) {
- error = grpc_error_set_int(
- GRPC_ERROR_CREATE_FROM_STATIC_STRING("Deadline Exceeded"),
- GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_DEADLINE_EXCEEDED);
- deadline_state->call_combiner->Cancel(GRPC_ERROR_REF(error));
- GRPC_CLOSURE_INIT(&deadline_state->timer_callback,
- send_cancel_op_in_call_combiner, elem,
- grpc_schedule_on_exec_ctx);
- GRPC_CALL_COMBINER_START(deadline_state->call_combiner,
- &deadline_state->timer_callback, error,
- "deadline exceeded -- sending cancel_stream op");
- } else {
- GRPC_CALL_STACK_UNREF(deadline_state->call_stack, "deadline_timer");
+ // Timer callback.
+ static void TimerCallback(void* arg, grpc_error* error) {
+ TimerState* self = static_cast<TimerState*>(arg);
+ grpc_deadline_state* deadline_state =
+ static_cast<grpc_deadline_state*>(self->elem_->call_data);
+ if (error != GRPC_ERROR_CANCELLED) {
+ error = grpc_error_set_int(
+ GRPC_ERROR_CREATE_FROM_STATIC_STRING("Deadline Exceeded"),
+ GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_DEADLINE_EXCEEDED);
+ deadline_state->call_combiner->Cancel(GRPC_ERROR_REF(error));
+ GRPC_CLOSURE_INIT(&self->closure_, SendCancelOpInCallCombiner, self,
+ nullptr);
+ GRPC_CALL_COMBINER_START(deadline_state->call_combiner, &self->closure_,
+ error,
+ "deadline exceeded -- sending cancel_stream op");
+ } else {
+ GRPC_CALL_STACK_UNREF(deadline_state->call_stack, "DeadlineTimerState");
+ }
}
-}
+
+ // NOTE: This object's dtor is never called, so do not add any data
+ // members that require destruction!
+ // TODO(roth): We should ideally call this object's dtor somewhere,
+ // but that would require adding more synchronization, because we'd
+ // need to call the dtor only after both (a) the timer callback
+ // finishes and (b) the filter sees the call completion and attempts
+ // to cancel the timer.
+ grpc_call_element* elem_;
+ grpc_timer timer_;
+ grpc_closure closure_;
+};
+
+} // namespace grpc_core
+
+//
+// grpc_deadline_state
+//
// Starts the deadline timer.
// This is called via the call combiner, so access to deadline_state is
}
grpc_deadline_state* deadline_state =
static_cast<grpc_deadline_state*>(elem->call_data);
- grpc_closure* closure = nullptr;
- switch (deadline_state->timer_state) {
- case GRPC_DEADLINE_STATE_PENDING:
- // Note: We do not start the timer if there is already a timer
- return;
- case GRPC_DEADLINE_STATE_FINISHED:
- deadline_state->timer_state = GRPC_DEADLINE_STATE_PENDING;
- // If we've already created and destroyed a timer, we always create a
- // new closure: we have no other guarantee that the inlined closure is
- // not in use (it may hold a pending call to timer_callback)
- closure =
- GRPC_CLOSURE_CREATE(timer_callback, elem, grpc_schedule_on_exec_ctx);
- break;
- case GRPC_DEADLINE_STATE_INITIAL:
- deadline_state->timer_state = GRPC_DEADLINE_STATE_PENDING;
- closure =
- GRPC_CLOSURE_INIT(&deadline_state->timer_callback, timer_callback,
- elem, grpc_schedule_on_exec_ctx);
- break;
- }
- GPR_ASSERT(closure != nullptr);
- GRPC_CALL_STACK_REF(deadline_state->call_stack, "deadline_timer");
- grpc_timer_init(&deadline_state->timer, deadline, closure);
+ GPR_ASSERT(deadline_state->timer_state == nullptr);
+ deadline_state->timer_state =
+ deadline_state->arena->New<grpc_core::TimerState>(elem, deadline);
}
// Cancels the deadline timer.
// This is called via the call combiner, so access to deadline_state is
// synchronized.
static void cancel_timer_if_needed(grpc_deadline_state* deadline_state) {
- if (deadline_state->timer_state == GRPC_DEADLINE_STATE_PENDING) {
- deadline_state->timer_state = GRPC_DEADLINE_STATE_FINISHED;
- grpc_timer_cancel(&deadline_state->timer);
- } else {
- // timer was either in STATE_INITIAL (nothing to cancel)
- // OR in STATE_FINISHED (again nothing to cancel)
+ if (deadline_state->timer_state != nullptr) {
+ deadline_state->timer_state->Cancel();
+ deadline_state->timer_state = nullptr;
}
}
}
grpc_deadline_state::grpc_deadline_state(grpc_call_element* elem,
- grpc_call_stack* call_stack,
- grpc_core::CallCombiner* call_combiner,
+ const grpc_call_element_args& args,
grpc_millis deadline)
- : call_stack(call_stack), call_combiner(call_combiner) {
+ : call_stack(args.call_stack),
+ call_combiner(args.call_combiner),
+ arena(args.arena) {
// Deadline will always be infinite on servers, so the timer will only be
// set on clients with a finite deadline.
if (deadline != GRPC_MILLIS_INF_FUTURE) {
// Constructor for call_data. Used for both client and server filters.
static grpc_error* deadline_init_call_elem(grpc_call_element* elem,
const grpc_call_element_args* args) {
- new (elem->call_data) grpc_deadline_state(
- elem, args->call_stack, args->call_combiner, args->deadline);
+ new (elem->call_data) grpc_deadline_state(elem, *args, args->deadline);
return GRPC_ERROR_NONE;
}
#include "src/core/lib/channel/channel_stack.h"
#include "src/core/lib/iomgr/timer.h"
-enum grpc_deadline_timer_state {
- GRPC_DEADLINE_STATE_INITIAL,
- GRPC_DEADLINE_STATE_PENDING,
- GRPC_DEADLINE_STATE_FINISHED
-};
+namespace grpc_core {
+class TimerState;
+} // namespace grpc_core
// State used for filters that enforce call deadlines.
// Must be the first field in the filter's call_data.
struct grpc_deadline_state {
- grpc_deadline_state(grpc_call_element* elem, grpc_call_stack* call_stack,
- grpc_core::CallCombiner* call_combiner,
- grpc_millis deadline);
+ grpc_deadline_state(grpc_call_element* elem,
+ const grpc_call_element_args& args, grpc_millis deadline);
~grpc_deadline_state();
// We take a reference to the call stack for the timer callback.
grpc_call_stack* call_stack;
grpc_core::CallCombiner* call_combiner;
- grpc_deadline_timer_state timer_state = GRPC_DEADLINE_STATE_INITIAL;
- grpc_timer timer;
- grpc_closure timer_callback;
+ grpc_core::Arena* arena;
+ grpc_core::TimerState* timer_state = nullptr;
// Closure to invoke when we receive trailing metadata.
// We use this to cancel the timer.
grpc_closure recv_trailing_metadata_ready;
#include "src/core/lib/transport/transport_impl.h"
#define EXPECTED_CONTENT_TYPE "application/grpc"
-#define EXPECTED_CONTENT_TYPE_LENGTH sizeof(EXPECTED_CONTENT_TYPE) - 1
+#define EXPECTED_CONTENT_TYPE_LENGTH (sizeof(EXPECTED_CONTENT_TYPE) - 1)
/* default maximum size of payload eligible for GET request */
static constexpr size_t kMaxPayloadSizeForGet = 2048;
#include "src/core/lib/transport/static_metadata.h"
#define EXPECTED_CONTENT_TYPE "application/grpc"
-#define EXPECTED_CONTENT_TYPE_LENGTH sizeof(EXPECTED_CONTENT_TYPE) - 1
+#define EXPECTED_CONTENT_TYPE_LENGTH (sizeof(EXPECTED_CONTENT_TYPE) - 1)
static void hs_recv_initial_metadata_ready(void* user_data, grpc_error* err);
static void hs_recv_trailing_metadata_ready(void* user_data, grpc_error* err);
/* offset of the character '?' */
size_t offset = 0;
for (offset = 0; offset < path_length && *path_ptr != k_query_separator;
- path_ptr++, offset++)
- ;
+ path_ptr++, offset++) {
+ }
if (offset < path_length) {
grpc_slice query_slice =
grpc_slice_sub(path_slice, offset + 1, path_length);
gpr_zalloc(client_ip_and_lr_token_len_ * sizeof(char)));
char* cur_pos = client_ip_and_lr_token_;
// Store the IP length prefix.
- if (client_ip.size() == 0) {
+ if (client_ip.empty()) {
strncpy(cur_pos, kEmptyAddressLengthString, kLengthPrefixSize);
} else if (client_ip.size() == 8) {
strncpy(cur_pos, kEncodedIpv4AddressLengthString, kLengthPrefixSize);
GRPC_CHANNEL_STACK_REF(chand_->channel_stack, "max_age conn_watch");
}
- ~ConnectivityWatcher() {
+ ~ConnectivityWatcher() override {
GRPC_CHANNEL_STACK_UNREF(chand_->channel_stack, "max_age conn_watch");
}
class Chttp2Connector : public SubchannelConnector {
public:
Chttp2Connector();
- ~Chttp2Connector();
+ ~Chttp2Connector() override;
void Connect(const Args& args, Result* result, grpc_closure* notify) override;
void Shutdown(grpc_error* error) override;
#include <string.h>
#include <vector>
+#include "absl/strings/match.h"
#include "absl/strings/str_cat.h"
#include "absl/strings/str_format.h"
#include "src/core/lib/iomgr/resolve_address.h"
#include "src/core/lib/iomgr/resource_quota.h"
#include "src/core/lib/iomgr/tcp_server.h"
+#include "src/core/lib/iomgr/unix_sockets_posix.h"
#include "src/core/lib/slice/slice_internal.h"
#include "src/core/lib/surface/api_trace.h"
#include "src/core/lib/surface/server.h"
namespace grpc_core {
namespace {
+const char kUnixUriPrefix[] = "unix:";
+const char kUnixAbstractUriPrefix[] = "unix-abstract:";
+
class Chttp2ServerListener : public Server::ListenerInterface {
public:
static grpc_error* Create(Server* server, const char* addr,
// Do not instantiate directly. Use one of the factory methods above.
Chttp2ServerListener(Server* server, grpc_channel_args* args);
- ~Chttp2ServerListener();
+ ~Chttp2ServerListener() override;
void Start(Server* server,
const std::vector<grpc_pollset*>* pollsets) override;
RefCountedPtr<HandshakeManager> handshake_mgr,
grpc_channel_args* args, grpc_endpoint* endpoint);
- ~ConnectionState();
+ ~ConnectionState() override;
private:
static void OnTimeout(void* arg, grpc_error* error);
grpc_error* error = [&]() {
*port_num = -1;
/* resolve address */
- grpc_error* error = grpc_blocking_resolve_address(addr, "https", &resolved);
+ grpc_error* error = GRPC_ERROR_NONE;
+ if (absl::StartsWith(addr, kUnixUriPrefix)) {
+ error = grpc_resolve_unix_domain_address(
+ addr + sizeof(kUnixUriPrefix) - 1, &resolved);
+ } else if (absl::StartsWith(addr, kUnixAbstractUriPrefix)) {
+ error = grpc_resolve_unix_abstract_domain_address(
+ addr + sizeof(kUnixAbstractUriPrefix) - 1, &resolved);
+ } else {
+ error = grpc_blocking_resolve_address(addr, "https", &resolved);
+ }
if (error != GRPC_ERROR_NONE) return error;
// Create Chttp2ServerListener.
listener = new Chttp2ServerListener(server, args);
return true;
}
-#define COMPOSE_OUTPUT_BYTE_0(input_ptr) \
- (uint8_t)((decode_table[input_ptr[0]] << 2) | \
- (decode_table[input_ptr[1]] >> 4))
+#define COMPOSE_OUTPUT_BYTE_0(input_ptr) \
+ (uint8_t)((decode_table[(input_ptr)[0]] << 2) | \
+ (decode_table[(input_ptr)[1]] >> 4))
-#define COMPOSE_OUTPUT_BYTE_1(input_ptr) \
- (uint8_t)((decode_table[input_ptr[1]] << 4) | \
- (decode_table[input_ptr[2]] >> 2))
+#define COMPOSE_OUTPUT_BYTE_1(input_ptr) \
+ (uint8_t)((decode_table[(input_ptr)[1]] << 4) | \
+ (decode_table[(input_ptr)[2]] >> 2))
#define COMPOSE_OUTPUT_BYTE_2(input_ptr) \
- (uint8_t)((decode_table[input_ptr[2]] << 6) | decode_table[input_ptr[3]])
+ (uint8_t)((decode_table[(input_ptr)[2]] << 6) | decode_table[(input_ptr)[3]])
// By RFC 4648, if the length of the encoded string without padding is 4n+r,
// the length of decoded string is: 1) 3n if r = 0, 2) 3n + 1 if r = 2, 3, or
#define DEFAULT_KEEPALIVE_PERMIT_WITHOUT_CALLS false
#define KEEPALIVE_TIME_BACKOFF_MULTIPLIER 2
-#define DEFAULT_MIN_SENT_PING_INTERVAL_WITHOUT_DATA_MS 300000 /* 5 minutes */
#define DEFAULT_MIN_RECV_PING_INTERVAL_WITHOUT_DATA_MS 300000 /* 5 minutes */
#define DEFAULT_MAX_PINGS_BETWEEN_DATA 2
#define DEFAULT_MAX_PING_STRIKES 2
static bool g_default_server_keepalive_permit_without_calls =
DEFAULT_KEEPALIVE_PERMIT_WITHOUT_CALLS;
-static int g_default_min_sent_ping_interval_without_data_ms =
- DEFAULT_MIN_SENT_PING_INTERVAL_WITHOUT_DATA_MS;
static int g_default_min_recv_ping_interval_without_data_ms =
DEFAULT_MIN_RECV_PING_INTERVAL_WITHOUT_DATA_MS;
static int g_default_max_pings_without_data = DEFAULT_MAX_PINGS_BETWEEN_DATA;
&channel_args->args[i], {g_default_max_ping_strikes, 0, INT_MAX});
} else if (0 ==
strcmp(channel_args->args[i].key,
- GRPC_ARG_HTTP2_MIN_SENT_PING_INTERVAL_WITHOUT_DATA_MS)) {
- t->ping_policy.min_sent_ping_interval_without_data =
- grpc_channel_arg_get_integer(
- &channel_args->args[i],
- grpc_integer_options{
- g_default_min_sent_ping_interval_without_data_ms, 0,
- INT_MAX});
- } else if (0 ==
- strcmp(channel_args->args[i].key,
GRPC_ARG_HTTP2_MIN_RECV_PING_INTERVAL_WITHOUT_DATA_MS)) {
t->ping_policy.min_recv_ping_interval_without_data =
grpc_channel_arg_get_integer(
static void configure_transport_ping_policy(grpc_chttp2_transport* t) {
t->ping_policy.max_pings_without_data = g_default_max_pings_without_data;
- t->ping_policy.min_sent_ping_interval_without_data =
- g_default_min_sent_ping_interval_without_data_ms;
t->ping_policy.max_ping_strikes = g_default_max_ping_strikes;
t->ping_policy.min_recv_ping_interval_without_data =
g_default_min_recv_ping_interval_without_data_ms;
grpc_chttp2_transport::grpc_chttp2_transport(
const grpc_channel_args* channel_args, grpc_endpoint* ep, bool is_client,
grpc_resource_user* resource_user)
- : refs(1, &grpc_trace_chttp2_refcount),
+ : refs(1, GRPC_TRACE_FLAG_ENABLED(grpc_trace_chttp2_refcount)
+ ? "chttp2_refcount"
+ : nullptr),
ep(ep),
peer_string(grpc_endpoint_get_peer(ep)),
resource_user(resource_user),
}
if (use_value != t->settings[GRPC_LOCAL_SETTINGS][id]) {
t->settings[GRPC_LOCAL_SETTINGS][id] = use_value;
- t->dirtied_local_settings = 1;
+ t->dirtied_local_settings = true;
}
}
} else if (0 ==
strcmp(
args->args[i].key,
- GRPC_ARG_HTTP2_MIN_SENT_PING_INTERVAL_WITHOUT_DATA_MS)) {
- g_default_min_sent_ping_interval_without_data_ms =
- grpc_channel_arg_get_integer(
- &args->args[i],
- {g_default_min_sent_ping_interval_without_data_ms, 0, INT_MAX});
- } else if (0 ==
- strcmp(
- args->args[i].key,
GRPC_ARG_HTTP2_MIN_RECV_PING_INTERVAL_WITHOUT_DATA_MS)) {
g_default_min_recv_ping_interval_without_data_ms =
grpc_channel_arg_get_integer(
class TransportFlowControl final : public TransportFlowControlBase {
public:
TransportFlowControl(const grpc_chttp2_transport* t, bool enable_bdp_probe);
- ~TransportFlowControl() {}
+ ~TransportFlowControl() override {}
bool flow_control_enabled() const override { return true; }
class StreamFlowControl final : public StreamFlowControlBase {
public:
StreamFlowControl(TransportFlowControl* tfc, const grpc_chttp2_stream* s);
- ~StreamFlowControl() {
+ ~StreamFlowControl() override {
tfc_->PreUpdateAnnouncedWindowOverIncomingWindow(announced_window_delta_);
}
++cur;
/* fallthrough */
case GRPC_CHTTP2_GOAWAY_DEBUG:
- if (end != cur)
+ if (end != cur) {
memcpy(p->debug_data + p->debug_pos, cur,
static_cast<size_t>(end - cur));
+ }
GPR_ASSERT((size_t)(end - cur) < UINT32_MAX - p->debug_pos);
p->debug_pos += static_cast<uint32_t>(end - cur);
p->state = GRPC_CHTTP2_GOAWAY_DEBUG;
}
bits = inverse_base64[*cur];
++cur;
- if (bits == 255)
+ if (bits == 255) {
return parse_error(
p, cur, end,
GRPC_ERROR_CREATE_FROM_STATIC_STRING("Illegal base64 character"));
- else if (bits == 64)
+ } else if (bits == 64) {
goto b64_byte0;
+ }
p->base64_buffer = bits << 18;
/* fallthrough */
b64_byte1:
}
bits = inverse_base64[*cur];
++cur;
- if (bits == 255)
+ if (bits == 255) {
return parse_error(
p, cur, end,
GRPC_ERROR_CREATE_FROM_STATIC_STRING("Illegal base64 character"));
- else if (bits == 64)
+ } else if (bits == 64) {
goto b64_byte1;
+ }
p->base64_buffer |= bits << 12;
/* fallthrough */
b64_byte2:
}
bits = inverse_base64[*cur];
++cur;
- if (bits == 255)
+ if (bits == 255) {
return parse_error(
p, cur, end,
GRPC_ERROR_CREATE_FROM_STATIC_STRING("Illegal base64 character"));
- else if (bits == 64)
+ } else if (bits == 64) {
goto b64_byte2;
+ }
p->base64_buffer |= bits << 6;
/* fallthrough */
b64_byte3:
}
bits = inverse_base64[*cur];
++cur;
- if (bits == 255)
+ if (bits == 255) {
return parse_error(
p, cur, end,
GRPC_ERROR_CREATE_FROM_STATIC_STRING("Illegal base64 character"));
- else if (bits == 64)
+ } else if (bits == 64) {
goto b64_byte3;
+ }
p->base64_buffer |= bits;
bits = p->base64_buffer;
decoded[0] = static_cast<uint8_t>(bits >> 16);
struct grpc_chttp2_repeated_ping_policy {
int max_pings_without_data;
int max_ping_strikes;
- grpc_millis min_sent_ping_interval_without_data;
grpc_millis min_recv_ping_interval_without_data;
};
struct grpc_chttp2_repeated_ping_state {
.c_str());
}
++cur;
+ // NOLINTNEXTLINE(bugprone-misplaced-widening-cast)
t->deframe_state = static_cast<grpc_chttp2_deframe_transport_state>(
1 + static_cast<int>(t->deframe_state));
}
&t->hpack_parser.table,
t->settings[GRPC_ACKED_SETTINGS]
[GRPC_CHTTP2_SETTINGS_HEADER_TABLE_SIZE]);
- t->sent_local_settings = 0;
+ t->sent_local_settings = false;
}
t->parser = grpc_chttp2_settings_parser_parse;
t->parser_data = &t->simple.settings;
(t->keepalive_permit_without_calls == 0 &&
grpc_chttp2_stream_map_size(&t->stream_map) == 0)
? 7200 * GPR_MS_PER_SEC
- : (t->ping_policy.min_sent_ping_interval_without_data +
- GPR_MS_PER_SEC); /* A second is added to deal with network delays
+ : (GPR_MS_PER_SEC); /* A second is added to deal with network delays
and timing imprecision */
grpc_millis next_allowed_ping =
t->ping_state.last_ping_sent_time + next_allowed_ping_interval;
return "CRONET_NET_ERROR_DNS_SECURE_RESOLVER_HOSTNAME_RESOLUTION_FAILED";
}
return "UNAVAILABLE.";
-}
\ No newline at end of file
+}
int received_bytes = 0;
int remaining_bytes = 0;
int length_field = 0;
- bool compressed = 0;
+ bool compressed = false;
char grpc_header_bytes[GRPC_HEADER_SIZE_IN_BYTES] = {};
char* payload_field = nullptr;
- bool read_stream_closed = 0;
+ bool read_stream_closed = false;
/* vars for holding data destined for the application */
grpc_core::ManualConstructor<grpc_core::SliceBufferByteStream> sbs;
/* already executed */
if (stream_state->state_op_done[OP_SEND_INITIAL_METADATA]) result = false;
} else if (op_id == OP_RECV_INITIAL_METADATA) {
- /* already executed */
- if (stream_state->state_op_done[OP_RECV_INITIAL_METADATA]) result = false;
- /* we haven't sent headers yet. */
- else if (!stream_state->state_callback_received[OP_SEND_INITIAL_METADATA])
+ if (stream_state->state_op_done[OP_RECV_INITIAL_METADATA]) {
+ /* already executed */
+ result = false;
+ } else if (!stream_state
+ ->state_callback_received[OP_SEND_INITIAL_METADATA]) {
+ /* we haven't sent headers yet. */
result = false;
- /* we haven't received headers yet. */
- else if (!stream_state->state_callback_received[OP_RECV_INITIAL_METADATA] &&
- !stream_state->state_op_done[OP_RECV_TRAILING_METADATA])
+ } else if (!stream_state
+ ->state_callback_received[OP_RECV_INITIAL_METADATA] &&
+ !stream_state->state_op_done[OP_RECV_TRAILING_METADATA]) {
+ /* we haven't received headers yet. */
result = false;
+ }
} else if (op_id == OP_SEND_MESSAGE) {
- /* already executed (note we're checking op specific state, not stream
- state) */
- if (op_state->state_op_done[OP_SEND_MESSAGE]) result = false;
- /* we haven't sent headers yet. */
- else if (!stream_state->state_callback_received[OP_SEND_INITIAL_METADATA])
+ if (op_state->state_op_done[OP_SEND_MESSAGE]) {
+ /* already executed (note we're checking op specific state, not stream
+ state) */
+ result = false;
+ } else if (!stream_state
+ ->state_callback_received[OP_SEND_INITIAL_METADATA]) {
+ /* we haven't sent headers yet. */
result = false;
+ }
} else if (op_id == OP_RECV_MESSAGE) {
- /* already executed */
- if (op_state->state_op_done[OP_RECV_MESSAGE]) result = false;
- /* we haven't received headers yet. */
- else if (!stream_state->state_callback_received[OP_RECV_INITIAL_METADATA] &&
- !stream_state->state_op_done[OP_RECV_TRAILING_METADATA])
+ if (op_state->state_op_done[OP_RECV_MESSAGE]) {
+ /* already executed */
result = false;
+ } else if (!stream_state
+ ->state_callback_received[OP_RECV_INITIAL_METADATA] &&
+ !stream_state->state_op_done[OP_RECV_TRAILING_METADATA]) {
+ /* we haven't received headers yet. */
+ result = false;
+ }
} else if (op_id == OP_RECV_TRAILING_METADATA) {
- /* already executed */
- if (stream_state->state_op_done[OP_RECV_TRAILING_METADATA]) result = false;
- /* we have asked for but haven't received message yet. */
- else if (stream_state->state_op_done[OP_READ_REQ_MADE] &&
- !stream_state->state_op_done[OP_RECV_MESSAGE])
+ if (stream_state->state_op_done[OP_RECV_TRAILING_METADATA]) {
+ /* already executed */
+ result = false;
+ } else if (stream_state->state_op_done[OP_READ_REQ_MADE] &&
+ !stream_state->state_op_done[OP_RECV_MESSAGE]) {
+ /* we have asked for but haven't received message yet. */
result = false;
- /* we haven't received trailers yet. */
- else if (!stream_state->state_callback_received[OP_RECV_TRAILING_METADATA])
+ } else if (!stream_state
+ ->state_callback_received[OP_RECV_TRAILING_METADATA]) {
+ /* we haven't received trailers yet. */
result = false;
- /* we haven't received on_succeeded yet. */
- else if (!stream_state->state_callback_received[OP_SUCCEEDED])
+ } else if (!stream_state->state_callback_received[OP_SUCCEEDED]) {
+ /* we haven't received on_succeeded yet. */
result = false;
+ }
} else if (op_id == OP_SEND_TRAILING_METADATA) {
- /* already executed */
- if (stream_state->state_op_done[OP_SEND_TRAILING_METADATA]) result = false;
- /* we haven't sent initial metadata yet */
- else if (!stream_state->state_callback_received[OP_SEND_INITIAL_METADATA])
+ if (stream_state->state_op_done[OP_SEND_TRAILING_METADATA]) {
+ /* already executed */
result = false;
- /* we haven't sent message yet */
- else if (stream_state->pending_send_message &&
- !stream_state->state_op_done[OP_SEND_MESSAGE])
+ } else if (!stream_state
+ ->state_callback_received[OP_SEND_INITIAL_METADATA]) {
+ /* we haven't sent initial metadata yet */
result = false;
- /* we haven't got on_write_completed for the send yet */
- else if (stream_state->state_op_done[OP_SEND_MESSAGE] &&
- !stream_state->state_callback_received[OP_SEND_MESSAGE] &&
- !(t->use_packet_coalescing &&
- stream_state->pending_write_for_trailer))
+ } else if (stream_state->pending_send_message &&
+ !stream_state->state_op_done[OP_SEND_MESSAGE]) {
+ /* we haven't sent message yet */
result = false;
+ } else if (stream_state->state_op_done[OP_SEND_MESSAGE] &&
+ !stream_state->state_callback_received[OP_SEND_MESSAGE] &&
+ !(t->use_packet_coalescing &&
+ stream_state->pending_write_for_trailer)) {
+ /* we haven't got on_write_completed for the send yet */
+ result = false;
+ }
} else if (op_id == OP_CANCEL_ERROR) {
/* already executed */
if (stream_state->state_op_done[OP_CANCEL_ERROR]) result = false;
} else if (op_id == OP_ON_COMPLETE) {
- /* already executed (note we're checking op specific state, not stream
- state) */
if (op_state->state_op_done[OP_ON_COMPLETE]) {
+ /* already executed (note we're checking op specific state, not stream
+ state) */
CRONET_LOG(GPR_DEBUG, "Because");
result = false;
}
/* We should see at least one on_write_completed for the trailers that we
sent */
else if (curr_op->send_trailing_metadata &&
- !stream_state->state_callback_received[OP_SEND_MESSAGE])
+ !stream_state->state_callback_received[OP_SEND_MESSAGE]) {
result = false;
+ }
}
CRONET_LOG(GPR_DEBUG, "op_can_be_run %s : %s", op_id_string(op_id),
result ? "YES" : "NO");
result = ACTION_TAKEN_NO_CALLBACK;
/* If this is the on_complete callback being called for a received message -
make a note */
- if (stream_op->recv_message)
+ if (stream_op->recv_message) {
stream_state->state_op_done[OP_RECV_MESSAGE_AND_ON_COMPLETE] = true;
+ }
} else {
result = NO_ACTION_POSSIBLE;
}
#include "src/core/lib/iomgr/error.h"
#include "src/core/lib/json/json.h"
-#include "src/core/lib/security/certificate_provider.h"
+#include "src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h"
namespace grpc_core {
class CertificateProviderFactory {
public:
// Interface for configs for CertificateProviders.
- class Config {
+ class Config : public RefCounted<Config> {
public:
- virtual ~Config() = default;
+ ~Config() override = default;
// Name of the type of the CertificateProvider. Unique to each type of
// config.
virtual const char* name() const = 0;
+
+ virtual std::string ToString() const = 0;
};
virtual ~CertificateProviderFactory() = default;
// Name of the plugin.
virtual const char* name() const = 0;
- virtual std::unique_ptr<Config> CreateCertificateProviderConfig(
+ virtual RefCountedPtr<Config> CreateCertificateProviderConfig(
const Json& config_json, grpc_error** error) = 0;
// Create a CertificateProvider instance from config.
virtual RefCountedPtr<grpc_tls_certificate_provider>
- CreateCertificateProvider(std::unique_ptr<Config> config) = 0;
+ CreateCertificateProvider(RefCountedPtr<Config> config) = 0;
};
} // namespace grpc_core
--- /dev/null
+//
+//
+// Copyright 2020 gRPC authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+//
+
+#include <grpc/support/port_platform.h>
+
+#include "src/core/ext/xds/certificate_provider_store.h"
+
+#include "src/core/ext/xds/certificate_provider_registry.h"
+
+namespace grpc_core {
+
+// If a certificate provider is created, the CertificateProviderStore
+// maintains a raw pointer to the created CertificateProviderWrapper so that
+// future calls to `CreateOrGetCertificateProvider()` with the same key result
+// in returning a ref to this created certificate provider. This entry is
+// deleted when the refcount to this provider reaches zero.
+RefCountedPtr<grpc_tls_certificate_provider>
+CertificateProviderStore::CreateOrGetCertificateProvider(
+ absl::string_view key) {
+ RefCountedPtr<CertificateProviderWrapper> result;
+ MutexLock lock(&mu_);
+ auto it = certificate_providers_map_.find(key);
+ if (it == certificate_providers_map_.end()) {
+ it = certificate_providers_map_.insert({key, nullptr}).first;
+ } else {
+ result = it->second->RefIfNonZero();
+ }
+ if (result == nullptr) {
+ result = CreateCertificateProviderLocked(key);
+ it->second = result.get();
+ }
+ return result;
+}
+
+RefCountedPtr<CertificateProviderStore::CertificateProviderWrapper>
+CertificateProviderStore::CreateCertificateProviderLocked(
+ absl::string_view key) {
+ auto plugin_config_it = plugin_config_map_.find(std::string(key));
+ if (plugin_config_it == plugin_config_map_.end()) {
+ return nullptr;
+ }
+ CertificateProviderFactory* factory =
+ CertificateProviderRegistry::LookupCertificateProviderFactory(
+ plugin_config_it->second.plugin_name);
+ if (factory == nullptr) {
+ // This should never happen since an entry is only inserted in the
+ // plugin_config_map_ if the corresponding factory was found when parsing
+ // the xDS bootstrap file.
+ gpr_log(GPR_ERROR, "Certificate provider factory %s not found",
+ plugin_config_it->second.plugin_name.c_str());
+ return nullptr;
+ }
+ return MakeRefCounted<CertificateProviderWrapper>(
+ factory->CreateCertificateProvider(plugin_config_it->second.config), this,
+ plugin_config_it->first);
+}
+
+void CertificateProviderStore::ReleaseCertificateProvider(
+ absl::string_view key, CertificateProviderWrapper* wrapper) {
+ MutexLock lock(&mu_);
+ auto it = certificate_providers_map_.find(key);
+ if (it != certificate_providers_map_.end()) {
+ if (it->second == wrapper) {
+ certificate_providers_map_.erase(it);
+ }
+ }
+}
+
+} // namespace grpc_core
#include <map>
+#include "absl/strings/string_view.h"
+
+#include "src/core/ext/xds/certificate_provider_factory.h"
#include "src/core/lib/gprpp/ref_counted_ptr.h"
#include "src/core/lib/gprpp/sync.h"
-#include "src/core/lib/security/certificate_provider.h"
+#include "src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h"
namespace grpc_core {
-// Map for xDS based grpc_tls_certificate_provider instances.
+// Map for xDS based grpc_tls_certificate_provider instances. The store should
+// outlive the refs taken via `CreateOrGetCertificateProvider()`.
class CertificateProviderStore {
public:
- // If a provider corresponding to the config is found, a raw pointer to the
- // grpc_tls_certificate_provider in the map is returned. If no provider is
- // found for a key, a new provider is created. The CertificateProviderStore
- // maintains a ref to the grpc_tls_certificate_provider for its entire
- // lifetime.
+ struct PluginDefinition {
+ std::string plugin_name;
+ RefCountedPtr<CertificateProviderFactory::Config> config;
+ };
+
+ // Maps plugin instance (opaque) name to plugin defition.
+ typedef std::map<std::string, PluginDefinition> PluginDefinitionMap;
+
+ CertificateProviderStore(PluginDefinitionMap plugin_config_map)
+ : plugin_config_map_(std::move(plugin_config_map)) {}
+
+ // If a certificate provider corresponding to the instance name \a key is
+ // found, a ref to the grpc_tls_certificate_provider is returned. If no
+ // provider is found for the key, a new provider is created from the plugin
+ // definition map.
+ // Returns nullptr on failure to get or create a new certificate provider.
RefCountedPtr<grpc_tls_certificate_provider> CreateOrGetCertificateProvider(
absl::string_view key);
private:
+ // A thin wrapper around `grpc_tls_certificate_provider` which allows removing
+ // the entry from the CertificateProviderStore when the refcount reaches zero.
+ class CertificateProviderWrapper : public grpc_tls_certificate_provider {
+ public:
+ CertificateProviderWrapper(
+ RefCountedPtr<grpc_tls_certificate_provider> certificate_provider,
+ CertificateProviderStore* store, absl::string_view key)
+ : certificate_provider_(std::move(certificate_provider)),
+ store_(store),
+ key_(key) {}
+
+ ~CertificateProviderWrapper() override {
+ store_->ReleaseCertificateProvider(key_, this);
+ }
+
+ grpc_core::RefCountedPtr<grpc_tls_certificate_distributor> distributor()
+ const override {
+ return certificate_provider_->distributor();
+ }
+
+ grpc_pollset_set* interested_parties() const override {
+ return certificate_provider_->interested_parties();
+ }
+
+ private:
+ RefCountedPtr<grpc_tls_certificate_provider> certificate_provider_;
+ CertificateProviderStore* store_;
+ absl::string_view key_;
+ };
+
+ RefCountedPtr<CertificateProviderWrapper> CreateCertificateProviderLocked(
+ absl::string_view key);
+
+ // Releases a previously created certificate provider from the certificate
+ // provider map if the value matches \a wrapper.
+ void ReleaseCertificateProvider(absl::string_view key,
+ CertificateProviderWrapper* wrapper);
+
+ Mutex mu_;
+ // Map of plugin configurations
+ PluginDefinitionMap plugin_config_map_;
// Underlying map for the providers.
- std::map<std::string, RefCountedPtr<grpc_tls_certificate_provider>> map_;
+ std::map<absl::string_view, CertificateProviderWrapper*>
+ certificate_providers_map_;
};
} // namespace grpc_core
--- /dev/null
+//
+//
+// Copyright 2020 gRPC authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+//
+
+#include <grpc/support/port_platform.h>
+
+#include "src/core/ext/xds/file_watcher_certificate_provider_factory.h"
+
+#include "absl/strings/str_format.h"
+#include "absl/strings/str_join.h"
+
+#include "src/core/lib/json/json_util.h"
+
+namespace grpc_core {
+
+namespace {
+
+const char* kFileWatcherPlugin = "file_watcher";
+
+} // namespace
+
+//
+// FileWatcherCertificateProviderFactory::Config
+//
+
+const char* FileWatcherCertificateProviderFactory::Config::name() const {
+ return kFileWatcherPlugin;
+}
+
+std::string FileWatcherCertificateProviderFactory::Config::ToString() const {
+ std::vector<std::string> parts;
+ parts.push_back("{");
+ if (!identity_cert_file_.empty()) {
+ parts.push_back(
+ absl::StrFormat("certificate_file=\"%s\", ", identity_cert_file_));
+ }
+ if (!identity_cert_file_.empty()) {
+ parts.push_back(
+ absl::StrFormat("private_key_file=\"%s\", ", private_key_file_));
+ }
+ if (!identity_cert_file_.empty()) {
+ parts.push_back(
+ absl::StrFormat("ca_certificate_file=\"%s\", ", root_cert_file_));
+ }
+ parts.push_back(
+ absl::StrFormat("refresh_interval=%ldms}", refresh_interval_ms_));
+ return absl::StrJoin(parts, "");
+}
+
+RefCountedPtr<FileWatcherCertificateProviderFactory::Config>
+FileWatcherCertificateProviderFactory::Config::Parse(const Json& config_json,
+ grpc_error** error) {
+ auto config = MakeRefCounted<FileWatcherCertificateProviderFactory::Config>();
+ if (config_json.type() != Json::Type::OBJECT) {
+ *error = GRPC_ERROR_CREATE_FROM_STATIC_STRING(
+ "error:config type should be OBJECT.");
+ return nullptr;
+ }
+ std::vector<grpc_error*> error_list;
+ ParseJsonObjectField(config_json.object_value(), "certificate_file",
+ &config->identity_cert_file_, &error_list, false);
+ ParseJsonObjectField(config_json.object_value(), "private_key_file",
+ &config->private_key_file_, &error_list, false);
+ if (config->identity_cert_file_.empty() !=
+ config->private_key_file_.empty()) {
+ error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
+ "fields \"certificate_file\" and \"private_key_file\" must be both set "
+ "or both unset."));
+ }
+ ParseJsonObjectField(config_json.object_value(), "ca_certificate_file",
+ &config->root_cert_file_, &error_list, false);
+ if (config->identity_cert_file_.empty() && config->root_cert_file_.empty()) {
+ error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
+ "At least one of \"certificate_file\" and \"ca_certificate_file\" must "
+ "be specified."));
+ }
+ if (!ParseJsonObjectFieldAsDuration(
+ config_json.object_value(), "refresh_interval",
+ &config->refresh_interval_ms_, &error_list, false)) {
+ config->refresh_interval_ms_ = 10 * 60 * 1000; // 10 minutes default
+ }
+ if (!error_list.empty()) {
+ *error = GRPC_ERROR_CREATE_FROM_VECTOR(
+ "Error parsing file watcher certificate provider config", &error_list);
+ return nullptr;
+ }
+ return config;
+}
+
+//
+// FileWatcherCertificateProviderFactory
+//
+
+const char* FileWatcherCertificateProviderFactory::name() const {
+ return kFileWatcherPlugin;
+}
+
+RefCountedPtr<CertificateProviderFactory::Config>
+FileWatcherCertificateProviderFactory::CreateCertificateProviderConfig(
+ const Json& config_json, grpc_error** error) {
+ return FileWatcherCertificateProviderFactory::Config::Parse(config_json,
+ error);
+}
+
+} // namespace grpc_core
--- /dev/null
+//
+//
+// Copyright 2020 gRPC authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+//
+
+#ifndef GRPC_CORE_EXT_XDS_FILE_WATCHER_CERTIFICATE_PROVIDER_FACTORY_H
+#define GRPC_CORE_EXT_XDS_FILE_WATCHER_CERTIFICATE_PROVIDER_FACTORY_H
+
+#include <grpc/support/port_platform.h>
+
+#include "src/core/ext/xds/certificate_provider_factory.h"
+
+namespace grpc_core {
+
+class FileWatcherCertificateProviderFactory
+ : public CertificateProviderFactory {
+ public:
+ class Config : public CertificateProviderFactory::Config {
+ public:
+ static RefCountedPtr<Config> Parse(const Json& config_json,
+ grpc_error** error);
+
+ const char* name() const override;
+
+ std::string ToString() const override;
+
+ const std::string& identity_cert_file() const {
+ return identity_cert_file_;
+ }
+
+ const std::string& private_key_file() const { return private_key_file_; }
+
+ const std::string& root_cert_file() const { return root_cert_file_; }
+
+ grpc_millis refresh_interval_ms() const { return refresh_interval_ms_; }
+
+ private:
+ std::string identity_cert_file_;
+ std::string private_key_file_;
+ std::string root_cert_file_;
+ grpc_millis refresh_interval_ms_;
+ };
+
+ const char* name() const override;
+
+ RefCountedPtr<CertificateProviderFactory::Config>
+ CreateCertificateProviderConfig(const Json& config_json,
+ grpc_error** error) override;
+
+ RefCountedPtr<grpc_tls_certificate_provider> CreateCertificateProvider(
+ RefCountedPtr<CertificateProviderFactory::Config> config) override {
+ // TODO(yashykt) : To be implemented
+ return nullptr;
+ }
+};
+
+} // namespace grpc_core
+
+#endif // GRPC_CORE_EXT_XDS_FILE_WATCHER_CERTIFICATE_PROVIDER_FACTORY_H
const char* kMeshCaPlugin = "meshCA";
-//
-// Helper functions for extracting types from JSON
-//
-template <typename NumericType, typename ErrorVectorType>
-bool ExtractJsonType(const Json& json, const std::string& field_name,
- NumericType* output, ErrorVectorType* error_list) {
- static_assert(std::is_integral<NumericType>::value, "Integral required");
- if (json.type() != Json::Type::NUMBER) {
- error_list->push_back(GRPC_ERROR_CREATE_FROM_COPIED_STRING(
- absl::StrCat("field:", field_name, " error:type should be NUMBER")
- .c_str()));
- return false;
- }
- std::istringstream ss(json.string_value());
- ss >> *output;
- // The JSON parsing API should have dealt with parsing errors, but check
- // anyway
- if (GPR_UNLIKELY(ss.bad())) {
- error_list->push_back(GRPC_ERROR_CREATE_FROM_COPIED_STRING(
- absl::StrCat("field:", field_name, " error:failed to parse.").c_str()));
- return false;
- }
- return true;
-}
-
-template <typename ErrorVectorType>
-bool ExtractJsonType(const Json& json, const std::string& field_name,
- bool* output, ErrorVectorType* error_list) {
- switch (json.type()) {
- case Json::Type::JSON_TRUE:
- *output = true;
- return true;
- case Json::Type::JSON_FALSE:
- *output = false;
- return true;
- default:
- error_list->push_back(GRPC_ERROR_CREATE_FROM_COPIED_STRING(
- absl::StrCat("field:", field_name, " error:type should be BOOLEAN")
- .c_str()));
- return false;
- }
-}
-
-template <typename ErrorVectorType>
-bool ExtractJsonType(const Json& json, const std::string& field_name,
- std::string* output, ErrorVectorType* error_list) {
- if (json.type() != Json::Type::STRING) {
- *output = "";
- error_list->push_back(GRPC_ERROR_CREATE_FROM_COPIED_STRING(
- absl::StrCat("field:", field_name, " error:type should be STRING")
- .c_str()));
- return false;
- }
- *output = json.string_value();
- return true;
-}
-
-template <typename ErrorVectorType>
-bool ExtractJsonType(const Json& json, const std::string& field_name,
- const Json::Array** output, ErrorVectorType* error_list) {
- if (json.type() != Json::Type::ARRAY) {
- *output = nullptr;
- error_list->push_back(GRPC_ERROR_CREATE_FROM_COPIED_STRING(
- absl::StrCat("field:", field_name, " error:type should be ARRAY")
- .c_str()));
- return false;
- }
- *output = &json.array_value();
- return true;
-}
-
-template <typename ErrorVectorType>
-bool ExtractJsonType(const Json& json, const std::string& field_name,
- const Json::Object** output, ErrorVectorType* error_list) {
- if (json.type() != Json::Type::OBJECT) {
- *output = nullptr;
- error_list->push_back(GRPC_ERROR_CREATE_FROM_COPIED_STRING(
- absl::StrCat("field:", field_name, " error:type should be OBJECT")
- .c_str()));
- return false;
- }
- *output = &json.object_value();
- return true;
-}
-
-template <typename ErrorVectorType>
-bool ExtractJsonType(const Json& json, const std::string& field_name,
- grpc_millis* output, ErrorVectorType* error_list) {
- if (!ParseDurationFromJson(json, output)) {
- *output = GRPC_MILLIS_INF_PAST;
- error_list->push_back(GRPC_ERROR_CREATE_FROM_COPIED_STRING(
- absl::StrCat("field:", field_name,
- " error:type should be STRING of the form given by "
- "google.proto.Duration.")
- .c_str()));
- return false;
- }
- return true;
-}
-
-template <typename T, typename ErrorVectorType>
-bool ParseJsonObjectField(const Json::Object& object,
- const std::string& field_name, T* output,
- ErrorVectorType* error_list, bool optional = false) {
- auto it = object.find(field_name);
- if (it == object.end()) {
- if (!optional) {
- error_list->push_back(GRPC_ERROR_CREATE_FROM_COPIED_STRING(
- absl::StrCat("field:", field_name, " error:does not exist.")
- .c_str()));
- }
- return false;
- }
- auto& child_object_json = it->second;
- return ExtractJsonType(child_object_json, field_name, output, error_list);
-}
-
} // namespace
//
return kMeshCaPlugin;
}
+std::string GoogleMeshCaCertificateProviderFactory::Config::ToString() const {
+ // TODO(yashykt): To be filled
+ return "{}";
+}
+
std::vector<grpc_error*>
GoogleMeshCaCertificateProviderFactory::Config::ParseJsonObjectStsService(
const Json::Object& sts_service) {
std::vector<grpc_error*> error_list_sts_service;
if (!ParseJsonObjectField(sts_service, "token_exchange_service_uri",
&sts_config_.token_exchange_service_uri,
- &error_list_sts_service, true)) {
+ &error_list_sts_service, false)) {
sts_config_.token_exchange_service_uri =
"securetoken.googleapis.com"; // default
}
ParseJsonObjectField(sts_service, "resource", &sts_config_.resource,
- &error_list_sts_service, true);
+ &error_list_sts_service, false);
ParseJsonObjectField(sts_service, "audience", &sts_config_.audience,
- &error_list_sts_service, true);
+ &error_list_sts_service, false);
if (!ParseJsonObjectField(sts_service, "scope", &sts_config_.scope,
- &error_list_sts_service, true)) {
+ &error_list_sts_service, false)) {
sts_config_.scope =
"https://www.googleapis.com/auth/cloud-platform"; // default
}
ParseJsonObjectField(sts_service, "requested_token_type",
&sts_config_.requested_token_type,
- &error_list_sts_service, true);
+ &error_list_sts_service, false);
ParseJsonObjectField(sts_service, "subject_token_path",
&sts_config_.subject_token_path,
&error_list_sts_service);
&error_list_sts_service);
ParseJsonObjectField(sts_service, "actor_token_path",
&sts_config_.actor_token_path, &error_list_sts_service,
- true);
+ false);
ParseJsonObjectField(sts_service, "actor_token_type",
&sts_config_.actor_token_type, &error_list_sts_service,
- true);
+ false);
return error_list_sts_service;
}
const Json::Object& google_grpc) {
std::vector<grpc_error*> error_list_google_grpc;
if (!ParseJsonObjectField(google_grpc, "target_uri", &endpoint_,
- &error_list_google_grpc, true)) {
+ &error_list_google_grpc, false)) {
endpoint_ = "meshca.googleapis.com"; // Default target
}
const Json::Array* call_credentials_array = nullptr;
"field:google_grpc", &error_list_google_grpc));
}
}
- if (!ParseJsonObjectField(grpc_service, "timeout", &timeout_,
- &error_list_grpc_services, true)) {
+ if (!ParseJsonObjectFieldAsDuration(grpc_service, "timeout", &timeout_,
+ &error_list_grpc_services, false)) {
timeout_ = 10 * 1000; // 10sec default
}
return error_list_grpc_services;
std::vector<grpc_error*> error_list_server;
std::string api_type;
if (ParseJsonObjectField(server, "api_type", &api_type, &error_list_server,
- true)) {
+ false)) {
if (api_type != "GRPC") {
error_list_server.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
"field:api_type error:Only GRPC is supported"));
return error_list_server;
}
-std::unique_ptr<GoogleMeshCaCertificateProviderFactory::Config>
+RefCountedPtr<GoogleMeshCaCertificateProviderFactory::Config>
GoogleMeshCaCertificateProviderFactory::Config::Parse(const Json& config_json,
grpc_error** error) {
auto config =
- absl::make_unique<GoogleMeshCaCertificateProviderFactory::Config>();
+ MakeRefCounted<GoogleMeshCaCertificateProviderFactory::Config>();
if (config_json.type() != Json::Type::OBJECT) {
*error = GRPC_ERROR_CREATE_FROM_STATIC_STRING(
"error:config type should be OBJECT.");
GRPC_ERROR_CREATE_FROM_VECTOR("field:server", &error_list_server));
}
}
- if (!ParseJsonObjectField(config_json.object_value(), "certificate_lifetime",
- &config->certificate_lifetime_, &error_list,
- true)) {
+ if (!ParseJsonObjectFieldAsDuration(
+ config_json.object_value(), "certificate_lifetime",
+ &config->certificate_lifetime_, &error_list, false)) {
config->certificate_lifetime_ = 24 * 60 * 60 * 1000; // 24hrs default
}
- if (!ParseJsonObjectField(config_json.object_value(), "renewal_grace_period",
- &config->renewal_grace_period_, &error_list,
- true)) {
+ if (!ParseJsonObjectFieldAsDuration(
+ config_json.object_value(), "renewal_grace_period",
+ &config->renewal_grace_period_, &error_list, false)) {
config->renewal_grace_period_ = 12 * 60 * 60 * 1000; // 12hrs default
}
std::string key_type;
if (ParseJsonObjectField(config_json.object_value(), "key_type", &key_type,
- &error_list, true)) {
+ &error_list, false)) {
if (key_type != "RSA") {
error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
"field:key_type error:Only RSA is supported."));
}
}
if (!ParseJsonObjectField(config_json.object_value(), "key_size",
- &config->key_size_, &error_list, true)) {
+ &config->key_size_, &error_list, false)) {
config->key_size_ = 2048; // default 2048 bit key size
}
if (!ParseJsonObjectField(config_json.object_value(), "location",
- &config->location_, &error_list, true)) {
+ &config->location_, &error_list, false)) {
// GCE/GKE Metadata server needs to be contacted to get the value.
}
if (!error_list.empty()) {
return kMeshCaPlugin;
}
-std::unique_ptr<CertificateProviderFactory::Config>
+RefCountedPtr<CertificateProviderFactory::Config>
GoogleMeshCaCertificateProviderFactory::CreateCertificateProviderConfig(
const Json& config_json, grpc_error** error) {
return GoogleMeshCaCertificateProviderFactory::Config::Parse(config_json,
const char* name() const override;
+ std::string ToString() const override;
+
const std::string& endpoint() const { return endpoint_; }
const StsConfig& sts_config() const { return sts_config_; }
const std::string& location() const { return location_; }
- static std::unique_ptr<Config> Parse(const Json& config_json,
- grpc_error** error);
+ static RefCountedPtr<Config> Parse(const Json& config_json,
+ grpc_error** error);
private:
// Helpers for parsing the config
const char* name() const override;
- std::unique_ptr<CertificateProviderFactory::Config>
+ RefCountedPtr<CertificateProviderFactory::Config>
CreateCertificateProviderConfig(const Json& config_json,
grpc_error** error) override;
RefCountedPtr<grpc_tls_certificate_provider> CreateCertificateProvider(
- std::unique_ptr<CertificateProviderFactory::Config> config) override {
+ RefCountedPtr<CertificateProviderFactory::Config> config) override {
// TODO(yashykt) : To be implemented
return nullptr;
}
#include "src/core/lib/gpr/useful.h"
#include "src/core/lib/iomgr/error.h"
#include "src/core/lib/iomgr/sockaddr_utils.h"
+#include "src/core/lib/slice/slice_utils.h"
#include "envoy/config/cluster/v3/circuit_breaker.upb.h"
#include "envoy/config/cluster/v3/cluster.upb.h"
+#include "envoy/config/cluster/v3/cluster.upbdefs.h"
#include "envoy/config/core/v3/address.upb.h"
#include "envoy/config/core/v3/base.upb.h"
#include "envoy/config/core/v3/config_source.upb.h"
#include "envoy/config/core/v3/health_check.upb.h"
+#include "envoy/config/core/v3/protocol.upb.h"
#include "envoy/config/endpoint/v3/endpoint.upb.h"
+#include "envoy/config/endpoint/v3/endpoint.upbdefs.h"
#include "envoy/config/endpoint/v3/endpoint_components.upb.h"
#include "envoy/config/endpoint/v3/load_report.upb.h"
#include "envoy/config/listener/v3/api_listener.upb.h"
#include "envoy/config/listener/v3/listener.upb.h"
#include "envoy/config/route/v3/route.upb.h"
+#include "envoy/config/route/v3/route.upbdefs.h"
#include "envoy/config/route/v3/route_components.upb.h"
#include "envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h"
#include "envoy/extensions/transport_sockets/tls/v3/common.upb.h"
#include "envoy/extensions/transport_sockets/tls/v3/tls.upb.h"
#include "envoy/service/cluster/v3/cds.upb.h"
+#include "envoy/service/cluster/v3/cds.upbdefs.h"
#include "envoy/service/discovery/v3/discovery.upb.h"
+#include "envoy/service/discovery/v3/discovery.upbdefs.h"
#include "envoy/service/endpoint/v3/eds.upb.h"
+#include "envoy/service/endpoint/v3/eds.upbdefs.h"
#include "envoy/service/listener/v3/lds.upb.h"
#include "envoy/service/load_stats/v3/lrs.upb.h"
+#include "envoy/service/load_stats/v3/lrs.upbdefs.h"
#include "envoy/service/route/v3/rds.upb.h"
+#include "envoy/service/route/v3/rds.upbdefs.h"
#include "envoy/type/matcher/v3/regex.upb.h"
#include "envoy/type/matcher/v3/string.upb.h"
#include "envoy/type/v3/percent.upb.h"
#include "google/protobuf/struct.upb.h"
#include "google/protobuf/wrappers.upb.h"
#include "google/rpc/status.upb.h"
+#include "upb/text_encode.h"
#include "upb/upb.h"
namespace grpc_core {
+// TODO (donnadionne): Check to see if timeout is enabled, this will be
+// removed once timeout feature is fully integration-tested and enabled by
+// default.
+bool XdsTimeoutEnabled() {
+ char* value = gpr_getenv("GRPC_XDS_EXPERIMENTAL_ENABLE_TIMEOUT");
+ bool parsed_value;
+ bool parse_succeeded = gpr_parse_bool_value(value, &parsed_value);
+ gpr_free(value);
+ return parse_succeeded && parsed_value;
+}
+
+// TODO(yashykt): Check to see if xDS security is enabled. This will be
+// removed once this feature is fully integration-tested and enabled by
+// default.
+bool XdsSecurityEnabled() {
+ char* value = gpr_getenv("GRPC_XDS_EXPERIMENTAL_SECURITY_SUPPORT");
+ bool parsed_value;
+ bool parse_succeeded = gpr_parse_bool_value(value, &parsed_value);
+ gpr_free(value);
+ return parse_succeeded && parsed_value;
+}
+
//
// XdsApi::Route::Matchers::PathMatcher
//
XdsApi::Route::Matchers::PathMatcher::PathMatcher(const PathMatcher& other)
- : type(other.type) {
+ : type(other.type), case_sensitive(other.case_sensitive) {
if (type == PathMatcherType::REGEX) {
- regex_matcher = absl::make_unique<RE2>(other.regex_matcher->pattern());
+ RE2::Options options;
+ options.set_case_sensitive(case_sensitive);
+ regex_matcher =
+ absl::make_unique<RE2>(other.regex_matcher->pattern(), options);
} else {
string_matcher = other.string_matcher;
}
XdsApi::Route::Matchers::PathMatcher& XdsApi::Route::Matchers::PathMatcher::
operator=(const PathMatcher& other) {
type = other.type;
+ case_sensitive = other.case_sensitive;
if (type == PathMatcherType::REGEX) {
- regex_matcher = absl::make_unique<RE2>(other.regex_matcher->pattern());
+ RE2::Options options;
+ options.set_case_sensitive(case_sensitive);
+ regex_matcher =
+ absl::make_unique<RE2>(other.regex_matcher->pattern(), options);
} else {
string_matcher = other.string_matcher;
}
bool XdsApi::Route::Matchers::PathMatcher::operator==(
const PathMatcher& other) const {
if (type != other.type) return false;
+ if (case_sensitive != other.case_sensitive) return false;
if (type == PathMatcherType::REGEX) {
// Should never be null.
if (regex_matcher == nullptr || other.regex_matcher == nullptr) {
default:
break;
}
- return absl::StrFormat("Path %s:%s", path_type_string,
+ return absl::StrFormat("Path %s:%s%s", path_type_string,
type == PathMatcherType::REGEX
? regex_matcher->pattern()
- : string_matcher);
+ : string_matcher,
+ case_sensitive ? "" : "[case_sensitive=false]");
}
//
for (const ClusterWeight& cluster_weight : weighted_clusters) {
contents.push_back(cluster_weight.ToString());
}
+ if (max_stream_duration.has_value()) {
+ contents.push_back(max_stream_duration->ToString());
+ }
return absl::StrJoin(contents, "\n");
}
};
// Returns true if match succeeds.
-bool DomainMatch(MatchType match_type, std::string domain_pattern,
- std::string expected_host_name) {
+bool DomainMatch(MatchType match_type, const std::string& domain_pattern_in,
+ const std::string& expected_host_name_in) {
// Normalize the args to lower-case. Domain matching is case-insensitive.
+ std::string domain_pattern = domain_pattern_in;
+ std::string expected_host_name = expected_host_name_in;
std::transform(domain_pattern.begin(), domain_pattern.end(),
domain_pattern.begin(),
[](unsigned char c) { return std::tolower(c); });
} // namespace
XdsApi::XdsApi(XdsClient* client, TraceFlag* tracer,
- const XdsBootstrap* bootstrap)
+ const XdsBootstrap::Node* node)
: client_(client),
tracer_(tracer),
- use_v3_(bootstrap != nullptr && bootstrap->server().ShouldUseV3()),
- bootstrap_(bootstrap),
+ node_(node),
build_version_(absl::StrCat("gRPC C-core ", GPR_PLATFORM_STRING, " ",
grpc_version_string())),
user_agent_name_(absl::StrCat("gRPC C-core ", GPR_PLATFORM_STRING)) {}
encoded_build_version.size(), arena);
}
-void PopulateNode(upb_arena* arena, const XdsBootstrap* bootstrap,
+void PopulateNode(upb_arena* arena, const XdsBootstrap::Node* node, bool use_v3,
const std::string& build_version,
const std::string& user_agent_name,
envoy_config_core_v3_Node* node_msg) {
- const XdsBootstrap::Node* node = bootstrap->node();
if (node != nullptr) {
if (!node->id.empty()) {
envoy_config_core_v3_Node_set_id(node_msg,
}
}
}
- if (!bootstrap->server().ShouldUseV3()) {
+ if (!use_v3) {
PopulateBuildVersion(arena, node_msg, build_version);
}
envoy_config_core_v3_Node_set_user_agent_name(
return std::string(str.data, str.size);
}
-inline void AddStringField(const char* name, const upb_strview& value,
- std::vector<std::string>* fields,
- bool add_if_empty = false) {
- if (value.size > 0 || add_if_empty) {
- fields->emplace_back(
- absl::StrCat(name, ": \"", UpbStringToAbsl(value), "\""));
- }
-}
-
-inline void AddUInt32ValueField(const char* name,
- const google_protobuf_UInt32Value* value,
- std::vector<std::string>* fields) {
- if (value != nullptr) {
- fields->emplace_back(absl::StrCat(
- name, " { value: ", google_protobuf_UInt32Value_value(value), " }"));
- }
-}
-
-inline void AddLocalityField(int indent_level,
- const envoy_config_core_v3_Locality* locality,
- std::vector<std::string>* fields) {
- std::string indent =
- absl::StrJoin(std::vector<std::string>(indent_level, " "), "");
- // region
- std::string field = absl::StrCat(indent, "region");
- AddStringField(field.c_str(), envoy_config_core_v3_Locality_region(locality),
- fields);
- // zone
- field = absl::StrCat(indent, "zone");
- AddStringField(field.c_str(), envoy_config_core_v3_Locality_zone(locality),
- fields);
- // sub_zone
- field = absl::StrCat(indent, "sub_zone");
- AddStringField(field.c_str(),
- envoy_config_core_v3_Locality_sub_zone(locality), fields);
-}
-
-void AddNodeLogFields(const envoy_config_core_v3_Node* node,
- const std::string& build_version,
- std::vector<std::string>* fields) {
- fields->emplace_back("node {");
- // id
- AddStringField(" id", envoy_config_core_v3_Node_id(node), fields);
- // metadata
- const google_protobuf_Struct* metadata =
- envoy_config_core_v3_Node_metadata(node);
- if (metadata != nullptr) {
- fields->emplace_back(" metadata {");
- size_t entry_idx = UPB_MAP_BEGIN;
- while (true) {
- const google_protobuf_Struct_FieldsEntry* entry =
- google_protobuf_Struct_fields_next(metadata, &entry_idx);
- if (entry == nullptr) break;
- fields->emplace_back(" field {");
- // key
- AddStringField(" key", google_protobuf_Struct_FieldsEntry_key(entry),
- fields);
- // value
- const google_protobuf_Value* value =
- google_protobuf_Struct_FieldsEntry_value(entry);
- if (value != nullptr) {
- std::string value_str;
- if (google_protobuf_Value_has_string_value(value)) {
- value_str = absl::StrCat(
- "string_value: \"",
- UpbStringToAbsl(google_protobuf_Value_string_value(value)), "\"");
- } else if (google_protobuf_Value_has_null_value(value)) {
- value_str = "null_value: NULL_VALUE";
- } else if (google_protobuf_Value_has_number_value(value)) {
- value_str = absl::StrCat("double_value: ",
- google_protobuf_Value_number_value(value));
- } else if (google_protobuf_Value_has_bool_value(value)) {
- value_str = absl::StrCat("bool_value: ",
- google_protobuf_Value_bool_value(value));
- } else if (google_protobuf_Value_has_struct_value(value)) {
- value_str = "struct_value: <not printed>";
- } else if (google_protobuf_Value_has_list_value(value)) {
- value_str = "list_value: <not printed>";
- } else {
- value_str = "<unknown>";
- }
- fields->emplace_back(absl::StrCat(" value { ", value_str, " }"));
- }
- fields->emplace_back(" }");
- }
- fields->emplace_back(" }");
- }
- // locality
- const envoy_config_core_v3_Locality* locality =
- envoy_config_core_v3_Node_locality(node);
- if (locality != nullptr) {
- fields->emplace_back(" locality {");
- AddLocalityField(2, locality, fields);
- fields->emplace_back(" }");
- }
- // build_version (doesn't exist in v3 proto; this is a horrible hack)
- if (!build_version.empty()) {
- fields->emplace_back(
- absl::StrCat(" build_version: \"", build_version, "\""));
- }
- // user_agent_name
- AddStringField(" user_agent_name",
- envoy_config_core_v3_Node_user_agent_name(node), fields);
- // user_agent_version
- AddStringField(" user_agent_version",
- envoy_config_core_v3_Node_user_agent_version(node), fields);
- // client_features
- size_t num_client_features;
- const upb_strview* client_features =
- envoy_config_core_v3_Node_client_features(node, &num_client_features);
- for (size_t i = 0; i < num_client_features; ++i) {
- AddStringField(" client_features", client_features[i], fields);
- }
- fields->emplace_back("}");
-}
-
void MaybeLogDiscoveryRequest(
- XdsClient* client, TraceFlag* tracer,
- const envoy_service_discovery_v3_DiscoveryRequest* request,
- const std::string& build_version) {
+ XdsClient* client, TraceFlag* tracer, upb_symtab* symtab,
+ const envoy_service_discovery_v3_DiscoveryRequest* request) {
if (GRPC_TRACE_FLAG_ENABLED(*tracer) &&
gpr_should_log(GPR_LOG_SEVERITY_DEBUG)) {
- // TODO(roth): When we can upgrade upb, use upb textformat code to dump
- // the raw proto instead of doing this manually.
- std::vector<std::string> fields;
- // version_info
- AddStringField(
- "version_info",
- envoy_service_discovery_v3_DiscoveryRequest_version_info(request),
- &fields);
- // node
- const envoy_config_core_v3_Node* node =
- envoy_service_discovery_v3_DiscoveryRequest_node(request);
- if (node != nullptr) AddNodeLogFields(node, build_version, &fields);
- // resource_names
- size_t num_resource_names;
- const upb_strview* resource_names =
- envoy_service_discovery_v3_DiscoveryRequest_resource_names(
- request, &num_resource_names);
- for (size_t i = 0; i < num_resource_names; ++i) {
- AddStringField("resource_names", resource_names[i], &fields);
- }
- // type_url
- AddStringField(
- "type_url",
- envoy_service_discovery_v3_DiscoveryRequest_type_url(request), &fields);
- // response_nonce
- AddStringField(
- "response_nonce",
- envoy_service_discovery_v3_DiscoveryRequest_response_nonce(request),
- &fields);
- // error_detail
- const struct google_rpc_Status* error_detail =
- envoy_service_discovery_v3_DiscoveryRequest_error_detail(request);
- if (error_detail != nullptr) {
- fields.emplace_back("error_detail {");
- // code
- int32_t code = google_rpc_Status_code(error_detail);
- if (code != 0) fields.emplace_back(absl::StrCat(" code: ", code));
- // message
- AddStringField(" message", google_rpc_Status_message(error_detail),
- &fields);
- fields.emplace_back("}");
- }
+ const upb_msgdef* msg_type =
+ envoy_service_discovery_v3_DiscoveryRequest_getmsgdef(symtab);
+ char buf[10240];
+ upb_text_encode(request, msg_type, nullptr, 0, buf, sizeof(buf));
gpr_log(GPR_DEBUG, "[xds_client %p] constructed ADS request: %s", client,
- absl::StrJoin(fields, "\n").c_str());
+ buf);
}
}
} // namespace
grpc_slice XdsApi::CreateAdsRequest(
- const std::string& type_url,
+ const XdsBootstrap::XdsServer& server, const std::string& type_url,
const std::set<absl::string_view>& resource_names,
const std::string& version, const std::string& nonce, grpc_error* error,
bool populate_node) {
envoy_service_discovery_v3_DiscoveryRequest_new(arena.ptr());
// Set type_url.
absl::string_view real_type_url =
- TypeUrlExternalToInternal(use_v3_, type_url);
+ TypeUrlExternalToInternal(server.ShouldUseV3(), type_url);
envoy_service_discovery_v3_DiscoveryRequest_set_type_url(
request, StdStringToUpbString(real_type_url));
// Set version_info.
}
// Set error_detail if it's a NACK.
if (error != GRPC_ERROR_NONE) {
+ google_rpc_Status* error_detail =
+ envoy_service_discovery_v3_DiscoveryRequest_mutable_error_detail(
+ request, arena.ptr());
+ // Hard-code INVALID_ARGUMENT as the status code.
+ // TODO(roth): If at some point we decide we care about this value,
+ // we could attach a status code to the individual errors where we
+ // generate them in the parsing code, and then use that here.
+ google_rpc_Status_set_code(error_detail, GRPC_STATUS_INVALID_ARGUMENT);
+ // Error description comes from the error that was passed in.
grpc_slice error_description_slice;
GPR_ASSERT(grpc_error_get_str(error, GRPC_ERROR_STR_DESCRIPTION,
&error_description_slice));
upb_strview error_description_strview =
- upb_strview_make(reinterpret_cast<const char*>(
- GPR_SLICE_START_PTR(error_description_slice)),
- GPR_SLICE_LENGTH(error_description_slice));
- google_rpc_Status* error_detail =
- envoy_service_discovery_v3_DiscoveryRequest_mutable_error_detail(
- request, arena.ptr());
+ StdStringToUpbString(StringViewFromSlice(error_description_slice));
google_rpc_Status_set_message(error_detail, error_description_strview);
GRPC_ERROR_UNREF(error);
}
envoy_config_core_v3_Node* node_msg =
envoy_service_discovery_v3_DiscoveryRequest_mutable_node(request,
arena.ptr());
- PopulateNode(arena.ptr(), bootstrap_, build_version_, user_agent_name_,
- node_msg);
+ PopulateNode(arena.ptr(), node_, server.ShouldUseV3(), build_version_,
+ user_agent_name_, node_msg);
}
// Add resource_names.
for (const auto& resource_name : resource_names) {
envoy_service_discovery_v3_DiscoveryRequest_add_resource_names(
request, StdStringToUpbString(resource_name), arena.ptr());
}
- MaybeLogDiscoveryRequest(client_, tracer_, request, build_version_);
+ MaybeLogDiscoveryRequest(client_, tracer_, symtab_.ptr(), request);
return SerializeDiscoveryRequest(arena.ptr(), request);
}
namespace {
void MaybeLogDiscoveryResponse(
- XdsClient* client, TraceFlag* tracer,
+ XdsClient* client, TraceFlag* tracer, upb_symtab* symtab,
const envoy_service_discovery_v3_DiscoveryResponse* response) {
if (GRPC_TRACE_FLAG_ENABLED(*tracer) &&
gpr_should_log(GPR_LOG_SEVERITY_DEBUG)) {
- // TODO(roth): When we can upgrade upb, use upb textformat code to dump
- // the raw proto instead of doing this manually.
- std::vector<std::string> fields;
- // version_info
- AddStringField(
- "version_info",
- envoy_service_discovery_v3_DiscoveryResponse_version_info(response),
- &fields);
- // resources
- size_t num_resources;
- envoy_service_discovery_v3_DiscoveryResponse_resources(response,
- &num_resources);
- fields.emplace_back(
- absl::StrCat("resources: <", num_resources, " element(s)>"));
- // type_url
- AddStringField(
- "type_url",
- envoy_service_discovery_v3_DiscoveryResponse_type_url(response),
- &fields);
- // nonce
- AddStringField("nonce",
- envoy_service_discovery_v3_DiscoveryResponse_nonce(response),
- &fields);
- gpr_log(GPR_DEBUG, "[xds_client %p] received response: %s", client,
- absl::StrJoin(fields, "\n").c_str());
+ const upb_msgdef* msg_type =
+ envoy_service_discovery_v3_DiscoveryResponse_getmsgdef(symtab);
+ char buf[10240];
+ upb_text_encode(response, msg_type, nullptr, 0, buf, sizeof(buf));
+ gpr_log(GPR_DEBUG, "[xds_client %p] received response: %s", client, buf);
}
}
void MaybeLogRouteConfiguration(
- XdsClient* client, TraceFlag* tracer,
+ XdsClient* client, TraceFlag* tracer, upb_symtab* symtab,
const envoy_config_route_v3_RouteConfiguration* route_config) {
if (GRPC_TRACE_FLAG_ENABLED(*tracer) &&
gpr_should_log(GPR_LOG_SEVERITY_DEBUG)) {
- // TODO(roth): When we can upgrade upb, use upb textformat code to dump
- // the raw proto instead of doing this manually.
- std::vector<std::string> fields;
- // name
- AddStringField("name",
- envoy_config_route_v3_RouteConfiguration_name(route_config),
- &fields);
- // virtual_hosts
- size_t num_virtual_hosts;
- const envoy_config_route_v3_VirtualHost* const* virtual_hosts =
- envoy_config_route_v3_RouteConfiguration_virtual_hosts(
- route_config, &num_virtual_hosts);
- for (size_t i = 0; i < num_virtual_hosts; ++i) {
- const auto* virtual_host = virtual_hosts[i];
- fields.push_back("virtual_hosts {");
- // name
- AddStringField(" name",
- envoy_config_route_v3_VirtualHost_name(virtual_host),
- &fields);
- // domains
- size_t num_domains;
- const upb_strview* const domains =
- envoy_config_route_v3_VirtualHost_domains(virtual_host, &num_domains);
- for (size_t j = 0; j < num_domains; ++j) {
- AddStringField(" domains", domains[j], &fields);
- }
- // routes
- size_t num_routes;
- const envoy_config_route_v3_Route* const* routes =
- envoy_config_route_v3_VirtualHost_routes(virtual_host, &num_routes);
- for (size_t j = 0; j < num_routes; ++j) {
- const auto* route = routes[j];
- fields.push_back(" route {");
- // name
- AddStringField(" name", envoy_config_route_v3_Route_name(route),
- &fields);
- // match
- const envoy_config_route_v3_RouteMatch* match =
- envoy_config_route_v3_Route_match(route);
- if (match != nullptr) {
- fields.emplace_back(" match {");
- // path matching
- if (envoy_config_route_v3_RouteMatch_has_prefix(match)) {
- AddStringField(" prefix",
- envoy_config_route_v3_RouteMatch_prefix(match),
- &fields,
- /*add_if_empty=*/true);
- } else if (envoy_config_route_v3_RouteMatch_has_path(match)) {
- AddStringField(" path",
- envoy_config_route_v3_RouteMatch_path(match),
- &fields,
- /*add_if_empty=*/true);
- } else if (envoy_config_route_v3_RouteMatch_has_safe_regex(match)) {
- fields.emplace_back(" safe_regex: <not printed>");
- } else {
- fields.emplace_back(" <unknown path matching type>");
- }
- // header matching
- size_t num_headers;
- envoy_config_route_v3_RouteMatch_headers(match, &num_headers);
- if (num_headers > 0) {
- fields.emplace_back(
- absl::StrCat(" headers: <", num_headers, " element(s)>"));
- }
- fields.emplace_back(" }");
- }
- // action
- if (envoy_config_route_v3_Route_has_route(route)) {
- const envoy_config_route_v3_RouteAction* action =
- envoy_config_route_v3_Route_route(route);
- fields.emplace_back(" route {");
- if (envoy_config_route_v3_RouteAction_has_cluster(action)) {
- AddStringField(" cluster",
- envoy_config_route_v3_RouteAction_cluster(action),
- &fields);
- } else if (envoy_config_route_v3_RouteAction_has_cluster_header(
- action)) {
- AddStringField(
- " cluster_header",
- envoy_config_route_v3_RouteAction_cluster_header(action),
- &fields);
- } else if (envoy_config_route_v3_RouteAction_has_weighted_clusters(
- action)) {
- const envoy_config_route_v3_WeightedCluster* weighted_clusters =
- envoy_config_route_v3_RouteAction_weighted_clusters(action);
- fields.emplace_back(" weighted_clusters {");
- size_t num_cluster_weights;
- const envoy_config_route_v3_WeightedCluster_ClusterWeight* const*
- cluster_weights =
- envoy_config_route_v3_WeightedCluster_clusters(
- weighted_clusters, &num_cluster_weights);
- for (size_t i = 0; i < num_cluster_weights; ++i) {
- const envoy_config_route_v3_WeightedCluster_ClusterWeight*
- cluster_weight = cluster_weights[i];
- fields.emplace_back(" clusters {");
- AddStringField(
- " name",
- envoy_config_route_v3_WeightedCluster_ClusterWeight_name(
- cluster_weight),
- &fields);
- AddUInt32ValueField(
- " weight",
- envoy_config_route_v3_WeightedCluster_ClusterWeight_weight(
- cluster_weight),
- &fields);
- fields.emplace_back(" }");
- }
- AddUInt32ValueField(
- " total_weight",
- envoy_config_route_v3_WeightedCluster_total_weight(
- weighted_clusters),
- &fields);
- fields.emplace_back(" }");
- }
- fields.emplace_back(" }");
- } else if (envoy_config_route_v3_Route_has_redirect(route)) {
- fields.emplace_back(" redirect: <not printed>");
- } else if (envoy_config_route_v3_Route_has_direct_response(route)) {
- fields.emplace_back(" direct_response: <not printed>");
- } else if (envoy_config_route_v3_Route_has_filter_action(route)) {
- fields.emplace_back(" filter_action: <not printed>");
- }
- fields.push_back(" }");
- }
- fields.push_back("}");
- }
- gpr_log(GPR_DEBUG, "[xds_client %p] RouteConfiguration: %s", client,
- absl::StrJoin(fields, "\n").c_str());
+ const upb_msgdef* msg_type =
+ envoy_config_route_v3_RouteConfiguration_getmsgdef(symtab);
+ char buf[10240];
+ upb_text_encode(route_config, msg_type, nullptr, 0, buf, sizeof(buf));
+ gpr_log(GPR_DEBUG, "[xds_client %p] RouteConfiguration: %s", client, buf);
}
}
-void MaybeLogCluster(XdsClient* client, TraceFlag* tracer,
+void MaybeLogCluster(XdsClient* client, TraceFlag* tracer, upb_symtab* symtab,
const envoy_config_cluster_v3_Cluster* cluster) {
if (GRPC_TRACE_FLAG_ENABLED(*tracer) &&
gpr_should_log(GPR_LOG_SEVERITY_DEBUG)) {
- // TODO(roth): When we can upgrade upb, use upb textformat code to dump
- // the raw proto instead of doing this manually.
- std::vector<std::string> fields;
- // name
- AddStringField("name", envoy_config_cluster_v3_Cluster_name(cluster),
- &fields);
- // type
- if (envoy_config_cluster_v3_Cluster_has_type(cluster)) {
- fields.emplace_back(absl::StrCat(
- "type: ", envoy_config_cluster_v3_Cluster_type(cluster)));
- } else if (envoy_config_cluster_v3_Cluster_has_cluster_type(cluster)) {
- fields.emplace_back("cluster_type: <not printed>");
- } else {
- fields.emplace_back("<unknown type>");
- }
- // eds_cluster_config
- const envoy_config_cluster_v3_Cluster_EdsClusterConfig* eds_cluster_config =
- envoy_config_cluster_v3_Cluster_eds_cluster_config(cluster);
- if (eds_cluster_config != nullptr) {
- fields.emplace_back("eds_cluster_config {");
- // eds_config
- const struct envoy_config_core_v3_ConfigSource* eds_config =
- envoy_config_cluster_v3_Cluster_EdsClusterConfig_eds_config(
- eds_cluster_config);
- if (eds_config != nullptr) {
- if (envoy_config_core_v3_ConfigSource_has_ads(eds_config)) {
- fields.emplace_back(" eds_config { ads {} }");
- } else {
- fields.emplace_back(" eds_config: <non-ADS type>");
- }
- }
- // service_name
- AddStringField(
- " service_name",
- envoy_config_cluster_v3_Cluster_EdsClusterConfig_service_name(
- eds_cluster_config),
- &fields);
- fields.emplace_back("}");
- }
- // lb_policy
- fields.emplace_back(absl::StrCat(
- "lb_policy: ", envoy_config_cluster_v3_Cluster_lb_policy(cluster)));
- // lrs_server
- const envoy_config_core_v3_ConfigSource* lrs_server =
- envoy_config_cluster_v3_Cluster_lrs_server(cluster);
- if (lrs_server != nullptr) {
- if (envoy_config_core_v3_ConfigSource_has_self(lrs_server)) {
- fields.emplace_back("lrs_server { self {} }");
- } else {
- fields.emplace_back("lrs_server: <non-self type>");
- }
- }
- gpr_log(GPR_DEBUG, "[xds_client %p] Cluster: %s", client,
- absl::StrJoin(fields, "\n").c_str());
+ const upb_msgdef* msg_type =
+ envoy_config_cluster_v3_Cluster_getmsgdef(symtab);
+ char buf[10240];
+ upb_text_encode(cluster, msg_type, nullptr, 0, buf, sizeof(buf));
+ gpr_log(GPR_DEBUG, "[xds_client %p] Cluster: %s", client, buf);
}
}
void MaybeLogClusterLoadAssignment(
- XdsClient* client, TraceFlag* tracer,
+ XdsClient* client, TraceFlag* tracer, upb_symtab* symtab,
const envoy_config_endpoint_v3_ClusterLoadAssignment* cla) {
if (GRPC_TRACE_FLAG_ENABLED(*tracer) &&
gpr_should_log(GPR_LOG_SEVERITY_DEBUG)) {
- // TODO(roth): When we can upgrade upb, use upb textformat code to dump
- // the raw proto instead of doing this manually.
- std::vector<std::string> fields;
- // cluster_name
- AddStringField(
- "cluster_name",
- envoy_config_endpoint_v3_ClusterLoadAssignment_cluster_name(cla),
- &fields);
- // endpoints
- size_t num_localities;
- const struct envoy_config_endpoint_v3_LocalityLbEndpoints* const*
- locality_endpoints =
- envoy_config_endpoint_v3_ClusterLoadAssignment_endpoints(
- cla, &num_localities);
- for (size_t i = 0; i < num_localities; ++i) {
- const auto* locality_endpoint = locality_endpoints[i];
- fields.emplace_back("endpoints {");
- // locality
- const auto* locality =
- envoy_config_endpoint_v3_LocalityLbEndpoints_locality(
- locality_endpoint);
- if (locality != nullptr) {
- fields.emplace_back(" locality {");
- AddLocalityField(2, locality, &fields);
- fields.emplace_back(" }");
- }
- // lb_endpoints
- size_t num_lb_endpoints;
- const envoy_config_endpoint_v3_LbEndpoint* const* lb_endpoints =
- envoy_config_endpoint_v3_LocalityLbEndpoints_lb_endpoints(
- locality_endpoint, &num_lb_endpoints);
- for (size_t j = 0; j < num_lb_endpoints; ++j) {
- const auto* lb_endpoint = lb_endpoints[j];
- fields.emplace_back(" lb_endpoints {");
- // health_status
- uint32_t health_status =
- envoy_config_endpoint_v3_LbEndpoint_health_status(lb_endpoint);
- if (health_status > 0) {
- fields.emplace_back(
- absl::StrCat(" health_status: ", health_status));
- }
- // endpoint
- const envoy_config_endpoint_v3_Endpoint* endpoint =
- envoy_config_endpoint_v3_LbEndpoint_endpoint(lb_endpoint);
- if (endpoint != nullptr) {
- fields.emplace_back(" endpoint {");
- // address
- const auto* address =
- envoy_config_endpoint_v3_Endpoint_address(endpoint);
- if (address != nullptr) {
- fields.emplace_back(" address {");
- // socket_address
- const auto* socket_address =
- envoy_config_core_v3_Address_socket_address(address);
- if (socket_address != nullptr) {
- fields.emplace_back(" socket_address {");
- // address
- AddStringField(
- " address",
- envoy_config_core_v3_SocketAddress_address(socket_address),
- &fields);
- // port_value
- if (envoy_config_core_v3_SocketAddress_has_port_value(
- socket_address)) {
- fields.emplace_back(
- absl::StrCat(" port_value: ",
- envoy_config_core_v3_SocketAddress_port_value(
- socket_address)));
- } else {
- fields.emplace_back(" <non-numeric port>");
- }
- fields.emplace_back(" }");
- } else {
- fields.emplace_back(" <non-socket address>");
- }
- fields.emplace_back(" }");
- }
- fields.emplace_back(" }");
- }
- fields.emplace_back(" }");
- }
- // load_balancing_weight
- AddUInt32ValueField(
- " load_balancing_weight",
- envoy_config_endpoint_v3_LocalityLbEndpoints_load_balancing_weight(
- locality_endpoint),
- &fields);
- // priority
- uint32_t priority = envoy_config_endpoint_v3_LocalityLbEndpoints_priority(
- locality_endpoint);
- if (priority > 0) {
- fields.emplace_back(absl::StrCat(" priority: ", priority));
- }
- fields.emplace_back("}");
- }
- // policy
- const envoy_config_endpoint_v3_ClusterLoadAssignment_Policy* policy =
- envoy_config_endpoint_v3_ClusterLoadAssignment_policy(cla);
- if (policy != nullptr) {
- fields.emplace_back("policy {");
- // drop_overloads
- size_t num_drop_overloads;
- const envoy_config_endpoint_v3_ClusterLoadAssignment_Policy_DropOverload* const*
- drop_overloads =
- envoy_config_endpoint_v3_ClusterLoadAssignment_Policy_drop_overloads(
- policy, &num_drop_overloads);
- for (size_t i = 0; i < num_drop_overloads; ++i) {
- auto* drop_overload = drop_overloads[i];
- fields.emplace_back(" drop_overloads {");
- // category
- AddStringField(
- " category",
- envoy_config_endpoint_v3_ClusterLoadAssignment_Policy_DropOverload_category(
- drop_overload),
- &fields);
- // drop_percentage
- const auto* drop_percentage =
- envoy_config_endpoint_v3_ClusterLoadAssignment_Policy_DropOverload_drop_percentage(
- drop_overload);
- if (drop_percentage != nullptr) {
- fields.emplace_back(" drop_percentage {");
- fields.emplace_back(absl::StrCat(
- " numerator: ",
- envoy_type_v3_FractionalPercent_numerator(drop_percentage)));
- fields.emplace_back(absl::StrCat(
- " denominator: ",
- envoy_type_v3_FractionalPercent_denominator(drop_percentage)));
- fields.emplace_back(" }");
- }
- fields.emplace_back(" }");
- }
- // overprovisioning_factor
- fields.emplace_back("}");
- }
+ const upb_msgdef* msg_type =
+ envoy_config_endpoint_v3_ClusterLoadAssignment_getmsgdef(symtab);
+ char buf[10240];
+ upb_text_encode(cla, msg_type, nullptr, 0, buf, sizeof(buf));
gpr_log(GPR_DEBUG, "[xds_client %p] ClusterLoadAssignment: %s", client,
- absl::StrJoin(fields, "\n").c_str());
+ buf);
}
}
grpc_error* RoutePathMatchParse(const envoy_config_route_v3_RouteMatch* match,
XdsApi::Route* route, bool* ignore_route) {
+ auto* case_sensitive = envoy_config_route_v3_RouteMatch_case_sensitive(match);
+ if (case_sensitive != nullptr) {
+ route->matchers.path_matcher.case_sensitive =
+ google_protobuf_BoolValue_value(case_sensitive);
+ }
if (envoy_config_route_v3_RouteMatch_has_prefix(match)) {
absl::string_view prefix =
UpbStringToAbsl(envoy_config_route_v3_RouteMatch_prefix(match));
// Empty prefix "" is accepted.
- if (prefix.size() > 0) {
+ if (!prefix.empty()) {
// Prefix "/" is accepted.
if (prefix[0] != '/') {
// Prefix which does not start with a / will never match anything, so
} else if (envoy_config_route_v3_RouteMatch_has_path(match)) {
absl::string_view path =
UpbStringToAbsl(envoy_config_route_v3_RouteMatch_path(match));
- if (path.size() == 0) {
+ if (path.empty()) {
// Path that is empty will never match anything, so ignore this route.
*ignore_route = true;
return GRPC_ERROR_NONE;
GPR_ASSERT(regex_matcher != nullptr);
std::string matcher = UpbStringToStdString(
envoy_type_matcher_v3_RegexMatcher_regex(regex_matcher));
- std::unique_ptr<RE2> regex = absl::make_unique<RE2>(std::move(matcher));
+ RE2::Options options;
+ options.set_case_sensitive(route->matchers.path_matcher.case_sensitive);
+ auto regex = absl::make_unique<RE2>(std::move(matcher), options);
if (!regex->ok()) {
return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
"Invalid regex string specified in path matcher.");
if (envoy_config_route_v3_RouteAction_has_cluster(route_action)) {
route->cluster_name = UpbStringToStdString(
envoy_config_route_v3_RouteAction_cluster(route_action));
- if (route->cluster_name.size() == 0) {
+ if (route->cluster_name.empty()) {
return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
"RouteAction cluster contains empty cluster name.");
}
} else {
// No cluster or weighted_clusters found in RouteAction, ignore this route.
*ignore_route = true;
- return GRPC_ERROR_NONE;
+ }
+ if (XdsTimeoutEnabled() && !*ignore_route) {
+ const envoy_config_route_v3_RouteAction_MaxStreamDuration*
+ max_stream_duration =
+ envoy_config_route_v3_RouteAction_max_stream_duration(route_action);
+ if (max_stream_duration != nullptr) {
+ const google_protobuf_Duration* duration =
+ envoy_config_route_v3_RouteAction_MaxStreamDuration_grpc_timeout_header_max(
+ max_stream_duration);
+ if (duration == nullptr) {
+ duration =
+ envoy_config_route_v3_RouteAction_MaxStreamDuration_max_stream_duration(
+ max_stream_duration);
+ }
+ if (duration != nullptr) {
+ XdsApi::Duration duration_in_route;
+ duration_in_route.seconds = google_protobuf_Duration_seconds(duration);
+ duration_in_route.nanos = google_protobuf_Duration_nanos(duration);
+ route->max_stream_duration = duration_in_route;
+ }
+ }
}
return GRPC_ERROR_NONE;
}
grpc_error* RouteConfigParse(
- XdsClient* client, TraceFlag* tracer,
+ XdsClient* client, TraceFlag* tracer, upb_symtab* symtab,
const envoy_config_route_v3_RouteConfiguration* route_config,
XdsApi::RdsUpdate* rds_update) {
- MaybeLogRouteConfiguration(client, tracer, route_config);
+ MaybeLogRouteConfiguration(client, tracer, symtab, route_config);
// Get the virtual hosts.
size_t size;
const envoy_config_route_v3_VirtualHost* const* virtual_hosts =
error = RouteActionParse(routes[j], &route, &ignore_route);
if (error != GRPC_ERROR_NONE) return error;
if (ignore_route) continue;
- const google_protobuf_BoolValue* case_sensitive =
- envoy_config_route_v3_RouteMatch_case_sensitive(match);
- if (case_sensitive != nullptr &&
- !google_protobuf_BoolValue_value(case_sensitive)) {
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "case_sensitive if set must be set to true.");
- }
vhost.routes.emplace_back(std::move(route));
}
if (vhost.routes.empty()) {
}
grpc_error* LdsResponseParse(
- XdsClient* client, TraceFlag* tracer,
+ XdsClient* client, TraceFlag* tracer, upb_symtab* symtab,
const envoy_service_discovery_v3_DiscoveryResponse* response,
const std::set<absl::string_view>& expected_listener_names,
XdsApi::LdsUpdateMap* lds_update_map, upb_arena* arena) {
return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
"Could not parse HttpConnectionManager config from ApiListener");
}
+ if (XdsTimeoutEnabled()) {
+ // Obtain max_stream_duration from Http Protocol Options.
+ const envoy_config_core_v3_HttpProtocolOptions* options =
+ envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_common_http_protocol_options(
+ http_connection_manager);
+ if (options != nullptr) {
+ const google_protobuf_Duration* duration =
+ envoy_config_core_v3_HttpProtocolOptions_max_stream_duration(
+ options);
+ if (duration != nullptr) {
+ lds_update.http_max_stream_duration.seconds =
+ google_protobuf_Duration_seconds(duration);
+ lds_update.http_max_stream_duration.nanos =
+ google_protobuf_Duration_nanos(duration);
+ }
+ }
+ }
// Found inlined route_config. Parse it to find the cluster_name.
if (envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_has_route_config(
http_connection_manager)) {
http_connection_manager);
XdsApi::RdsUpdate rds_update;
grpc_error* error =
- RouteConfigParse(client, tracer, route_config, &rds_update);
+ RouteConfigParse(client, tracer, symtab, route_config, &rds_update);
if (error != GRPC_ERROR_NONE) return error;
lds_update.rds_update = std::move(rds_update);
continue;
}
grpc_error* RdsResponseParse(
- XdsClient* client, TraceFlag* tracer,
+ XdsClient* client, TraceFlag* tracer, upb_symtab* symtab,
const envoy_service_discovery_v3_DiscoveryResponse* response,
const std::set<absl::string_view>& expected_route_configuration_names,
XdsApi::RdsUpdateMap* rds_update_map, upb_arena* arena) {
XdsApi::RdsUpdate& rds_update =
(*rds_update_map)[std::move(route_config_name)];
grpc_error* error =
- RouteConfigParse(client, tracer, route_config, &rds_update);
+ RouteConfigParse(client, tracer, symtab, route_config, &rds_update);
if (error != GRPC_ERROR_NONE) return error;
}
return GRPC_ERROR_NONE;
}
+XdsApi::CommonTlsContext::CertificateProviderInstance
+CertificateProviderInstanceParse(
+ const envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProviderInstance*
+ certificate_provider_instance_proto) {
+ return {
+ UpbStringToStdString(
+ envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProviderInstance_instance_name(
+ certificate_provider_instance_proto)),
+ UpbStringToStdString(
+ envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProviderInstance_certificate_name(
+ certificate_provider_instance_proto))};
+}
+
grpc_error* CommonTlsContextParse(
const envoy_extensions_transport_sockets_tls_v3_CommonTlsContext*
common_tls_context_proto,
combined_validation_context);
if (validation_context_certificate_provider_instance != nullptr) {
common_tls_context->combined_validation_context
- .validation_context_certificate_provider_instance = UpbStringToStdString(
- envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProviderInstance_instance_name(
- validation_context_certificate_provider_instance));
+ .validation_context_certificate_provider_instance =
+ CertificateProviderInstanceParse(
+ validation_context_certificate_provider_instance);
}
}
auto* tls_certificate_certificate_provider_instance =
envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_tls_certificate_certificate_provider_instance(
common_tls_context_proto);
if (tls_certificate_certificate_provider_instance != nullptr) {
- common_tls_context
- ->tls_certificate_certificate_provider_instance = UpbStringToStdString(
- envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProviderInstance_instance_name(
- tls_certificate_certificate_provider_instance));
+ common_tls_context->tls_certificate_certificate_provider_instance =
+ CertificateProviderInstanceParse(
+ tls_certificate_certificate_provider_instance);
}
return GRPC_ERROR_NONE;
}
grpc_error* CdsResponseParse(
- XdsClient* client, TraceFlag* tracer,
+ XdsClient* client, TraceFlag* tracer, upb_symtab* symtab,
const envoy_service_discovery_v3_DiscoveryResponse* response,
const std::set<absl::string_view>& expected_cluster_names,
XdsApi::CdsUpdateMap* cds_update_map, upb_arena* arena) {
if (cluster == nullptr) {
return GRPC_ERROR_CREATE_FROM_STATIC_STRING("Can't decode cluster.");
}
- MaybeLogCluster(client, tracer, cluster);
+ MaybeLogCluster(client, tracer, symtab, cluster);
// Ignore unexpected cluster names.
std::string cluster_name =
UpbStringToStdString(envoy_config_cluster_v3_Cluster_name(cluster));
return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
"LB policy is not ROUND_ROBIN.");
}
- // Record Upstream tls context
- auto* transport_socket =
- envoy_config_cluster_v3_Cluster_transport_socket(cluster);
- if (transport_socket != nullptr) {
- absl::string_view name = UpbStringToAbsl(
- envoy_config_core_v3_TransportSocket_name(transport_socket));
- if (name == "tls") {
- auto* typed_config =
- envoy_config_core_v3_TransportSocket_typed_config(transport_socket);
- if (typed_config != nullptr) {
- const upb_strview encoded_upstream_tls_context =
- google_protobuf_Any_value(typed_config);
- auto* upstream_tls_context =
- envoy_extensions_transport_sockets_tls_v3_UpstreamTlsContext_parse(
- encoded_upstream_tls_context.data,
- encoded_upstream_tls_context.size, arena);
- if (upstream_tls_context == nullptr) {
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "Can't decode upstream tls context.");
- }
- auto* common_tls_context =
- envoy_extensions_transport_sockets_tls_v3_UpstreamTlsContext_common_tls_context(
- upstream_tls_context);
- if (common_tls_context != nullptr) {
- grpc_error* error = CommonTlsContextParse(
- common_tls_context, &cds_update.common_tls_context);
- if (error != GRPC_ERROR_NONE) return error;
+ if (XdsSecurityEnabled()) {
+ // Record Upstream tls context
+ auto* transport_socket =
+ envoy_config_cluster_v3_Cluster_transport_socket(cluster);
+ if (transport_socket != nullptr) {
+ absl::string_view name = UpbStringToAbsl(
+ envoy_config_core_v3_TransportSocket_name(transport_socket));
+ if (name == "envoy.transport_sockets.tls") {
+ auto* typed_config =
+ envoy_config_core_v3_TransportSocket_typed_config(
+ transport_socket);
+ if (typed_config != nullptr) {
+ const upb_strview encoded_upstream_tls_context =
+ google_protobuf_Any_value(typed_config);
+ auto* upstream_tls_context =
+ envoy_extensions_transport_sockets_tls_v3_UpstreamTlsContext_parse(
+ encoded_upstream_tls_context.data,
+ encoded_upstream_tls_context.size, arena);
+ if (upstream_tls_context == nullptr) {
+ return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
+ "Can't decode upstream tls context.");
+ }
+ auto* common_tls_context =
+ envoy_extensions_transport_sockets_tls_v3_UpstreamTlsContext_common_tls_context(
+ upstream_tls_context);
+ if (common_tls_context != nullptr) {
+ grpc_error* error = CommonTlsContextParse(
+ common_tls_context, &cds_update.common_tls_context);
+ if (error != GRPC_ERROR_NONE) return error;
+ }
}
}
}
std::string category = UpbStringToStdString(
envoy_config_endpoint_v3_ClusterLoadAssignment_Policy_DropOverload_category(
drop_overload));
- if (category.size() == 0) {
+ if (category.empty()) {
return GRPC_ERROR_CREATE_FROM_STATIC_STRING("Empty drop category name");
}
// Get the drop rate (per million).
}
grpc_error* EdsResponseParse(
- XdsClient* client, TraceFlag* tracer,
+ XdsClient* client, TraceFlag* tracer, upb_symtab* symtab,
const envoy_service_discovery_v3_DiscoveryResponse* response,
const std::set<absl::string_view>& expected_eds_service_names,
XdsApi::EdsUpdateMap* eds_update_map, upb_arena* arena) {
return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
"Can't parse cluster_load_assignment.");
}
- MaybeLogClusterLoadAssignment(client, tracer, cluster_load_assignment);
+ MaybeLogClusterLoadAssignment(client, tracer, symtab,
+ cluster_load_assignment);
// Check the EDS service name. Ignore unexpected names.
std::string eds_service_name = UpbStringToStdString(
envoy_config_endpoint_v3_ClusterLoadAssignment_cluster_name(
GRPC_ERROR_CREATE_FROM_STATIC_STRING("Can't decode DiscoveryResponse.");
return result;
}
- MaybeLogDiscoveryResponse(client_, tracer_, response);
+ MaybeLogDiscoveryResponse(client_, tracer_, symtab_.ptr(), response);
// Record the type_url, the version_info, and the nonce of the response.
result.type_url = TypeUrlInternalToExternal(UpbStringToAbsl(
envoy_service_discovery_v3_DiscoveryResponse_type_url(response)));
envoy_service_discovery_v3_DiscoveryResponse_nonce(response));
// Parse the response according to the resource type.
if (IsLds(result.type_url)) {
- result.parse_error =
- LdsResponseParse(client_, tracer_, response, expected_listener_names,
- &result.lds_update_map, arena.ptr());
+ result.parse_error = LdsResponseParse(client_, tracer_, symtab_.ptr(),
+ response, expected_listener_names,
+ &result.lds_update_map, arena.ptr());
} else if (IsRds(result.type_url)) {
- result.parse_error = RdsResponseParse(client_, tracer_, response,
- expected_route_configuration_names,
- &result.rds_update_map, arena.ptr());
- } else if (IsCds(result.type_url)) {
result.parse_error =
- CdsResponseParse(client_, tracer_, response, expected_cluster_names,
- &result.cds_update_map, arena.ptr());
+ RdsResponseParse(client_, tracer_, symtab_.ptr(), response,
+ expected_route_configuration_names,
+ &result.rds_update_map, arena.ptr());
+ } else if (IsCds(result.type_url)) {
+ result.parse_error = CdsResponseParse(client_, tracer_, symtab_.ptr(),
+ response, expected_cluster_names,
+ &result.cds_update_map, arena.ptr());
} else if (IsEds(result.type_url)) {
- result.parse_error =
- EdsResponseParse(client_, tracer_, response, expected_eds_service_names,
- &result.eds_update_map, arena.ptr());
+ result.parse_error = EdsResponseParse(client_, tracer_, symtab_.ptr(),
+ response, expected_eds_service_names,
+ &result.eds_update_map, arena.ptr());
}
return result;
}
namespace {
void MaybeLogLrsRequest(
- XdsClient* client, TraceFlag* tracer,
- const envoy_service_load_stats_v3_LoadStatsRequest* request,
- const std::string& build_version) {
+ XdsClient* client, TraceFlag* tracer, upb_symtab* symtab,
+ const envoy_service_load_stats_v3_LoadStatsRequest* request) {
if (GRPC_TRACE_FLAG_ENABLED(*tracer) &&
gpr_should_log(GPR_LOG_SEVERITY_DEBUG)) {
- // TODO(roth): When we can upgrade upb, use upb textformat code to dump
- // the raw proto instead of doing this manually.
- std::vector<std::string> fields;
- // node
- const auto* node =
- envoy_service_load_stats_v3_LoadStatsRequest_node(request);
- if (node != nullptr) {
- AddNodeLogFields(node, build_version, &fields);
- }
- // cluster_stats
- size_t num_cluster_stats;
- const struct envoy_config_endpoint_v3_ClusterStats* const* cluster_stats =
- envoy_service_load_stats_v3_LoadStatsRequest_cluster_stats(
- request, &num_cluster_stats);
- for (size_t i = 0; i < num_cluster_stats; ++i) {
- const auto* cluster_stat = cluster_stats[i];
- fields.emplace_back("cluster_stats {");
- // cluster_name
- AddStringField(
- " cluster_name",
- envoy_config_endpoint_v3_ClusterStats_cluster_name(cluster_stat),
- &fields);
- // cluster_service_name
- AddStringField(" cluster_service_name",
- envoy_config_endpoint_v3_ClusterStats_cluster_service_name(
- cluster_stat),
- &fields);
- // upstream_locality_stats
- size_t num_stats;
- const envoy_config_endpoint_v3_UpstreamLocalityStats* const* stats =
- envoy_config_endpoint_v3_ClusterStats_upstream_locality_stats(
- cluster_stat, &num_stats);
- for (size_t j = 0; j < num_stats; ++j) {
- const auto* stat = stats[j];
- fields.emplace_back(" upstream_locality_stats {");
- // locality
- const auto* locality =
- envoy_config_endpoint_v3_UpstreamLocalityStats_locality(stat);
- if (locality != nullptr) {
- fields.emplace_back(" locality {");
- AddLocalityField(3, locality, &fields);
- fields.emplace_back(" }");
- }
- // total_successful_requests
- fields.emplace_back(absl::StrCat(
- " total_successful_requests: ",
- envoy_config_endpoint_v3_UpstreamLocalityStats_total_successful_requests(
- stat)));
- // total_requests_in_progress
- fields.emplace_back(absl::StrCat(
- " total_requests_in_progress: ",
- envoy_config_endpoint_v3_UpstreamLocalityStats_total_requests_in_progress(
- stat)));
- // total_error_requests
- fields.emplace_back(absl::StrCat(
- " total_error_requests: ",
- envoy_config_endpoint_v3_UpstreamLocalityStats_total_error_requests(
- stat)));
- // total_issued_requests
- fields.emplace_back(absl::StrCat(
- " total_issued_requests: ",
- envoy_config_endpoint_v3_UpstreamLocalityStats_total_issued_requests(
- stat)));
- fields.emplace_back(" }");
- }
- // total_dropped_requests
- fields.emplace_back(absl::StrCat(
- " total_dropped_requests: ",
- envoy_config_endpoint_v3_ClusterStats_total_dropped_requests(
- cluster_stat)));
- // dropped_requests
- size_t num_drops;
- const envoy_config_endpoint_v3_ClusterStats_DroppedRequests* const*
- drops = envoy_config_endpoint_v3_ClusterStats_dropped_requests(
- cluster_stat, &num_drops);
- for (size_t j = 0; j < num_drops; ++j) {
- const auto* drop = drops[j];
- fields.emplace_back(" dropped_requests {");
- // category
- AddStringField(
- " category",
- envoy_config_endpoint_v3_ClusterStats_DroppedRequests_category(
- drop),
- &fields);
- // dropped_count
- fields.emplace_back(absl::StrCat(
- " dropped_count: ",
- envoy_config_endpoint_v3_ClusterStats_DroppedRequests_dropped_count(
- drop)));
- fields.emplace_back(" }");
- }
- // load_report_interval
- const auto* load_report_interval =
- envoy_config_endpoint_v3_ClusterStats_load_report_interval(
- cluster_stat);
- if (load_report_interval != nullptr) {
- fields.emplace_back(" load_report_interval {");
- fields.emplace_back(absl::StrCat(
- " seconds: ",
- google_protobuf_Duration_seconds(load_report_interval)));
- fields.emplace_back(
- absl::StrCat(" nanos: ",
- google_protobuf_Duration_nanos(load_report_interval)));
- fields.emplace_back(" }");
- }
- fields.emplace_back("}");
- }
+ const upb_msgdef* msg_type =
+ envoy_service_load_stats_v3_LoadStatsRequest_getmsgdef(symtab);
+ char buf[10240];
+ upb_text_encode(request, msg_type, nullptr, 0, buf, sizeof(buf));
gpr_log(GPR_DEBUG, "[xds_client %p] constructed LRS request: %s", client,
- absl::StrJoin(fields, "\n").c_str());
+ buf);
}
}
} // namespace
-grpc_slice XdsApi::CreateLrsInitialRequest() {
+grpc_slice XdsApi::CreateLrsInitialRequest(
+ const XdsBootstrap::XdsServer& server) {
upb::Arena arena;
// Create a request.
envoy_service_load_stats_v3_LoadStatsRequest* request =
envoy_config_core_v3_Node* node_msg =
envoy_service_load_stats_v3_LoadStatsRequest_mutable_node(request,
arena.ptr());
- PopulateNode(arena.ptr(), bootstrap_, build_version_, user_agent_name_,
- node_msg);
+ PopulateNode(arena.ptr(), node_, server.ShouldUseV3(), build_version_,
+ user_agent_name_, node_msg);
envoy_config_core_v3_Node_add_client_features(
node_msg, upb_strview_makez("envoy.lrs.supports_send_all_clusters"),
arena.ptr());
- MaybeLogLrsRequest(client_, tracer_, request, build_version_);
+ MaybeLogLrsRequest(client_, tracer_, symtab_.ptr(), request);
return SerializeLrsRequest(request, arena.ptr());
}
google_protobuf_Duration_set_seconds(load_report_interval, timespec.tv_sec);
google_protobuf_Duration_set_nanos(load_report_interval, timespec.tv_nsec);
}
- MaybeLogLrsRequest(client_, tracer_, request, build_version_);
+ MaybeLogLrsRequest(client_, tracer_, symtab_.ptr(), request);
return SerializeLrsRequest(request, arena.ptr());
}
#include "absl/types/optional.h"
#include "re2/re2.h"
+#include "upb/def.hpp"
+
#include <grpc/slice_buffer.h>
#include "src/core/ext/filters/client_channel/server_address.h"
namespace grpc_core {
+// TODO(yashykt): Check to see if xDS security is enabled. This will be
+// removed once this feature is fully integration-tested and enabled by
+// default.
+bool XdsSecurityEnabled();
+
class XdsClient;
class XdsApi {
static const char* kCdsTypeUrl;
static const char* kEdsTypeUrl;
+ struct Duration {
+ int64_t seconds = 0;
+ int32_t nanos = 0;
+ bool operator==(const Duration& other) const {
+ return (seconds == other.seconds && nanos == other.nanos);
+ }
+ std::string ToString() const {
+ return absl::StrFormat("Duration seconds: %ld, nanos %d", seconds, nanos);
+ }
+ };
+
// TODO(donnadionne): When we can use absl::variant<>, consider using that
// for: PathMatcher, HeaderMatcher, cluster_name and weighted_clusters
struct Route {
PathMatcherType type;
std::string string_matcher;
std::unique_ptr<RE2> regex_matcher;
+ bool case_sensitive = true;
PathMatcher() = default;
PathMatcher(const PathMatcher& other);
std::string ToString() const;
};
std::vector<ClusterWeight> weighted_clusters;
+ // Storing the timeout duration from route action:
+ // RouteAction.max_stream_duration.grpc_timeout_header_max or
+ // RouteAction.max_stream_duration.max_stream_duration if the former is
+ // not set.
+ absl::optional<Duration> max_stream_duration;
bool operator==(const Route& other) const {
return (matchers == other.matchers &&
cluster_name == other.cluster_name &&
- weighted_clusters == other.weighted_clusters);
+ weighted_clusters == other.weighted_clusters &&
+ max_stream_duration == other.max_stream_duration);
}
std::string ToString() const;
};
}
};
+ struct CertificateProviderInstance {
+ std::string instance_name;
+ std::string certificate_name;
+
+ bool operator==(const CertificateProviderInstance& other) const {
+ return instance_name == other.instance_name &&
+ certificate_name == other.certificate_name;
+ }
+ };
+
struct CombinedCertificateValidationContext {
CertificateValidationContext default_validation_context;
- std::string validation_context_certificate_provider_instance;
+ CertificateProviderInstance
+ validation_context_certificate_provider_instance;
bool operator==(const CombinedCertificateValidationContext& other) const {
return default_validation_context == other.default_validation_context &&
}
};
- std::string tls_certificate_certificate_provider_instance;
+ CertificateProviderInstance tls_certificate_certificate_provider_instance;
CombinedCertificateValidationContext combined_validation_context;
bool operator==(const CommonTlsContext& other) const {
struct LdsUpdate {
// The name to use in the RDS request.
std::string route_config_name;
+ // Storing the Http Connection Manager Common Http Protocol Option
+ // max_stream_duration
+ Duration http_max_stream_duration;
// The RouteConfiguration to use for this listener.
// Present only if it is inlined in the LDS response.
absl::optional<RdsUpdate> rds_update;
bool operator==(const LdsUpdate& other) const {
return route_config_name == other.route_config_name &&
- rds_update == other.rds_update;
+ rds_update == other.rds_update &&
+ http_max_stream_duration == other.http_max_stream_duration;
}
};
std::pair<std::string /*cluster_name*/, std::string /*eds_service_name*/>,
ClusterLoadReport>;
- XdsApi(XdsClient* client, TraceFlag* tracer, const XdsBootstrap* bootstrap);
+ XdsApi(XdsClient* client, TraceFlag* tracer, const XdsBootstrap::Node* node);
// Creates an ADS request.
// Takes ownership of \a error.
- grpc_slice CreateAdsRequest(const std::string& type_url,
+ grpc_slice CreateAdsRequest(const XdsBootstrap::XdsServer& server,
+ const std::string& type_url,
const std::set<absl::string_view>& resource_names,
const std::string& version,
const std::string& nonce, grpc_error* error,
const std::set<absl::string_view>& expected_eds_service_names);
// Creates an initial LRS request.
- grpc_slice CreateLrsInitialRequest();
+ grpc_slice CreateLrsInitialRequest(const XdsBootstrap::XdsServer& server);
// Creates an LRS request sending a client-side load report.
grpc_slice CreateLrsRequest(ClusterLoadReportMap cluster_load_report_map);
private:
XdsClient* client_;
TraceFlag* tracer_;
- const bool use_v3_;
- const XdsBootstrap* bootstrap_; // Do not own.
+ const XdsBootstrap::Node* node_; // Do not own.
+ upb::SymbolTable symtab_;
const std::string build_version_;
const std::string user_agent_name_;
};
#include "absl/strings/str_join.h"
#include "absl/strings/string_view.h"
+#include "src/core/ext/xds/certificate_provider_registry.h"
+#include "src/core/ext/xds/xds_api.h"
#include "src/core/lib/gpr/env.h"
#include "src/core/lib/gpr/string.h"
#include "src/core/lib/iomgr/load_file.h"
+#include "src/core/lib/security/credentials/credentials.h"
+#include "src/core/lib/security/credentials/fake/fake_credentials.h"
#include "src/core/lib/slice/slice_internal.h"
namespace grpc_core {
+//
+// XdsChannelCredsRegistry
+//
+
+bool XdsChannelCredsRegistry::IsSupported(const std::string& creds_type) {
+ return creds_type == "google_default" || creds_type == "insecure" ||
+ creds_type == "fake";
+}
+
+bool XdsChannelCredsRegistry::IsValidConfig(const std::string& creds_type,
+ const Json& config) {
+ // Currently, none of the creds types actually take a config, but we
+ // ignore whatever might be specified in the bootstrap file for
+ // forward compatibility reasons.
+ return true;
+}
+
+RefCountedPtr<grpc_channel_credentials>
+XdsChannelCredsRegistry::MakeChannelCreds(const std::string& creds_type,
+ const Json& config) {
+ if (creds_type == "google_default") {
+ return grpc_google_default_credentials_create(nullptr);
+ } else if (creds_type == "insecure") {
+ return grpc_insecure_credentials_create();
+ } else if (creds_type == "fake") {
+ return grpc_fake_transport_security_credentials_create();
+ }
+ return nullptr;
+}
+
+//
+// XdsBootstrap::XdsServer
+//
+
bool XdsBootstrap::XdsServer::ShouldUseV3() const {
return server_features.find("xds_v3") != server_features.end();
}
+//
+// XdsBootstrap
+//
+
namespace {
std::string BootstrapString(const XdsBootstrap& bootstrap) {
bootstrap.node()->locality_region, bootstrap.node()->locality_zone,
bootstrap.node()->locality_subzone, bootstrap.node()->metadata.Dump()));
}
- parts.push_back(
- absl::StrFormat("servers=[\n"
- " {\n"
- " uri=\"%s\",\n"
- " creds=[\n",
- bootstrap.server().server_uri));
- for (const auto& creds : bootstrap.server().channel_creds) {
- parts.push_back(absl::StrFormat(" {type=\"%s\", config=%s},\n",
- creds.type, creds.config.Dump()));
- }
- parts.push_back(" ],\n");
+ parts.push_back(absl::StrFormat(
+ "servers=[\n"
+ " {\n"
+ " uri=\"%s\",\n"
+ " creds_type=%s,\n",
+ bootstrap.server().server_uri, bootstrap.server().channel_creds_type));
+ if (bootstrap.server().channel_creds_config.type() != Json::Type::JSON_NULL) {
+ parts.push_back(
+ absl::StrFormat(" creds_config=%s,",
+ bootstrap.server().channel_creds_config.Dump()));
+ }
if (!bootstrap.server().server_features.empty()) {
parts.push_back(absl::StrCat(
" server_features=[",
absl::StrJoin(bootstrap.server().server_features, ", "), "],\n"));
}
- parts.push_back(" }\n]");
+ parts.push_back(" }\n],\n");
+ parts.push_back("certificate_providers={\n");
+ for (const auto& entry : bootstrap.certificate_providers()) {
+ parts.push_back(
+ absl::StrFormat(" %s={\n"
+ " plugin_name=%s\n"
+ " config=%s\n"
+ " },\n",
+ entry.first, entry.second.plugin_name,
+ entry.second.config->ToString()));
+ }
+ parts.push_back("}");
return absl::StrJoin(parts, "");
}
if (parse_error != GRPC_ERROR_NONE) error_list.push_back(parse_error);
}
}
+ if (XdsSecurityEnabled()) {
+ it = json.mutable_object()->find("certificate_providers");
+ if (it != json.mutable_object()->end()) {
+ if (it->second.type() != Json::Type::OBJECT) {
+ error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
+ "\"certificate_providers\" field is not an object"));
+ } else {
+ grpc_error* parse_error = ParseCertificateProviders(&it->second);
+ if (parse_error != GRPC_ERROR_NONE) error_list.push_back(parse_error);
+ }
+ }
+ }
*error = GRPC_ERROR_CREATE_FROM_VECTOR("errors parsing xds bootstrap file",
&error_list);
}
server.server_uri = std::move(*it->second.mutable_string_value());
}
it = json->mutable_object()->find("channel_creds");
- if (it != json->mutable_object()->end()) {
- if (it->second.type() != Json::Type::ARRAY) {
- error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "\"channel_creds\" field is not an array"));
- } else {
- grpc_error* parse_error = ParseChannelCredsArray(&it->second, &server);
- if (parse_error != GRPC_ERROR_NONE) error_list.push_back(parse_error);
- }
+ if (it == json->mutable_object()->end()) {
+ error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
+ "\"channel_creds\" field not present"));
+ } else if (it->second.type() != Json::Type::ARRAY) {
+ error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
+ "\"channel_creds\" field is not an array"));
+ } else {
+ grpc_error* parse_error = ParseChannelCredsArray(&it->second, &server);
+ if (parse_error != GRPC_ERROR_NONE) error_list.push_back(parse_error);
}
it = json->mutable_object()->find("server_features");
if (it != json->mutable_object()->end()) {
if (parse_error != GRPC_ERROR_NONE) error_list.push_back(parse_error);
}
}
+ if (server->channel_creds_type.empty()) {
+ error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
+ "no known creds type found in \"channel_creds\""));
+ }
return GRPC_ERROR_CREATE_FROM_VECTOR("errors parsing \"channel_creds\" array",
&error_list);
}
grpc_error* XdsBootstrap::ParseChannelCreds(Json* json, size_t idx,
XdsServer* server) {
std::vector<grpc_error*> error_list;
- ChannelCreds channel_creds;
+ std::string type;
auto it = json->mutable_object()->find("type");
if (it == json->mutable_object()->end()) {
error_list.push_back(
error_list.push_back(
GRPC_ERROR_CREATE_FROM_STATIC_STRING("\"type\" field is not a string"));
} else {
- channel_creds.type = std::move(*it->second.mutable_string_value());
+ type = std::move(*it->second.mutable_string_value());
}
+ Json config;
it = json->mutable_object()->find("config");
if (it != json->mutable_object()->end()) {
if (it->second.type() != Json::Type::OBJECT) {
error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
"\"config\" field is not an object"));
} else {
- channel_creds.config = std::move(it->second);
+ config = std::move(it->second);
}
}
- if (!channel_creds.type.empty()) {
- server->channel_creds.emplace_back(std::move(channel_creds));
+ // Select the first channel creds type that we support.
+ if (server->channel_creds_type.empty() &&
+ XdsChannelCredsRegistry::IsSupported(type)) {
+ if (!XdsChannelCredsRegistry::IsValidConfig(type, config)) {
+ error_list.push_back(GRPC_ERROR_CREATE_FROM_COPIED_STRING(
+ absl::StrCat("invalid config for channel creds type \"", type, "\"")
+ .c_str()));
+ }
+ server->channel_creds_type = std::move(type);
+ server->channel_creds_config = std::move(config);
}
// Can't use GRPC_ERROR_CREATE_FROM_VECTOR() here, because the error
// string is not static in this case.
&error_list);
}
+grpc_error* XdsBootstrap::ParseCertificateProviders(Json* json) {
+ std::vector<grpc_error*> error_list;
+ for (auto& certificate_provider : *(json->mutable_object())) {
+ if (certificate_provider.second.type() != Json::Type::OBJECT) {
+ error_list.push_back(GRPC_ERROR_CREATE_FROM_COPIED_STRING(
+ absl::StrCat("element \"", certificate_provider.first,
+ "\" is not an object")
+ .c_str()));
+ } else {
+ grpc_error* parse_error = ParseCertificateProvider(
+ certificate_provider.first, &certificate_provider.second);
+ if (parse_error != GRPC_ERROR_NONE) error_list.push_back(parse_error);
+ }
+ }
+ return GRPC_ERROR_CREATE_FROM_VECTOR(
+ "errors parsing \"certificate_providers\" object", &error_list);
+}
+
+grpc_error* XdsBootstrap::ParseCertificateProvider(
+ const std::string& instance_name, Json* certificate_provider_json) {
+ std::vector<grpc_error*> error_list;
+ auto it = certificate_provider_json->mutable_object()->find("plugin_name");
+ if (it == certificate_provider_json->mutable_object()->end()) {
+ error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
+ "\"plugin_name\" field not present"));
+ } else if (it->second.type() != Json::Type::STRING) {
+ error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
+ "\"plugin_name\" field is not a string"));
+ } else {
+ std::string plugin_name = std::move(*(it->second.mutable_string_value()));
+ CertificateProviderFactory* factory =
+ CertificateProviderRegistry::LookupCertificateProviderFactory(
+ plugin_name);
+ if (factory != nullptr) {
+ RefCountedPtr<CertificateProviderFactory::Config> config;
+ it = certificate_provider_json->mutable_object()->find("config");
+ if (it != certificate_provider_json->mutable_object()->end()) {
+ if (it->second.type() != Json::Type::OBJECT) {
+ error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
+ "\"config\" field is not an object"));
+ } else {
+ grpc_error* parse_error = GRPC_ERROR_NONE;
+ config = factory->CreateCertificateProviderConfig(it->second,
+ &parse_error);
+ if (parse_error != GRPC_ERROR_NONE) error_list.push_back(parse_error);
+ }
+ } else {
+ // "config" is an optional field, so create an empty JSON object.
+ grpc_error* parse_error = GRPC_ERROR_NONE;
+ config = factory->CreateCertificateProviderConfig(Json::Object(),
+ &parse_error);
+ if (parse_error != GRPC_ERROR_NONE) error_list.push_back(parse_error);
+ }
+ certificate_providers_.insert(
+ {instance_name, {std::move(plugin_name), std::move(config)}});
+ }
+ }
+ // Can't use GRPC_ERROR_CREATE_FROM_VECTOR() here, because the error
+ // string is not static in this case.
+ if (error_list.empty()) return GRPC_ERROR_NONE;
+ grpc_error* error = GRPC_ERROR_CREATE_FROM_COPIED_STRING(
+ absl::StrCat("errors parsing element \"", instance_name, "\"").c_str());
+ for (size_t i = 0; i < error_list.size(); ++i) {
+ error = grpc_error_add_child(error, error_list[i]);
+ }
+ return error;
+}
+
} // namespace grpc_core
#include "absl/container/inlined_vector.h"
-#include <grpc/impl/codegen/slice.h>
+#include <grpc/slice.h>
+#include "src/core/ext/xds/certificate_provider_store.h"
#include "src/core/lib/gprpp/map.h"
#include "src/core/lib/gprpp/memory.h"
+#include "src/core/lib/gprpp/ref_counted_ptr.h"
#include "src/core/lib/iomgr/error.h"
#include "src/core/lib/json/json.h"
+#include "src/core/lib/security/credentials/credentials.h"
namespace grpc_core {
class XdsClient;
+class XdsChannelCredsRegistry {
+ public:
+ static bool IsSupported(const std::string& creds_type);
+ static bool IsValidConfig(const std::string& creds_type, const Json& config);
+ static RefCountedPtr<grpc_channel_credentials> MakeChannelCreds(
+ const std::string& creds_type, const Json& config);
+};
+
class XdsBootstrap {
public:
struct Node {
Json metadata;
};
- struct ChannelCreds {
- std::string type;
- Json config;
- };
-
struct XdsServer {
std::string server_uri;
- absl::InlinedVector<ChannelCreds, 1> channel_creds;
+ std::string channel_creds_type;
+ Json channel_creds_config;
std::set<std::string> server_features;
bool ShouldUseV3() const;
const XdsServer& server() const { return servers_[0]; }
const Node* node() const { return node_.get(); }
+ const CertificateProviderStore::PluginDefinitionMap& certificate_providers()
+ const {
+ return certificate_providers_;
+ }
+
private:
grpc_error* ParseXdsServerList(Json* json);
grpc_error* ParseXdsServer(Json* json, size_t idx);
grpc_error* ParseServerFeaturesArray(Json* json, XdsServer* server);
grpc_error* ParseNode(Json* json);
grpc_error* ParseLocality(Json* json);
+ grpc_error* ParseCertificateProviders(Json* json);
+ grpc_error* ParseCertificateProvider(const std::string& instance_name,
+ Json* certificate_provider_json);
absl::InlinedVector<XdsServer, 1> servers_;
std::unique_ptr<Node> node_;
+ CertificateProviderStore::PluginDefinitionMap certificate_providers_;
};
} // namespace grpc_core
--- /dev/null
+//
+//
+// Copyright 2020 gRPC authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+//
+
+#include <grpc/support/port_platform.h>
+
+#include "absl/functional/bind_front.h"
+#include "absl/strings/str_cat.h"
+
+#include "src/core/ext/xds/xds_certificate_provider.h"
+
+namespace grpc_core {
+
+namespace {
+
+class RootCertificatesWatcher
+ : public grpc_tls_certificate_distributor::TlsCertificatesWatcherInterface {
+ public:
+ // Takes a ref to \a parent instead of a raw pointer since the watcher is
+ // owned by the root certificate distributor and not by \a parent. Note that
+ // presently, the watcher is immediately deleted when
+ // CancelTlsCertificatesWatch() is called, but that can potentially change in
+ // the future.
+ explicit RootCertificatesWatcher(
+ RefCountedPtr<grpc_tls_certificate_distributor> parent)
+ : parent_(std::move(parent)) {}
+
+ void OnCertificatesChanged(absl::optional<absl::string_view> root_certs,
+ absl::optional<PemKeyCertPairList>
+ /* key_cert_pairs */) override {
+ if (root_certs.has_value()) {
+ parent_->SetKeyMaterials("", std::string(root_certs.value()),
+ absl::nullopt);
+ }
+ }
+
+ void OnError(grpc_error* root_cert_error,
+ grpc_error* identity_cert_error) override {
+ if (root_cert_error != GRPC_ERROR_NONE) {
+ parent_->SetErrorForCert("", root_cert_error /* pass the ref */,
+ absl::nullopt);
+ }
+ GRPC_ERROR_UNREF(identity_cert_error);
+ }
+
+ private:
+ RefCountedPtr<grpc_tls_certificate_distributor> parent_;
+};
+
+class IdentityCertificatesWatcher
+ : public grpc_tls_certificate_distributor::TlsCertificatesWatcherInterface {
+ public:
+ // Takes a ref to \a parent instead of a raw pointer since the watcher is
+ // owned by the root certificate distributor and not by \a parent. Note that
+ // presently, the watcher is immediately deleted when
+ // CancelTlsCertificatesWatch() is called, but that can potentially change in
+ // the future.
+ explicit IdentityCertificatesWatcher(
+ RefCountedPtr<grpc_tls_certificate_distributor> parent)
+ : parent_(std::move(parent)) {}
+
+ void OnCertificatesChanged(
+ absl::optional<absl::string_view> /* root_certs */,
+ absl::optional<PemKeyCertPairList> key_cert_pairs) override {
+ if (key_cert_pairs.has_value()) {
+ parent_->SetKeyMaterials("", absl::nullopt, key_cert_pairs);
+ }
+ }
+
+ void OnError(grpc_error* root_cert_error,
+ grpc_error* identity_cert_error) override {
+ if (identity_cert_error != GRPC_ERROR_NONE) {
+ parent_->SetErrorForCert("", absl::nullopt,
+ identity_cert_error /* pass the ref */);
+ }
+ GRPC_ERROR_UNREF(root_cert_error);
+ }
+
+ private:
+ RefCountedPtr<grpc_tls_certificate_distributor> parent_;
+};
+
+} // namespace
+
+XdsCertificateProvider::XdsCertificateProvider(
+ absl::string_view root_cert_name,
+ RefCountedPtr<grpc_tls_certificate_distributor> root_cert_distributor,
+ absl::string_view identity_cert_name,
+ RefCountedPtr<grpc_tls_certificate_distributor> identity_cert_distributor)
+ : root_cert_name_(root_cert_name),
+ identity_cert_name_(identity_cert_name),
+ root_cert_distributor_(std::move(root_cert_distributor)),
+ identity_cert_distributor_(std::move(identity_cert_distributor)),
+ distributor_(MakeRefCounted<grpc_tls_certificate_distributor>()) {
+ distributor_->SetWatchStatusCallback(
+ absl::bind_front(&XdsCertificateProvider::WatchStatusCallback, this));
+}
+
+void XdsCertificateProvider::UpdateRootCertNameAndDistributor(
+ absl::string_view root_cert_name,
+ RefCountedPtr<grpc_tls_certificate_distributor> root_cert_distributor) {
+ MutexLock lock(&mu_);
+ root_cert_name_ = std::string(root_cert_name);
+ if (watching_root_certs_) {
+ // The root certificates are being watched. Swap out the watcher.
+ if (root_cert_distributor_ != nullptr) {
+ root_cert_distributor_->CancelTlsCertificatesWatch(root_cert_watcher_);
+ }
+ if (root_cert_distributor != nullptr) {
+ UpdateRootCertWatcher(root_cert_distributor.get());
+ } else {
+ root_cert_watcher_ = nullptr;
+ distributor_->SetErrorForCert(
+ "",
+ GRPC_ERROR_CREATE_FROM_STATIC_STRING(
+ "No certificate provider available for root certificates"),
+ absl::nullopt);
+ }
+ }
+ // Swap out the root certificate distributor
+ root_cert_distributor_ = std::move(root_cert_distributor);
+}
+
+void XdsCertificateProvider::UpdateIdentityCertNameAndDistributor(
+ absl::string_view identity_cert_name,
+ RefCountedPtr<grpc_tls_certificate_distributor> identity_cert_distributor) {
+ MutexLock lock(&mu_);
+ identity_cert_name_ = std::string(identity_cert_name);
+ if (watching_identity_certs_) {
+ // The identity certificates are being watched. Swap out the watcher.
+ if (identity_cert_distributor_ != nullptr) {
+ identity_cert_distributor_->CancelTlsCertificatesWatch(
+ identity_cert_watcher_);
+ }
+ if (identity_cert_distributor != nullptr) {
+ UpdateIdentityCertWatcher(identity_cert_distributor.get());
+ } else {
+ identity_cert_watcher_ = nullptr;
+ distributor_->SetErrorForCert(
+ "", absl::nullopt,
+ GRPC_ERROR_CREATE_FROM_STATIC_STRING(
+ "No certificate provider available for identity certificates"));
+ }
+ }
+ // Swap out the identity certificate distributor
+ identity_cert_distributor_ = std::move(identity_cert_distributor);
+}
+
+void XdsCertificateProvider::WatchStatusCallback(std::string cert_name,
+ bool root_being_watched,
+ bool identity_being_watched) {
+ // We aren't specially handling the case where root_cert_distributor is same
+ // as identity_cert_distributor. Always using two separate watchers
+ // irrespective of the fact results in a straightforward design, and using a
+ // single watcher does not seem to provide any benefit other than cutting down
+ // on the number of callbacks.
+ MutexLock lock(&mu_);
+ if (!cert_name.empty()) {
+ grpc_error* error = GRPC_ERROR_CREATE_FROM_COPIED_STRING(
+ absl::StrCat("Illegal certificate name: \'", cert_name,
+ "\'. Should be empty.")
+ .c_str());
+ distributor_->SetErrorForCert(cert_name, GRPC_ERROR_REF(error),
+ GRPC_ERROR_REF(error));
+ GRPC_ERROR_UNREF(error);
+ return;
+ }
+ if (root_being_watched && !watching_root_certs_) {
+ // We need to start watching root certs.
+ watching_root_certs_ = true;
+ if (root_cert_distributor_ == nullptr) {
+ distributor_->SetErrorForCert(
+ "",
+ GRPC_ERROR_CREATE_FROM_STATIC_STRING(
+ "No certificate provider available for root certificates"),
+ absl::nullopt);
+ } else {
+ UpdateRootCertWatcher(root_cert_distributor_.get());
+ }
+ } else if (!root_being_watched && watching_root_certs_) {
+ // We need to cancel root certs watch.
+ watching_root_certs_ = false;
+ if (root_cert_distributor_ != nullptr) {
+ root_cert_distributor_->CancelTlsCertificatesWatch(root_cert_watcher_);
+ root_cert_watcher_ = nullptr;
+ }
+ GPR_ASSERT(root_cert_watcher_ == nullptr);
+ }
+ if (identity_being_watched && !watching_identity_certs_) {
+ watching_identity_certs_ = true;
+ if (identity_cert_distributor_ == nullptr) {
+ distributor_->SetErrorForCert(
+ "", absl::nullopt,
+ GRPC_ERROR_CREATE_FROM_STATIC_STRING(
+ "No certificate provider available for identity certificates"));
+ } else {
+ UpdateIdentityCertWatcher(identity_cert_distributor_.get());
+ }
+ } else if (!identity_being_watched && watching_identity_certs_) {
+ watching_identity_certs_ = false;
+ if (identity_cert_distributor_ != nullptr) {
+ identity_cert_distributor_->CancelTlsCertificatesWatch(
+ identity_cert_watcher_);
+ identity_cert_watcher_ = nullptr;
+ }
+ GPR_ASSERT(identity_cert_watcher_ == nullptr);
+ }
+}
+
+void XdsCertificateProvider::UpdateRootCertWatcher(
+ grpc_tls_certificate_distributor* root_cert_distributor) {
+ auto watcher = absl::make_unique<RootCertificatesWatcher>(distributor());
+ root_cert_watcher_ = watcher.get();
+ root_cert_distributor->WatchTlsCertificates(std::move(watcher),
+ root_cert_name_, absl::nullopt);
+}
+
+void XdsCertificateProvider::UpdateIdentityCertWatcher(
+ grpc_tls_certificate_distributor* identity_cert_distributor) {
+ auto watcher = absl::make_unique<IdentityCertificatesWatcher>(distributor());
+ identity_cert_watcher_ = watcher.get();
+ identity_cert_distributor->WatchTlsCertificates(
+ std::move(watcher), absl::nullopt, identity_cert_name_);
+}
+
+} // namespace grpc_core
--- /dev/null
+//
+//
+// Copyright 2020 gRPC authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+//
+
+#ifndef GRPC_CORE_EXT_XDS_XDS_CERTIFICATE_PROVIDER_H
+#define GRPC_CORE_EXT_XDS_XDS_CERTIFICATE_PROVIDER_H
+
+#include <grpc/support/port_platform.h>
+
+#include "src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h"
+
+namespace grpc_core {
+
+class XdsCertificateProvider : public grpc_tls_certificate_provider {
+ public:
+ XdsCertificateProvider(
+ absl::string_view root_cert_name,
+ RefCountedPtr<grpc_tls_certificate_distributor> root_cert_distributor,
+ absl::string_view identity_cert_name,
+ RefCountedPtr<grpc_tls_certificate_distributor>
+ identity_cert_distributor);
+
+ void UpdateRootCertNameAndDistributor(
+ absl::string_view root_cert_name,
+ RefCountedPtr<grpc_tls_certificate_distributor> root_cert_distributor);
+ void UpdateIdentityCertNameAndDistributor(
+ absl::string_view identity_cert_name,
+ RefCountedPtr<grpc_tls_certificate_distributor>
+ identity_cert_distributor);
+
+ grpc_core::RefCountedPtr<grpc_tls_certificate_distributor> distributor()
+ const override {
+ return distributor_;
+ }
+
+ private:
+ void WatchStatusCallback(std::string cert_name, bool root_being_watched,
+ bool identity_being_watched);
+ void UpdateRootCertWatcher(
+ grpc_tls_certificate_distributor* root_cert_distributor);
+ void UpdateIdentityCertWatcher(
+ grpc_tls_certificate_distributor* identity_cert_distributor);
+
+ Mutex mu_;
+ bool watching_root_certs_ = false;
+ bool watching_identity_certs_ = false;
+ std::string root_cert_name_;
+ std::string identity_cert_name_;
+ RefCountedPtr<grpc_tls_certificate_distributor> root_cert_distributor_;
+ RefCountedPtr<grpc_tls_certificate_distributor> identity_cert_distributor_;
+ RefCountedPtr<grpc_tls_certificate_distributor> distributor_;
+ grpc_tls_certificate_distributor::TlsCertificatesWatcherInterface*
+ root_cert_watcher_ = nullptr;
+ grpc_tls_certificate_distributor::TlsCertificatesWatcherInterface*
+ identity_cert_watcher_ = nullptr;
+};
+
+} // namespace grpc_core
+
+#endif // GRPC_CORE_EXT_XDS_XDS_CERTIFICATE_PROVIDER_H
#include "src/core/lib/iomgr/sockaddr.h"
#include "src/core/lib/iomgr/sockaddr_utils.h"
#include "src/core/lib/iomgr/timer.h"
-#include "src/core/lib/security/credentials/credentials.h"
-#include "src/core/lib/security/credentials/fake/fake_credentials.h"
#include "src/core/lib/slice/slice_internal.h"
#include "src/core/lib/slice/slice_string_helpers.h"
#include "src/core/lib/surface/call.h"
private:
class ResourceState : public InternallyRefCounted<ResourceState> {
public:
- ResourceState(const std::string& type_url, const std::string& name)
- : type_url_(type_url), name_(name) {
+ ResourceState(const std::string& type_url, const std::string& name,
+ bool sent_initial_request)
+ : type_url_(type_url),
+ name_(name),
+ sent_initial_request_(sent_initial_request) {
GRPC_CLOSURE_INIT(&timer_callback_, OnTimer, this,
grpc_schedule_on_exec_ctx);
}
}
void Start(RefCountedPtr<AdsCallState> ads_calld) {
- if (sent_) return;
- sent_ = true;
+ if (sent_initial_request_) return;
+ sent_initial_request_ = true;
ads_calld_ = std::move(ads_calld);
Ref(DEBUG_LOCATION, "timer").release();
timer_pending_ = true;
const std::string name_;
RefCountedPtr<AdsCallState> ads_calld_;
- bool sent_ = false;
+ bool sent_initial_request_;
bool timer_pending_ = false;
grpc_timer timer_;
grpc_closure timer_callback_;
struct ResourceTypeState {
~ResourceTypeState() { GRPC_ERROR_UNREF(error); }
- // Version, nonce, and error for this resource type.
- std::string version;
+ // Nonce and error for this resource type.
std::string nonce;
grpc_error* error = GRPC_ERROR_NONE;
void ScheduleNextReportLocked();
static void OnNextReportTimer(void* arg, grpc_error* error);
bool OnNextReportTimerLocked(grpc_error* error);
- void SendReportLocked();
+ bool SendReportLocked();
static void OnReportDone(void* arg, grpc_error* error);
bool OnReportDoneLocked(grpc_error* error);
// XdsClient::ChannelState
//
+namespace {
+
+grpc_channel* CreateXdsChannel(const XdsBootstrap::XdsServer& server) {
+ // Build channel args.
+ absl::InlinedVector<grpc_arg, 2> args_to_add = {
+ grpc_channel_arg_integer_create(
+ const_cast<char*>(GRPC_ARG_KEEPALIVE_TIME_MS),
+ 5 * 60 * GPR_MS_PER_SEC),
+ grpc_channel_arg_integer_create(
+ const_cast<char*>(GRPC_ARG_CHANNELZ_IS_INTERNAL_CHANNEL), 1),
+ };
+ grpc_channel_args* new_args = grpc_channel_args_copy_and_add(
+ g_channel_args, args_to_add.data(), args_to_add.size());
+ // Create channel creds.
+ RefCountedPtr<grpc_channel_credentials> channel_creds =
+ XdsChannelCredsRegistry::MakeChannelCreds(server.channel_creds_type,
+ server.channel_creds_config);
+ // Create channel.
+ grpc_channel* channel = grpc_secure_channel_create(
+ channel_creds.get(), server.server_uri.c_str(), new_args, nullptr);
+ grpc_channel_args_destroy(new_args);
+ return channel;
+}
+
+} // namespace
+
XdsClient::ChannelState::ChannelState(WeakRefCountedPtr<XdsClient> xds_client,
- grpc_channel* channel)
- : InternallyRefCounted<ChannelState>(&grpc_xds_client_trace),
+ const XdsBootstrap::XdsServer& server)
+ : InternallyRefCounted<ChannelState>(
+ GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace) ? "ChannelState"
+ : nullptr),
xds_client_(std::move(xds_client)),
- channel_(channel) {
+ server_(server) {
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
+ gpr_log(GPR_INFO, "[xds_client %p] creating channel to %s",
+ xds_client_.get(), server.server_uri.c_str());
+ }
+ channel_ = CreateXdsChannel(server);
GPR_ASSERT(channel_ != nullptr);
StartConnectivityWatchLocked();
}
XdsClient::ChannelState::AdsCallState::AdsCallState(
RefCountedPtr<RetryableCall<AdsCallState>> parent)
- : InternallyRefCounted<AdsCallState>(&grpc_xds_client_trace),
+ : InternallyRefCounted<AdsCallState>(
+ GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace) ? "AdsCallState"
+ : nullptr),
parent_(std::move(parent)) {
// Init the ADS call. Note that the call will progress every time there's
// activity in xds_client()->interested_parties_, which is comprised of
GPR_ASSERT(xds_client() != nullptr);
// Create a call with the specified method name.
const auto& method =
- xds_client()->bootstrap_->server().ShouldUseV3()
+ chand()->server_.ShouldUseV3()
? GRPC_MDSTR_SLASH_ENVOY_DOT_SERVICE_DOT_DISCOVERY_DOT_V3_DOT_AGGREGATEDDISCOVERYSERVICE_SLASH_STREAMAGGREGATEDRESOURCES
: GRPC_MDSTR_SLASH_ENVOY_DOT_SERVICE_DOT_DISCOVERY_DOT_V2_DOT_AGGREGATEDDISCOVERYSERVICE_SLASH_STREAMAGGREGATEDRESOURCES;
call_ = grpc_channel_create_pollset_set_call(
std::set<absl::string_view> resource_names =
ResourceNamesForRequest(type_url);
request_payload_slice = xds_client()->api_.CreateAdsRequest(
- type_url, resource_names, state.version, state.nonce,
+ chand()->server_, type_url, resource_names,
+ xds_client()->resource_version_map_[type_url], state.nonce,
GRPC_ERROR_REF(state.error), !sent_initial_message_);
if (type_url != XdsApi::kLdsTypeUrl && type_url != XdsApi::kRdsTypeUrl &&
type_url != XdsApi::kCdsTypeUrl && type_url != XdsApi::kEdsTypeUrl) {
gpr_log(GPR_INFO,
"[xds_client %p] sending ADS request: type=%s version=%s nonce=%s "
"error=%s resources=%s",
- xds_client(), type_url.c_str(), state.version.c_str(),
+ xds_client(), type_url.c_str(),
+ xds_client()->resource_version_map_[type_url].c_str(),
state.nonce.c_str(), grpc_error_string(state.error),
absl::StrJoin(resource_names, " ").c_str());
}
const std::string& type_url, const std::string& name) {
auto& state = state_map_[type_url].subscribed_resources[name];
if (state == nullptr) {
- state = MakeOrphanable<ResourceState>(type_url, name);
+ state = MakeOrphanable<ResourceState>(
+ type_url, name, !xds_client()->resource_version_map_[type_url].empty());
SendMessageLocked(type_url);
}
}
} else if (result.type_url == XdsApi::kEdsTypeUrl) {
AcceptEdsUpdate(std::move(result.eds_update_map));
}
- state.version = std::move(result.version);
+ xds_client()->resource_version_map_[result.type_url] =
+ std::move(result.version);
// ACK the update.
SendMessageLocked(result.type_url);
// Start load reporting if needed.
GRPC_ERROR_UNREF(error);
return true;
}
- SendReportLocked();
- return false;
+ return SendReportLocked();
}
namespace {
} // namespace
-void XdsClient::ChannelState::LrsCallState::Reporter::SendReportLocked() {
+bool XdsClient::ChannelState::LrsCallState::Reporter::SendReportLocked() {
// Construct snapshot from all reported stats.
XdsApi::ClusterLoadReportMap snapshot =
xds_client()->BuildLoadReportSnapshotLocked(parent_->send_all_clusters_,
const bool old_val = last_report_counters_were_zero_;
last_report_counters_were_zero_ = LoadReportCountersAreZero(snapshot);
if (old_val && last_report_counters_were_zero_) {
+ if (xds_client()->load_report_map_.empty()) {
+ parent_->chand()->StopLrsCall();
+ return true;
+ }
ScheduleNextReportLocked();
- return;
+ return false;
}
// Create a request that contains the snapshot.
grpc_slice request_payload_slice =
xds_client(), this, call_error);
GPR_ASSERT(GRPC_CALL_OK == call_error);
}
+ return false;
}
void XdsClient::ChannelState::LrsCallState::Reporter::OnReportDone(
XdsClient::ChannelState::LrsCallState::LrsCallState(
RefCountedPtr<RetryableCall<LrsCallState>> parent)
- : InternallyRefCounted<LrsCallState>(&grpc_xds_client_trace),
+ : InternallyRefCounted<LrsCallState>(
+ GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace) ? "LrsCallState"
+ : nullptr),
parent_(std::move(parent)) {
// Init the LRS call. Note that the call will progress every time there's
// activity in xds_client()->interested_parties_, which is comprised of
// the polling entities from client_channel.
GPR_ASSERT(xds_client() != nullptr);
const auto& method =
- xds_client()->bootstrap_->server().ShouldUseV3()
+ chand()->server_.ShouldUseV3()
? GRPC_MDSTR_SLASH_ENVOY_DOT_SERVICE_DOT_LOAD_STATS_DOT_V3_DOT_LOADREPORTINGSERVICE_SLASH_STREAMLOADSTATS
: GRPC_MDSTR_SLASH_ENVOY_DOT_SERVICE_DOT_LOAD_STATS_DOT_V2_DOT_LOADREPORTINGSERVICE_SLASH_STREAMLOADSTATS;
call_ = grpc_channel_create_pollset_set_call(
GPR_ASSERT(call_ != nullptr);
// Init the request payload.
grpc_slice request_payload_slice =
- xds_client()->api_.CreateLrsInitialRequest();
+ xds_client()->api_.CreateLrsInitialRequest(chand()->server_);
send_message_payload_ =
grpc_raw_byte_buffer_create(&request_payload_slice, 1);
grpc_slice_unref_internal(request_payload_slice);
{15000, 0, INT_MAX});
}
-grpc_channel* CreateXdsChannel(const XdsBootstrap& bootstrap,
- grpc_error** error) {
- // Build channel args.
- absl::InlinedVector<grpc_arg, 2> args_to_add = {
- grpc_channel_arg_integer_create(
- const_cast<char*>(GRPC_ARG_KEEPALIVE_TIME_MS),
- 5 * 60 * GPR_MS_PER_SEC),
- grpc_channel_arg_integer_create(
- const_cast<char*>(GRPC_ARG_CHANNELZ_IS_INTERNAL_CHANNEL), 1),
- };
- grpc_channel_args* new_args = grpc_channel_args_copy_and_add(
- g_channel_args, args_to_add.data(), args_to_add.size());
- // Find credentials and create channel.
- RefCountedPtr<grpc_channel_credentials> creds;
- for (const auto& channel_creds : bootstrap.server().channel_creds) {
- if (channel_creds.type == "google_default") {
- creds.reset(grpc_google_default_credentials_create(nullptr));
- break;
- }
- if (channel_creds.type == "insecure") {
- grpc_channel* channel = grpc_insecure_channel_create(
- bootstrap.server().server_uri.c_str(), new_args, nullptr);
- grpc_channel_args_destroy(new_args);
- return channel;
- }
- if (channel_creds.type == "fake") {
- creds.reset(grpc_fake_transport_security_credentials_create());
- break;
- }
- }
- if (creds == nullptr) {
- *error = GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "no supported credential types found");
- return nullptr;
- }
- grpc_channel* channel = grpc_secure_channel_create(
- creds.get(), bootstrap.server().server_uri.c_str(), new_args, nullptr);
- grpc_channel_args_destroy(new_args);
- return channel;
-}
-
} // namespace
XdsClient::XdsClient(grpc_error** error)
- : DualRefCounted<XdsClient>(&grpc_xds_client_trace),
+ : DualRefCounted<XdsClient>(GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)
+ ? "XdsClient"
+ : nullptr),
request_timeout_(GetRequestTimeout()),
interested_parties_(grpc_pollset_set_create()),
bootstrap_(
XdsBootstrap::ReadFromFile(this, &grpc_xds_client_trace, error)),
- api_(this, &grpc_xds_client_trace, bootstrap_.get()) {
+ api_(this, &grpc_xds_client_trace,
+ bootstrap_ == nullptr ? nullptr : bootstrap_->node()) {
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
gpr_log(GPR_INFO, "[xds_client %p] creating xds client", this);
}
this, grpc_error_string(*error));
return;
}
- if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
- gpr_log(GPR_INFO, "[xds_client %p] creating channel to %s", this,
- bootstrap_->server().server_uri.c_str());
- }
- grpc_channel* channel = CreateXdsChannel(*bootstrap_, error);
- if (*error != GRPC_ERROR_NONE) {
- gpr_log(GPR_ERROR, "[xds_client %p] failed to create xds channel: %s", this,
- grpc_error_string(*error));
- return;
- }
// Create ChannelState object.
chand_ = MakeOrphanable<ChannelState>(
- WeakRef(DEBUG_LOCATION, "XdsClient+ChannelState"), channel);
+ WeakRef(DEBUG_LOCATION, "XdsClient+ChannelState"), bootstrap_->server());
}
XdsClient::~XdsClient() {
auto it = load_report_map_
.emplace(std::make_pair(std::move(key), LoadReportState()))
.first;
- auto cluster_drop_stats = MakeRefCounted<XdsClusterDropStats>(
- Ref(DEBUG_LOCATION, "DropStats"), lrs_server,
- it->first.first /*cluster_name*/, it->first.second /*eds_service_name*/);
- it->second.drop_stats.insert(cluster_drop_stats.get());
+ LoadReportState& load_report_state = it->second;
+ RefCountedPtr<XdsClusterDropStats> cluster_drop_stats;
+ if (load_report_state.drop_stats != nullptr) {
+ cluster_drop_stats = load_report_state.drop_stats->RefIfNonZero();
+ }
+ if (cluster_drop_stats == nullptr) {
+ if (load_report_state.drop_stats != nullptr) {
+ load_report_state.deleted_drop_stats +=
+ load_report_state.drop_stats->GetSnapshotAndReset();
+ }
+ cluster_drop_stats = MakeRefCounted<XdsClusterDropStats>(
+ Ref(DEBUG_LOCATION, "DropStats"), lrs_server,
+ it->first.first /*cluster_name*/,
+ it->first.second /*eds_service_name*/);
+ load_report_state.drop_stats = cluster_drop_stats.get();
+ }
chand_->MaybeStartLrsCall();
return cluster_drop_stats;
}
absl::string_view eds_service_name,
XdsClusterDropStats* cluster_drop_stats) {
MutexLock lock(&mu_);
- auto load_report_it = load_report_map_.find(
- std::make_pair(std::string(cluster_name), std::string(eds_service_name)));
- if (load_report_it == load_report_map_.end()) return;
- LoadReportState& load_report_state = load_report_it->second;
// TODO(roth): When we add support for direct federation, use the
// server name specified in lrs_server.
- auto it = load_report_state.drop_stats.find(cluster_drop_stats);
- if (it != load_report_state.drop_stats.end()) {
- // Record final drop stats in deleted_drop_stats, which will be
+ auto it = load_report_map_.find(
+ std::make_pair(std::string(cluster_name), std::string(eds_service_name)));
+ if (it == load_report_map_.end()) return;
+ LoadReportState& load_report_state = it->second;
+ if (load_report_state.drop_stats == cluster_drop_stats) {
+ // Record final snapshot in deleted_drop_stats, which will be
// added to the next load report.
- auto dropped_requests = cluster_drop_stats->GetSnapshotAndReset();
- load_report_state.deleted_drop_stats += dropped_requests;
- load_report_state.drop_stats.erase(it);
+ load_report_state.deleted_drop_stats +=
+ load_report_state.drop_stats->GetSnapshotAndReset();
+ load_report_state.drop_stats = nullptr;
}
}
auto it = load_report_map_
.emplace(std::make_pair(std::move(key), LoadReportState()))
.first;
- auto cluster_locality_stats = MakeRefCounted<XdsClusterLocalityStats>(
- Ref(DEBUG_LOCATION, "LocalityStats"), lrs_server,
- it->first.first /*cluster_name*/, it->first.second /*eds_service_name*/,
- locality);
- it->second.locality_stats[std::move(locality)].locality_stats.insert(
- cluster_locality_stats.get());
+ LoadReportState& load_report_state = it->second;
+ LoadReportState::LocalityState& locality_state =
+ load_report_state.locality_stats[locality];
+ RefCountedPtr<XdsClusterLocalityStats> cluster_locality_stats;
+ if (locality_state.locality_stats != nullptr) {
+ cluster_locality_stats = locality_state.locality_stats->RefIfNonZero();
+ }
+ if (cluster_locality_stats == nullptr) {
+ if (locality_state.locality_stats != nullptr) {
+ locality_state.deleted_locality_stats +=
+ locality_state.locality_stats->GetSnapshotAndReset();
+ }
+ cluster_locality_stats = MakeRefCounted<XdsClusterLocalityStats>(
+ Ref(DEBUG_LOCATION, "LocalityStats"), lrs_server,
+ it->first.first /*cluster_name*/, it->first.second /*eds_service_name*/,
+ std::move(locality));
+ locality_state.locality_stats = cluster_locality_stats.get();
+ }
chand_->MaybeStartLrsCall();
return cluster_locality_stats;
}
const RefCountedPtr<XdsLocalityName>& locality,
XdsClusterLocalityStats* cluster_locality_stats) {
MutexLock lock(&mu_);
- auto load_report_it = load_report_map_.find(
- std::make_pair(std::string(cluster_name), std::string(eds_service_name)));
- if (load_report_it == load_report_map_.end()) return;
- LoadReportState& load_report_state = load_report_it->second;
// TODO(roth): When we add support for direct federation, use the
// server name specified in lrs_server.
+ auto it = load_report_map_.find(
+ std::make_pair(std::string(cluster_name), std::string(eds_service_name)));
+ if (it == load_report_map_.end()) return;
+ LoadReportState& load_report_state = it->second;
auto locality_it = load_report_state.locality_stats.find(locality);
if (locality_it == load_report_state.locality_stats.end()) return;
- auto& locality_set = locality_it->second.locality_stats;
- auto it = locality_set.find(cluster_locality_stats);
- if (it != locality_set.end()) {
+ LoadReportState::LocalityState& locality_state = locality_it->second;
+ if (locality_state.locality_stats == cluster_locality_stats) {
// Record final snapshot in deleted_locality_stats, which will be
// added to the next load report.
- locality_it->second.deleted_locality_stats.emplace_back(
- cluster_locality_stats->GetSnapshotAndReset());
- locality_set.erase(it);
+ locality_state.deleted_locality_stats +=
+ locality_state.locality_stats->GetSnapshotAndReset();
+ locality_state.locality_stats = nullptr;
}
}
XdsApi::ClusterLoadReportMap XdsClient::BuildLoadReportSnapshotLocked(
bool send_all_clusters, const std::set<std::string>& clusters) {
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
+ gpr_log(GPR_INFO, "[xds_client %p] start building load report", this);
+ }
XdsApi::ClusterLoadReportMap snapshot_map;
for (auto load_report_it = load_report_map_.begin();
load_report_it != load_report_map_.end();) {
XdsApi::ClusterLoadReport snapshot;
// Aggregate drop stats.
snapshot.dropped_requests = std::move(load_report.deleted_drop_stats);
- for (auto& drop_stats : load_report.drop_stats) {
- auto dropped_requests = drop_stats->GetSnapshotAndReset();
- snapshot.dropped_requests += dropped_requests;
+ if (load_report.drop_stats != nullptr) {
+ snapshot.dropped_requests +=
+ load_report.drop_stats->GetSnapshotAndReset();
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
+ gpr_log(GPR_INFO,
+ "[xds_client %p] cluster=%s eds_service_name=%s drop_stats=%p",
+ this, cluster_key.first.c_str(), cluster_key.second.c_str(),
+ load_report.drop_stats);
+ }
}
// Aggregate locality stats.
for (auto it = load_report.locality_stats.begin();
auto& locality_state = it->second;
XdsClusterLocalityStats::Snapshot& locality_snapshot =
snapshot.locality_stats[locality_name];
- for (auto& locality_stats : locality_state.locality_stats) {
- locality_snapshot += locality_stats->GetSnapshotAndReset();
- }
- // Add final snapshots from recently deleted locality stats objects.
- for (auto& deleted_locality_stats :
- locality_state.deleted_locality_stats) {
- locality_snapshot += deleted_locality_stats;
+ locality_snapshot = std::move(locality_state.deleted_locality_stats);
+ if (locality_state.locality_stats != nullptr) {
+ locality_snapshot +=
+ locality_state.locality_stats->GetSnapshotAndReset();
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
+ gpr_log(GPR_INFO,
+ "[xds_client %p] cluster=%s eds_service_name=%s "
+ "locality=%s locality_stats=%p",
+ this, cluster_key.first.c_str(), cluster_key.second.c_str(),
+ locality_name->AsHumanReadableString().c_str(),
+ locality_state.locality_stats);
+ }
}
- locality_state.deleted_locality_stats.clear();
// If the only thing left in this entry was final snapshots from
// deleted locality stats objects, remove the entry.
- if (locality_state.locality_stats.empty()) {
+ if (locality_state.locality_stats == nullptr) {
it = load_report.locality_stats.erase(it);
} else {
++it;
}
}
+ // Compute load report interval.
+ const grpc_millis now = ExecCtx::Get()->Now();
+ snapshot.load_report_interval = now - load_report.last_report_time;
+ load_report.last_report_time = now;
+ // Record snapshot.
if (record_stats) {
- // Compute load report interval.
- const grpc_millis now = ExecCtx::Get()->Now();
- snapshot.load_report_interval = now - load_report.last_report_time;
- load_report.last_report_time = now;
- // Record snapshot.
snapshot_map[cluster_key] = std::move(snapshot);
}
// If the only thing left in this entry was final snapshots from
// deleted stats objects, remove the entry.
- if (load_report.locality_stats.empty() && load_report.drop_stats.empty()) {
+ if (load_report.locality_stats.empty() &&
+ load_report.drop_stats == nullptr) {
load_report_it = load_report_map_.erase(load_report_it);
} else {
++load_report_it;
namespace grpc_core {
-extern TraceFlag xds_client_trace;
+extern TraceFlag grpc_xds_client_trace;
class XdsClient : public DualRefCounted<XdsClient> {
public:
// Callers should not instantiate directly. Use GetOrCreate() instead.
explicit XdsClient(grpc_error** error);
- ~XdsClient();
+ ~XdsClient() override;
grpc_pollset_set* interested_parties() const { return interested_parties_; }
class LrsCallState;
ChannelState(WeakRefCountedPtr<XdsClient> xds_client,
- grpc_channel* channel);
- ~ChannelState();
+ const XdsBootstrap::XdsServer& server);
+ ~ChannelState() override;
void Orphan() override;
// The owning xds client.
WeakRefCountedPtr<XdsClient> xds_client_;
+ const XdsBootstrap::XdsServer& server_;
+
// The channel and its status.
grpc_channel* channel_;
bool shutting_down_ = false;
absl::optional<XdsApi::EdsUpdate> update;
};
- // TODO(roth): Change this to store exactly one instance of
- // XdsClusterDropStats and exactly one instance of
- // XdsClusterLocalityStats per locality. We can return multiple refs
- // to the same object instead of registering multiple objects.
struct LoadReportState {
struct LocalityState {
- std::set<XdsClusterLocalityStats*> locality_stats;
- std::vector<XdsClusterLocalityStats::Snapshot> deleted_locality_stats;
+ XdsClusterLocalityStats* locality_stats = nullptr;
+ XdsClusterLocalityStats::Snapshot deleted_locality_stats;
};
- std::set<XdsClusterDropStats*> drop_stats;
+ XdsClusterDropStats* drop_stats = nullptr;
XdsClusterDropStats::Snapshot deleted_drop_stats;
std::map<RefCountedPtr<XdsLocalityName>, LocalityState,
XdsLocalityName::Less>
LoadReportState>
load_report_map_;
+ // Stores the most recent accepted resource version for each resource type.
+ std::map<std::string /*type*/, std::string /*version*/> resource_version_map_;
+
bool shutting_down_ = false;
};
absl::string_view lrs_server_name,
absl::string_view cluster_name,
absl::string_view eds_service_name)
- : xds_client_(std::move(xds_client)),
+ : RefCounted(GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)
+ ? "XdsClusterDropStats"
+ : nullptr),
+ xds_client_(std::move(xds_client)),
lrs_server_name_(lrs_server_name),
cluster_name_(cluster_name),
- eds_service_name_(eds_service_name) {}
+ eds_service_name_(eds_service_name) {
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
+ gpr_log(GPR_INFO, "[xds_client %p] created drop stats %p for {%s, %s, %s}",
+ xds_client_.get(), this, std::string(lrs_server_name_).c_str(),
+ std::string(cluster_name_).c_str(),
+ std::string(eds_service_name_).c_str());
+ }
+}
XdsClusterDropStats::~XdsClusterDropStats() {
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
+ gpr_log(GPR_INFO,
+ "[xds_client %p] destroying drop stats %p for {%s, %s, %s}",
+ xds_client_.get(), this, std::string(lrs_server_name_).c_str(),
+ std::string(cluster_name_).c_str(),
+ std::string(eds_service_name_).c_str());
+ }
xds_client_->RemoveClusterDropStats(lrs_server_name_, cluster_name_,
eds_service_name_, this);
xds_client_.reset(DEBUG_LOCATION, "DropStats");
RefCountedPtr<XdsClient> xds_client, absl::string_view lrs_server_name,
absl::string_view cluster_name, absl::string_view eds_service_name,
RefCountedPtr<XdsLocalityName> name)
- : xds_client_(std::move(xds_client)),
+ : RefCounted(GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)
+ ? "XdsClusterLocalityStats"
+ : nullptr),
+ xds_client_(std::move(xds_client)),
lrs_server_name_(lrs_server_name),
cluster_name_(cluster_name),
eds_service_name_(eds_service_name),
- name_(std::move(name)) {}
+ name_(std::move(name)) {
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
+ gpr_log(GPR_INFO,
+ "[xds_client %p] created locality stats %p for {%s, %s, %s, %s}",
+ xds_client_.get(), this, std::string(lrs_server_name_).c_str(),
+ std::string(cluster_name_).c_str(),
+ std::string(eds_service_name_).c_str(),
+ name_->AsHumanReadableString().c_str());
+ }
+}
XdsClusterLocalityStats::~XdsClusterLocalityStats() {
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
+ gpr_log(GPR_INFO,
+ "[xds_client %p] destroying locality stats %p for {%s, %s, %s, %s}",
+ xds_client_.get(), this, std::string(lrs_server_name_).c_str(),
+ std::string(cluster_name_).c_str(),
+ std::string(eds_service_name_).c_str(),
+ name_->AsHumanReadableString().c_str());
+ }
xds_client_->RemoveClusterLocalityStats(lrs_server_name_, cluster_name_,
eds_service_name_, name_, this);
xds_client_.reset(DEBUG_LOCATION, "LocalityStats");
absl::string_view lrs_server_name,
absl::string_view cluster_name,
absl::string_view eds_service_name);
- ~XdsClusterDropStats();
+ ~XdsClusterDropStats() override;
// Returns a snapshot of this instance and resets all the counters.
Snapshot GetSnapshotAndReset();
absl::string_view cluster_name,
absl::string_view eds_service_name,
RefCountedPtr<XdsLocalityName> name);
- ~XdsClusterLocalityStats();
+ ~XdsClusterLocalityStats() override;
// Returns a snapshot of this instance and resets all the counters.
Snapshot GetSnapshotAndReset();
for (size_t i = 0; i < a->num_args; i++) {
args[i] = &a->args[i];
}
- if (a->num_args > 1)
+ if (a->num_args > 1) {
qsort(args, a->num_args, sizeof(grpc_arg*), cmp_key_stable);
+ }
grpc_channel_args* b =
static_cast<grpc_channel_args*>(gpr_malloc(sizeof(grpc_channel_args)));
max_event_memory_(max_event_memory),
head_trace_(nullptr),
tail_trace_(nullptr) {
- if (max_event_memory_ == 0)
+ if (max_event_memory_ == 0) {
return; // tracing is disabled if max_event_memory_ == 0
+ }
gpr_mu_init(&tracer_mu_);
time_created_ = grpc_millis_to_timespec(grpc_core::ExecCtx::Get()->Now(),
GPR_CLOCK_REALTIME);
}
ChannelTrace::~ChannelTrace() {
- if (max_event_memory_ == 0)
+ if (max_event_memory_ == 0) {
return; // tracing is disabled if max_event_memory_ == 0
+ }
TraceEvent* it = head_trace_;
while (it != nullptr) {
TraceEvent* to_free = it;
* events per channel trace node. If
* GRPC_ARG_MAX_CHANNEL_TRACE_EVENT_MEMORY_PER_NODE is set, it will override
* this default value. */
-#define GRPC_MAX_CHANNEL_TRACE_EVENT_MEMORY_PER_NODE_DEFAULT 1024 * 4
+#define GRPC_MAX_CHANNEL_TRACE_EVENT_MEMORY_PER_NODE_DEFAULT (1024 * 4)
namespace grpc_core {
BaseNode(EntityType type, std::string name);
public:
- virtual ~BaseNode();
+ ~BaseNode() override;
// All children must implement this function.
virtual Json RenderJson() = 0;
class Handshaker : public RefCounted<Handshaker> {
public:
- virtual ~Handshaker() = default;
+ ~Handshaker() override = default;
virtual void Shutdown(grpc_error* why) = 0;
virtual void DoHandshake(grpc_tcp_server_acceptor* acceptor,
grpc_closure* on_handshake_done,
class HandshakeManager : public RefCounted<HandshakeManager> {
public:
HandshakeManager();
- ~HandshakeManager();
+ ~HandshakeManager() override;
/// Add \a mgr to the server side list of all pending handshake managers, the
/// list starts with \a *head.
grpc_compression_algorithm grpc_compression_algorithm_from_slice(
const grpc_slice& str) {
- if (grpc_slice_eq_static_interned(str, GRPC_MDSTR_IDENTITY))
+ if (grpc_slice_eq_static_interned(str, GRPC_MDSTR_IDENTITY)) {
return GRPC_COMPRESS_NONE;
- if (grpc_slice_eq_static_interned(str, GRPC_MDSTR_DEFLATE))
+ }
+ if (grpc_slice_eq_static_interned(str, GRPC_MDSTR_DEFLATE)) {
return GRPC_COMPRESS_DEFLATE;
- if (grpc_slice_eq_static_interned(str, GRPC_MDSTR_GZIP))
+ }
+ if (grpc_slice_eq_static_interned(str, GRPC_MDSTR_GZIP)) {
return GRPC_COMPRESS_GZIP;
- if (grpc_slice_eq_static_interned(str, GRPC_MDSTR_STREAM_SLASH_GZIP))
+ }
+ if (grpc_slice_eq_static_interned(str, GRPC_MDSTR_STREAM_SLASH_GZIP)) {
return GRPC_COMPRESS_STREAM_GZIP;
+ }
return GRPC_COMPRESS_ALGORITHMS_COUNT;
}
grpc_message_compression_algorithm
grpc_message_compression_algorithm_from_slice(const grpc_slice& str) {
- if (grpc_slice_eq_static_interned(str, GRPC_MDSTR_IDENTITY))
+ if (grpc_slice_eq_static_interned(str, GRPC_MDSTR_IDENTITY)) {
return GRPC_MESSAGE_COMPRESS_NONE;
- if (grpc_slice_eq_static_interned(str, GRPC_MDSTR_DEFLATE))
+ }
+ if (grpc_slice_eq_static_interned(str, GRPC_MDSTR_DEFLATE)) {
return GRPC_MESSAGE_COMPRESS_DEFLATE;
- if (grpc_slice_eq_static_interned(str, GRPC_MDSTR_GZIP))
+ }
+ if (grpc_slice_eq_static_interned(str, GRPC_MDSTR_GZIP)) {
return GRPC_MESSAGE_COMPRESS_GZIP;
+ }
return GRPC_MESSAGE_COMPRESS_ALGORITHMS_COUNT;
}
grpc_stream_compression_algorithm grpc_stream_compression_algorithm_from_slice(
const grpc_slice& str) {
- if (grpc_slice_eq_static_interned(str, GRPC_MDSTR_IDENTITY))
+ if (grpc_slice_eq_static_interned(str, GRPC_MDSTR_IDENTITY)) {
return GRPC_STREAM_COMPRESS_NONE;
- if (grpc_slice_eq_static_interned(str, GRPC_MDSTR_GZIP))
+ }
+ if (grpc_slice_eq_static_interned(str, GRPC_MDSTR_GZIP)) {
return GRPC_STREAM_COMPRESS_GZIP;
+ }
return GRPC_STREAM_COMPRESS_ALGORITHMS_COUNT;
}
#include <grpc/support/port_platform.h>
-#include <grpc/impl/codegen/compression_types.h>
+#include <grpc/compression.h>
+#include <grpc/slice.h>
#include "src/core/lib/gpr/useful.h"
}
static void grpc_stream_compression_context_destroy_identity(
- grpc_stream_compression_context* /*ctx*/) {
- return;
-}
+ grpc_stream_compression_context* /*ctx*/) {}
const grpc_stream_compression_vtable grpc_stream_compression_identity_vtable = {
grpc_stream_compress_identity, grpc_stream_decompress_identity,
"Number of streams whose payload was written per TCP write",
"Number of streams terminated per TCP write",
"Number of flow control updates written per TCP write",
+ // NOLINTNEXTLINE(bugprone-suspicious-missing-comma)
"How many completion queues were checked looking for a CQ that had "
"requested the incoming call",
};
#ifdef GPR_CPU_IPHONE
-/* Probably 2 instead of 1, but see comment on gpr_cpu_current_cpu. */
-unsigned gpr_cpu_num_cores(void) { return 1; }
+#include <sys/sysctl.h>
+
+unsigned gpr_cpu_num_cores(void) {
+ size_t len;
+ unsigned int ncpu;
+ len = sizeof(ncpu);
+ sysctlbyname("hw.ncpu", &ncpu, &len, NULL, 0);
+
+ return ncpu;
+}
/* Most code that's using this is using it to shard across work queues. So
unless profiling shows it's a problem or there appears a way to detect the
#include <sys/syscall.h>
#include <time.h>
#include <unistd.h>
+
#include <string>
+
#include "absl/strings/str_format.h"
+#include "src/core/lib/gprpp/examine_stack.h"
static long sys_gettid(void) { return syscall(__NR_gettid); }
timer = static_cast<time_t>(now.tv_sec);
final_slash = strrchr(args->file, '/');
- if (final_slash == nullptr)
+ if (final_slash == nullptr) {
display_file = args->file;
- else
+ } else {
display_file = final_slash + 1;
+ }
if (!localtime_r(&timer, &tm)) {
strcpy(time_buffer, "error:localtime");
std::string prefix = absl::StrFormat(
"%s%s.%09" PRId32 " %7ld %s:%d]", gpr_log_severity_string(args->severity),
time_buffer, now.tv_nsec, tid, display_file, args->line);
- fprintf(stderr, "%-60s %s\n", prefix.c_str(), args->message);
+
+ absl::optional<std::string> stack_trace =
+ args->severity >= GPR_LOG_SEVERITY_ERROR
+ ? grpc_core::GetCurrentStackTrace()
+ : absl::nullopt;
+ if (stack_trace) {
+ fprintf(stderr, "%-60s %s\n%s\n", prefix.c_str(), args->message,
+ stack_trace->c_str());
+ } else {
+ fprintf(stderr, "%-60s %s\n", prefix.c_str(), args->message);
+ }
}
#endif /* GPR_LINUX_LOG */
#include <string.h>
#include <time.h>
#include <string>
+
#include "absl/strings/str_format.h"
+#include "src/core/lib/gprpp/examine_stack.h"
static intptr_t sys_gettid(void) { return (intptr_t)pthread_self(); }
std::string prefix = absl::StrFormat(
"%s%s.%09d %7" PRIdPTR " %s:%d]", gpr_log_severity_string(args->severity),
time_buffer, (int)(now.tv_nsec), sys_gettid(), display_file, args->line);
- fprintf(stderr, "%-70s %s\n", prefix.c_str(), args->message);
+
+ absl::optional<std::string> stack_trace =
+ args->severity >= GPR_LOG_SEVERITY_ERROR
+ ? grpc_core::GetCurrentStackTrace()
+ : absl::nullopt;
+ if (stack_trace) {
+ fprintf(stderr, "%-70s %s\n%s\n", prefix.c_str(), args->message,
+ stack_trace->c_str());
+ } else {
+ fprintf(stderr, "%-70s %s\n", prefix.c_str(), args->message);
+ }
}
#endif /* defined(GPR_POSIX_LOG) */
#include "src/core/lib/gpr/string.h"
#include "src/core/lib/gpr/string_windows.h"
+#include "src/core/lib/gprpp/examine_stack.h"
void gpr_log(const char* file, int line, gpr_log_severity severity,
const char* format, ...) {
strcpy(time_buffer, "error:strftime");
}
- fprintf(stderr, "%s%s.%09u %5lu %s:%d] %s\n",
- gpr_log_severity_string(args->severity), time_buffer,
- (int)(now.tv_nsec), GetCurrentThreadId(), display_file, args->line,
- args->message);
+ absl::optional<std::string> stack_trace =
+ args->severity >= GPR_LOG_SEVERITY_ERROR
+ ? grpc_core::GetCurrentStackTrace()
+ : absl::nullopt;
+ if (stack_trace) {
+ fprintf(stderr, "%s%s.%09u %5lu %s:%d] %s\n%s\n",
+ gpr_log_severity_string(args->severity), time_buffer,
+ (int)(now.tv_nsec), GetCurrentThreadId(), display_file, args->line,
+ args->message, stack_trace->c_str());
+ } else {
+ fprintf(stderr, "%s%s.%09u %5lu %s:%d] %s\n",
+ gpr_log_severity_string(args->severity), time_buffer,
+ (int)(now.tv_nsec), GetCurrentThreadId(), display_file, args->line,
+ args->message);
+ }
fflush(stderr);
}
#include <string.h>
-#define ROTL32(x, r) ((x) << (r)) | ((x) >> (32 - (r)))
+#define ROTL32(x, r) (((x) << (r)) | ((x) >> (32 - (r))))
#define FMIX32(h) \
(h) ^= (h) >> 16; \
int gpr_parse_nonnegative_int(const char* value) {
char* end;
- long result = strtol(value, &end, 0);
+ long result = strtol(value, &end, 10);
if (*end != '\0' || result < 0 || result > INT_MAX) return -1;
return static_cast<int>(result);
}
gpr_timespec gpr_cycle_counter_to_time(gpr_cycle_counter cycles) {
gpr_timespec ts;
- ts.tv_sec = cycles / GPR_US_PER_SEC;
- ts.tv_nsec = (cycles - ts.tv_sec * GPR_US_PER_SEC) * GPR_NS_PER_US;
+ ts.tv_sec = static_cast<int64_t>(cycles / GPR_US_PER_SEC);
+ ts.tv_nsec = static_cast<int64_t>((cycles - ts.tv_sec * GPR_US_PER_SEC) *
+ GPR_NS_PER_US);
ts.clock_type = GPR_CLOCK_PRECISE;
return ts;
}
ALL functions here may be implemented as macros. */
+#ifdef GPR_STDCPP_TLS
+#include "src/core/lib/gpr/tls_stdcpp.h"
+#endif
+
#ifdef GPR_GCC_TLS
#include "src/core/lib/gpr/tls_gcc.h"
#endif
#include tls.h to use this - and see that file for documentation */
+#include <cstdint>
+
struct gpr_msvc_thread_local {
intptr_t value;
};
--- /dev/null
+/*
+ *
+ * Copyright 2020 gRPC authors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+#ifndef GRPC_CORE_LIB_GPR_TLS_STDCPP_H
+#define GRPC_CORE_LIB_GPR_TLS_STDCPP_H
+
+#include <grpc/support/port_platform.h>
+
+/** Thread local storage based on C++ thread_local.
+ #include tls.h to use this - and see that file for documentation */
+
+/** Use GPR_TLS_DECL to declare tls static variables outside a class */
+#define GPR_TLS_DECL(name) thread_local static intptr_t name = 0
+
+/** Use GPR_TLS_CLASS_DECL to declare tls static variable members of a class.
+ * GPR_TLS_CLASS_DEF needs to be called to define this member. */
+#define GPR_TLS_CLASS_DECL(name) thread_local static intptr_t name
+
+#define GPR_TLS_CLASS_DEF(name) thread_local intptr_t name = 0
+
+#define gpr_tls_init(tls) \
+ do { \
+ } while (0)
+
+#define gpr_tls_destroy(tls) \
+ do { \
+ } while (0)
+
+#define gpr_tls_set(tls, new_value) (*(tls) = (new_value))
+
+#define gpr_tls_get(tls) (*(tls))
+
+#endif /* GRPC_CORE_LIB_GPR_TLS_STDCPP_H */
#define GPR_SWAP(type, a, b) \
do { \
type x = a; \
- a = b; \
- b = x; \
+ (a) = b; \
+ (b) = x; \
} while (0)
/** Set the \a n-th bit of \a i (a mutable pointer). */
#define GPR_ICMP(a, b) ((a) < (b) ? -1 : ((a) > (b) ? 1 : 0))
-#define GPR_HASH_POINTER(x, range) \
- ((((size_t)x) >> 4) ^ (((size_t)x) >> 9) ^ (((size_t)x) >> 14)) % (range)
+#define GPR_HASH_POINTER(x, range) \
+ (((((size_t)(x)) >> 4) ^ (((size_t)(x)) >> 9) ^ (((size_t)(x)) >> 14)) % \
+ (range))
#endif /* GRPC_CORE_LIB_GPR_USEFUL_H */
Note that this is one of the few places in src/core where we allow
the use of portability macros.
-
-Note that this is the only place in src/core where we allow
-use of the C++ standard library (i.e., anything in the `std::`
-namespace).
#include <cassert>
#include <cinttypes>
-#include "src/core/lib/debug/trace.h"
#include "src/core/lib/gprpp/atomic.h"
#include "src/core/lib/gprpp/debug_location.h"
#include "src/core/lib/gprpp/orphanable.h"
template <typename Child>
class DualRefCounted : public Orphanable {
public:
- virtual ~DualRefCounted() = default;
+ ~DualRefCounted() override = default;
RefCountedPtr<Child> Ref() GRPC_MUST_USE_RESULT {
IncrementRefCount();
const uint32_t strong_refs = GetStrongRefs(prev_ref_pair);
#ifndef NDEBUG
const uint32_t weak_refs = GetWeakRefs(prev_ref_pair);
- if (trace_flag_ != nullptr && trace_flag_->enabled()) {
- gpr_log(GPR_INFO, "%s:%p unref %d -> %d, weak_ref %d -> %d",
- trace_flag_->name(), this, strong_refs, strong_refs - 1,
- weak_refs, weak_refs + 1);
+ if (trace_ != nullptr) {
+ gpr_log(GPR_INFO, "%s:%p unref %d -> %d, weak_ref %d -> %d", trace_, this,
+ strong_refs, strong_refs - 1, weak_refs, weak_refs + 1);
}
GPR_ASSERT(strong_refs > 0);
#endif
const uint32_t strong_refs = GetStrongRefs(prev_ref_pair);
#ifndef NDEBUG
const uint32_t weak_refs = GetWeakRefs(prev_ref_pair);
- if (trace_flag_ != nullptr && trace_flag_->enabled()) {
+ if (trace_ != nullptr) {
gpr_log(GPR_INFO, "%s:%p %s:%d unref %d -> %d, weak_ref %d -> %d) %s",
- trace_flag_->name(), this, location.file(), location.line(),
- strong_refs, strong_refs - 1, weak_refs, weak_refs + 1, reason);
+ trace_, this, location.file(), location.line(), strong_refs,
+ strong_refs - 1, weak_refs, weak_refs + 1, reason);
}
GPR_ASSERT(strong_refs > 0);
#else
const uint32_t strong_refs = GetStrongRefs(prev_ref_pair);
#ifndef NDEBUG
const uint32_t weak_refs = GetWeakRefs(prev_ref_pair);
- if (trace_flag_ != nullptr && trace_flag_->enabled()) {
+ if (trace_ != nullptr) {
gpr_log(GPR_INFO, "%s:%p ref_if_non_zero %d -> %d (weak_refs=%d)",
- trace_flag_->name(), this, strong_refs, strong_refs + 1,
- weak_refs);
+ trace_, this, strong_refs, strong_refs + 1, weak_refs);
}
#endif
if (strong_refs == 0) return nullptr;
const uint32_t strong_refs = GetStrongRefs(prev_ref_pair);
#ifndef NDEBUG
const uint32_t weak_refs = GetWeakRefs(prev_ref_pair);
- if (trace_flag_ != nullptr && trace_flag_->enabled()) {
+ if (trace_ != nullptr) {
gpr_log(GPR_INFO,
"%s:%p %s:%d ref_if_non_zero %d -> %d (weak_refs=%d) %s",
- trace_flag_->name(), this, location.file(), location.line(),
- strong_refs, strong_refs + 1, weak_refs, reason);
+ trace_, this, location.file(), location.line(), strong_refs,
+ strong_refs + 1, weak_refs, reason);
}
#else
// Avoid unused-parameter warnings for debug-only parameters
void WeakUnref() {
#ifndef NDEBUG
// Grab a copy of the trace flag before the atomic change, since we
- // can't safely access it afterwards if we're going to be freed.
- auto* trace_flag = trace_flag_;
+ // will no longer be holding a ref afterwards and therefore can't
+ // safely access it, since another thread might free us in the interim.
+ const char* trace = trace_;
#endif
const uint64_t prev_ref_pair =
refs_.FetchSub(MakeRefPair(0, 1), MemoryOrder::ACQ_REL);
const uint32_t weak_refs = GetWeakRefs(prev_ref_pair);
#ifndef NDEBUG
const uint32_t strong_refs = GetStrongRefs(prev_ref_pair);
- if (trace_flag != nullptr && trace_flag->enabled()) {
- gpr_log(GPR_INFO, "%s:%p weak_unref %d -> %d (refs=%d)",
- trace_flag->name(), this, weak_refs, weak_refs - 1, strong_refs);
+ if (trace != nullptr) {
+ gpr_log(GPR_INFO, "%s:%p weak_unref %d -> %d (refs=%d)", trace, this,
+ weak_refs, weak_refs - 1, strong_refs);
}
GPR_ASSERT(weak_refs > 0);
#endif
void WeakUnref(const DebugLocation& location, const char* reason) {
#ifndef NDEBUG
// Grab a copy of the trace flag before the atomic change, since we
- // can't safely access it afterwards if we're going to be freed.
- auto* trace_flag = trace_flag_;
+ // will no longer be holding a ref afterwards and therefore can't
+ // safely access it, since another thread might free us in the interim.
+ const char* trace = trace_;
#endif
const uint64_t prev_ref_pair =
refs_.FetchSub(MakeRefPair(0, 1), MemoryOrder::ACQ_REL);
const uint32_t weak_refs = GetWeakRefs(prev_ref_pair);
#ifndef NDEBUG
const uint32_t strong_refs = GetStrongRefs(prev_ref_pair);
- if (trace_flag != nullptr && trace_flag->enabled()) {
- gpr_log(GPR_INFO, "%s:%p %s:%d weak_unref %d -> %d (refs=%d) %s",
- trace_flag->name(), this, location.file(), location.line(),
- weak_refs, weak_refs - 1, strong_refs, reason);
+ if (trace_ != nullptr) {
+ gpr_log(GPR_INFO, "%s:%p %s:%d weak_unref %d -> %d (refs=%d) %s", trace,
+ this, location.file(), location.line(), weak_refs, weak_refs - 1,
+ strong_refs, reason);
}
GPR_ASSERT(weak_refs > 0);
#else
DualRefCounted& operator=(const DualRefCounted&) = delete;
protected:
- // TraceFlagT is defined to accept both DebugOnlyTraceFlag and TraceFlag.
- // Note: RefCount tracing is only enabled on debug builds, even when a
- // TraceFlag is used.
- template <typename TraceFlagT = TraceFlag>
+ // Note: Tracing is a no-op in non-debug builds.
explicit DualRefCounted(
- TraceFlagT*
+ const char*
#ifndef NDEBUG
// Leave unnamed if NDEBUG to avoid unused parameter warning
- trace_flag
+ trace
#endif
= nullptr,
int32_t initial_refcount = 1)
:
#ifndef NDEBUG
- trace_flag_(trace_flag),
+ trace_(trace),
#endif
refs_(MakeRefPair(initial_refcount, 0)) {
}
const uint32_t strong_refs = GetStrongRefs(prev_ref_pair);
const uint32_t weak_refs = GetWeakRefs(prev_ref_pair);
GPR_ASSERT(strong_refs != 0);
- if (trace_flag_ != nullptr && trace_flag_->enabled()) {
- gpr_log(GPR_INFO, "%s:%p ref %d -> %d; (weak_refs=%d)",
- trace_flag_->name(), this, strong_refs, strong_refs + 1,
- weak_refs);
+ if (trace_ != nullptr) {
+ gpr_log(GPR_INFO, "%s:%p ref %d -> %d; (weak_refs=%d)", trace_, this,
+ strong_refs, strong_refs + 1, weak_refs);
}
#else
refs_.FetchAdd(MakeRefPair(1, 0), MemoryOrder::RELAXED);
const uint32_t strong_refs = GetStrongRefs(prev_ref_pair);
const uint32_t weak_refs = GetWeakRefs(prev_ref_pair);
GPR_ASSERT(strong_refs != 0);
- if (trace_flag_ != nullptr && trace_flag_->enabled()) {
- gpr_log(GPR_INFO, "%s:%p %s:%d ref %d -> %d (weak_refs=%d) %s",
- trace_flag_->name(), this, location.file(), location.line(),
- strong_refs, strong_refs + 1, weak_refs, reason);
+ if (trace_ != nullptr) {
+ gpr_log(GPR_INFO, "%s:%p %s:%d ref %d -> %d (weak_refs=%d) %s", trace_,
+ this, location.file(), location.line(), strong_refs,
+ strong_refs + 1, weak_refs, reason);
}
#else
// Use conditionally-important parameters
refs_.FetchAdd(MakeRefPair(0, 1), MemoryOrder::RELAXED);
const uint32_t strong_refs = GetStrongRefs(prev_ref_pair);
const uint32_t weak_refs = GetWeakRefs(prev_ref_pair);
- if (trace_flag_ != nullptr && trace_flag_->enabled()) {
- gpr_log(GPR_INFO, "%s:%p weak_ref %d -> %d; (refs=%d)",
- trace_flag_->name(), this, weak_refs, weak_refs + 1, strong_refs);
+ if (trace_ != nullptr) {
+ gpr_log(GPR_INFO, "%s:%p weak_ref %d -> %d; (refs=%d)", trace_, this,
+ weak_refs, weak_refs + 1, strong_refs);
}
#else
refs_.FetchAdd(MakeRefPair(0, 1), MemoryOrder::RELAXED);
refs_.FetchAdd(MakeRefPair(0, 1), MemoryOrder::RELAXED);
const uint32_t strong_refs = GetStrongRefs(prev_ref_pair);
const uint32_t weak_refs = GetWeakRefs(prev_ref_pair);
- if (trace_flag_ != nullptr && trace_flag_->enabled()) {
- gpr_log(GPR_INFO, "%s:%p %s:%d weak_ref %d -> %d (refs=%d) %s",
- trace_flag_->name(), this, location.file(), location.line(),
- weak_refs, weak_refs + 1, strong_refs, reason);
+ if (trace_ != nullptr) {
+ gpr_log(GPR_INFO, "%s:%p %s:%d weak_ref %d -> %d (refs=%d) %s", trace_,
+ this, location.file(), location.line(), weak_refs, weak_refs + 1,
+ strong_refs, reason);
}
#else
// Use conditionally-important parameters
}
#ifndef NDEBUG
- TraceFlag* trace_flag_;
+ const char* trace_;
#endif
Atomic<uint64_t> refs_;
};
--- /dev/null
+/*
+ *
+ * Copyright 2020 gRPC authors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+#include <grpc/support/port_platform.h>
+
+#include "src/core/lib/gprpp/examine_stack.h"
+
+namespace grpc_core {
+
+gpr_current_stack_trace_func g_current_stack_trace_provider = nullptr;
+
+gpr_current_stack_trace_func GetCurrentStackTraceProvider() {
+ return g_current_stack_trace_provider;
+}
+
+void SetCurrentStackTraceProvider(
+ gpr_current_stack_trace_func current_stack_trace_provider) {
+ g_current_stack_trace_provider = current_stack_trace_provider;
+}
+
+absl::optional<std::string> GetCurrentStackTrace() {
+ if (g_current_stack_trace_provider != nullptr) {
+ return g_current_stack_trace_provider();
+ }
+ return absl::nullopt;
+}
+
+} // namespace grpc_core
--- /dev/null
+/*
+ *
+ * Copyright 2020 gRPC authors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+#ifndef GRPC_CORE_LIB_GPRPP_EXAMINE_STACK_H
+#define GRPC_CORE_LIB_GPRPP_EXAMINE_STACK_H
+
+#include <grpc/support/port_platform.h>
+
+#include <functional>
+#include <string>
+
+#include "absl/types/optional.h"
+
+namespace grpc_core {
+
+typedef std::string (*gpr_current_stack_trace_func)();
+
+// Returns a current_stack_trace_provider.
+gpr_current_stack_trace_func GetCurrentStackTraceProvider();
+
+// Sets current_stack_trace_provider which provides a current-stack trace.
+void SetCurrentStackTraceProvider(
+ gpr_current_stack_trace_func current_stack_trace_provider);
+
+// Returns the current stack trace as a string via current_stack_trace_provider
+// If current_stack_trace_provider is not set, it returns absl::nullopt.
+absl::optional<std::string> GetCurrentStackTrace();
+
+} // namespace grpc_core
+
+#endif /* GRPC_CORE_LIB_GPRPP_EXAMINE_STACK_H */
GPR_GLOBAL_CONFIG_DEFINE_BOOL(grpc_enable_fork_support,
GRPC_ENABLE_FORK_SUPPORT_DEFAULT,
- "Enable folk support");
+ "Enable fork support");
namespace grpc_core {
namespace internal {
// When blocked, the exec_ctx_count is 0-indexed. Note that ExecCtx
// creation can only be blocked if there is exactly 1 outstanding ExecCtx,
// meaning that BLOCKED and UNBLOCKED counts partition the integers
-#define UNBLOCKED(n) (n + 2)
+#define UNBLOCKED(n) ((n) + 2)
#define BLOCKED(n) (n)
class ExecCtxState {
}
template <class DerivedType>
void Init(DerivedType&& x) {
- FinishInit(new (&space_) DerivedType(std::move(x)));
+ FinishInit(new (&space_) DerivedType(std::forward<DerivedType>(x)));
}
void Destroy() { get()->~BaseType(); }
#include <cinttypes>
#include <memory>
-#include "src/core/lib/debug/trace.h"
#include "src/core/lib/gprpp/debug_location.h"
#include "src/core/lib/gprpp/memory.h"
#include "src/core/lib/gprpp/ref_counted.h"
template <typename T>
friend class RefCountedPtr;
- // TraceFlagT is defined to accept both DebugOnlyTraceFlag and TraceFlag.
- // Note: RefCount tracing is only enabled on debug builds, even when a
- // TraceFlag is used.
- template <typename TraceFlagT = TraceFlag>
- explicit InternallyRefCounted(TraceFlagT* trace_flag = nullptr,
+ // Note: Tracing is a no-op on non-debug builds.
+ explicit InternallyRefCounted(const char* trace = nullptr,
intptr_t initial_refcount = 1)
- : refs_(initial_refcount, trace_flag) {}
- virtual ~InternallyRefCounted() = default;
+ : refs_(initial_refcount, trace) {}
+ ~InternallyRefCounted() override = default;
RefCountedPtr<Child> Ref() GRPC_MUST_USE_RESULT {
IncrementRefCount();
#include <cassert>
#include <cinttypes>
-#include "src/core/lib/debug/trace.h"
#include "src/core/lib/gprpp/atomic.h"
#include "src/core/lib/gprpp/debug_location.h"
#include "src/core/lib/gprpp/memory.h"
// `init` is the initial refcount stored in this object.
//
- // TraceFlagT is defined to accept both DebugOnlyTraceFlag and TraceFlag.
- // Note: RefCount tracing is only enabled on debug builds, even when a
- // TraceFlag is used.
- template <typename TraceFlagT = TraceFlag>
- constexpr explicit RefCount(
+ // `trace` is a string to be logged with trace events; if null, no
+ // trace logging will be done. Tracing is a no-op in non-debug builds.
+ explicit RefCount(
Value init = 1,
- TraceFlagT*
+ const char*
#ifndef NDEBUG
// Leave unnamed if NDEBUG to avoid unused parameter warning
- trace_flag
+ trace
#endif
= nullptr)
:
#ifndef NDEBUG
- trace_flag_(trace_flag),
+ trace_(trace),
#endif
value_(init) {
}
void Ref(Value n = 1) {
#ifndef NDEBUG
const Value prior = value_.FetchAdd(n, MemoryOrder::RELAXED);
- if (trace_flag_ != nullptr && trace_flag_->enabled()) {
- gpr_log(GPR_INFO, "%s:%p ref %" PRIdPTR " -> %" PRIdPTR,
- trace_flag_->name(), this, prior, prior + n);
+ if (trace_ != nullptr) {
+ gpr_log(GPR_INFO, "%s:%p ref %" PRIdPTR " -> %" PRIdPTR, trace_, this,
+ prior, prior + n);
}
#else
value_.FetchAdd(n, MemoryOrder::RELAXED);
void Ref(const DebugLocation& location, const char* reason, Value n = 1) {
#ifndef NDEBUG
const Value prior = value_.FetchAdd(n, MemoryOrder::RELAXED);
- if (trace_flag_ != nullptr && trace_flag_->enabled()) {
+ if (trace_ != nullptr) {
gpr_log(GPR_INFO, "%s:%p %s:%d ref %" PRIdPTR " -> %" PRIdPTR " %s",
- trace_flag_->name(), this, location.file(), location.line(),
- prior, prior + n, reason);
+ trace_, this, location.file(), location.line(), prior, prior + n,
+ reason);
}
#else
// Use conditionally-important parameters
(void)location;
(void)reason;
-
value_.FetchAdd(n, MemoryOrder::RELAXED);
#endif
}
void RefNonZero() {
#ifndef NDEBUG
const Value prior = value_.FetchAdd(1, MemoryOrder::RELAXED);
- if (trace_flag_ != nullptr && trace_flag_->enabled()) {
- gpr_log(GPR_INFO, "%s:%p ref %" PRIdPTR " -> %" PRIdPTR,
- trace_flag_->name(), this, prior, prior + 1);
+ if (trace_ != nullptr) {
+ gpr_log(GPR_INFO, "%s:%p ref %" PRIdPTR " -> %" PRIdPTR, trace_, this,
+ prior, prior + 1);
}
assert(prior > 0);
#else
void RefNonZero(const DebugLocation& location, const char* reason) {
#ifndef NDEBUG
const Value prior = value_.FetchAdd(1, MemoryOrder::RELAXED);
- if (trace_flag_ != nullptr && trace_flag_->enabled()) {
+ if (trace_ != nullptr) {
gpr_log(GPR_INFO, "%s:%p %s:%d ref %" PRIdPTR " -> %" PRIdPTR " %s",
- trace_flag_->name(), this, location.file(), location.line(),
- prior, prior + 1, reason);
+ trace_, this, location.file(), location.line(), prior, prior + 1,
+ reason);
}
assert(prior > 0);
#else
bool RefIfNonZero() {
#ifndef NDEBUG
- if (trace_flag_ != nullptr && trace_flag_->enabled()) {
+ if (trace_ != nullptr) {
const Value prior = get();
gpr_log(GPR_INFO, "%s:%p ref_if_non_zero %" PRIdPTR " -> %" PRIdPTR,
- trace_flag_->name(), this, prior, prior + 1);
+ trace_, this, prior, prior + 1);
}
#endif
return value_.IncrementIfNonzero();
}
bool RefIfNonZero(const DebugLocation& location, const char* reason) {
#ifndef NDEBUG
- if (trace_flag_ != nullptr && trace_flag_->enabled()) {
+ if (trace_ != nullptr) {
const Value prior = get();
gpr_log(GPR_INFO,
- "%s:%p %s:%d ref_if_non_zero "
- "%" PRIdPTR " -> %" PRIdPTR " %s",
- trace_flag_->name(), this, location.file(), location.line(),
- prior, prior + 1, reason);
+ "%s:%p %s:%d ref_if_non_zero %" PRIdPTR " -> %" PRIdPTR " %s",
+ trace_, this, location.file(), location.line(), prior, prior + 1,
+ reason);
}
#endif
// Avoid unused-parameter warnings for debug-only parameters
bool Unref() {
#ifndef NDEBUG
// Grab a copy of the trace flag before the atomic change, since we
- // can't safely access it afterwards if we're going to be freed.
- auto* trace_flag = trace_flag_;
+ // will no longer be holding a ref afterwards and therefore can't
+ // safely access it, since another thread might free us in the interim.
+ auto* trace = trace_;
#endif
const Value prior = value_.FetchSub(1, MemoryOrder::ACQ_REL);
#ifndef NDEBUG
- if (trace_flag != nullptr && trace_flag->enabled()) {
- gpr_log(GPR_INFO, "%s:%p unref %" PRIdPTR " -> %" PRIdPTR,
- trace_flag->name(), this, prior, prior - 1);
+ if (trace != nullptr) {
+ gpr_log(GPR_INFO, "%s:%p unref %" PRIdPTR " -> %" PRIdPTR, trace, this,
+ prior, prior - 1);
}
GPR_DEBUG_ASSERT(prior > 0);
#endif
bool Unref(const DebugLocation& location, const char* reason) {
#ifndef NDEBUG
// Grab a copy of the trace flag before the atomic change, since we
- // can't safely access it afterwards if we're going to be freed.
- auto* trace_flag = trace_flag_;
+ // will no longer be holding a ref afterwards and therefore can't
+ // safely access it, since another thread might free us in the interim.
+ auto* trace = trace_;
#endif
const Value prior = value_.FetchSub(1, MemoryOrder::ACQ_REL);
#ifndef NDEBUG
- if (trace_flag != nullptr && trace_flag->enabled()) {
+ if (trace != nullptr) {
gpr_log(GPR_INFO, "%s:%p %s:%d unref %" PRIdPTR " -> %" PRIdPTR " %s",
- trace_flag->name(), this, location.file(), location.line(), prior,
- prior - 1, reason);
+ trace, this, location.file(), location.line(), prior, prior - 1,
+ reason);
}
GPR_DEBUG_ASSERT(prior > 0);
#else
Value get() const { return value_.Load(MemoryOrder::RELAXED); }
#ifndef NDEBUG
- TraceFlag* trace_flag_;
+ const char* trace_;
#endif
Atomic<Value> value_;
};
RefCounted& operator=(const RefCounted&) = delete;
protected:
- // TraceFlagT is defined to accept both DebugOnlyTraceFlag and TraceFlag.
- // Note: RefCount tracing is only enabled on debug builds, even when a
- // TraceFlag is used.
- template <typename TraceFlagT = TraceFlag>
- explicit RefCounted(TraceFlagT* trace_flag = nullptr,
+ // Note: Tracing is a no-op on non-debug builds.
+ explicit RefCounted(const char* trace = nullptr,
intptr_t initial_refcount = 1)
- : refs_(initial_refcount, trace_flag) {}
+ : refs_(initial_refcount, trace) {}
private:
// Allow RefCountedPtr<> to access IncrementRefCount().
// If value is non-null, we take ownership of a ref to it.
template <typename Y>
- explicit RefCountedPtr(Y* value) {
- value_ = value;
- }
+ RefCountedPtr(Y* value) : value_(value) {}
// Move ctors.
- RefCountedPtr(RefCountedPtr&& other) {
+ RefCountedPtr(RefCountedPtr&& other) noexcept {
value_ = other.value_;
other.value_ = nullptr;
}
template <typename Y>
- RefCountedPtr(RefCountedPtr<Y>&& other) {
+ RefCountedPtr(RefCountedPtr<Y>&& other) noexcept {
value_ = static_cast<T*>(other.value_);
other.value_ = nullptr;
}
// Move assignment.
- RefCountedPtr& operator=(RefCountedPtr&& other) {
+ RefCountedPtr& operator=(RefCountedPtr&& other) noexcept {
reset(other.value_);
other.value_ = nullptr;
return *this;
}
template <typename Y>
- RefCountedPtr& operator=(RefCountedPtr<Y>&& other) {
+ RefCountedPtr& operator=(RefCountedPtr<Y>&& other) noexcept {
reset(other.value_);
other.value_ = nullptr;
return *this;
}
// Move ctors.
- WeakRefCountedPtr(WeakRefCountedPtr&& other) {
+ WeakRefCountedPtr(WeakRefCountedPtr&& other) noexcept {
value_ = other.value_;
other.value_ = nullptr;
}
template <typename Y>
- WeakRefCountedPtr(WeakRefCountedPtr<Y>&& other) {
+ WeakRefCountedPtr(WeakRefCountedPtr<Y>&& other) noexcept {
value_ = static_cast<T*>(other.value_);
other.value_ = nullptr;
}
// Move assignment.
- WeakRefCountedPtr& operator=(WeakRefCountedPtr&& other) {
+ WeakRefCountedPtr& operator=(WeakRefCountedPtr&& other) noexcept {
reset(other.value_);
other.value_ = nullptr;
return *this;
}
template <typename Y>
- WeakRefCountedPtr& operator=(WeakRefCountedPtr<Y>&& other) {
+ WeakRefCountedPtr& operator=(WeakRefCountedPtr<Y>&& other) noexcept {
reset(other.value_);
other.value_ = nullptr;
return *this;
+//
// Copyright 2020 gRPC authors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
+//
-#ifndef GRPC_CORE_LIB_SECURITY_AUTHORIZATION_MOCK_CEL_STATUSOR_H
-#define GRPC_CORE_LIB_SECURITY_AUTHORIZATION_MOCK_CEL_STATUSOR_H
+#ifndef GRPC_CORE_LIB_GPRPP_STAT_H
+#define GRPC_CORE_LIB_GPRPP_STAT_H
#include <grpc/support/port_platform.h>
-#include <memory>
+#include <stdio.h>
+#include <time.h>
#include "absl/status/status.h"
+#include "absl/strings/string_view.h"
namespace grpc_core {
-namespace mock_cel {
-
-// This is a temporary stub implementation of CEL APIs.
-// Once gRPC imports the CEL library, this file will be removed.
-
-template <typename T>
-class ABSL_MUST_USE_RESULT StatusOr;
-
-template <typename T>
-class StatusOr {
- public:
- StatusOr() = default;
-
- StatusOr(const T& value) {}
-
- StatusOr(const absl::Status& status) {}
-
- StatusOr(absl::Status&& status) {}
- bool ok() const { return true; }
-};
+// Gets the last-modified timestamp of a file or a directory.
+// On success, the correct timestamp will be filled with an StatusCode::kOk
+// returned. Otherwise, timestamp will be untouched and an
+// StatusCode::kInternal will be returned.
+absl::Status GetFileModificationTime(const char* filename, time_t* timestamp);
-} // namespace mock_cel
} // namespace grpc_core
-#endif // GRPC_CORE_LIB_SECURITY_AUTHORIZATION_MOCK_CEL_STATUSOR_H
\ No newline at end of file
+#endif // GRPC_CORE_LIB_GPRPP_STAT_H
--- /dev/null
+//
+// Copyright 2020 gRPC authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+#include <grpc/support/port_platform.h>
+
+#ifdef GPR_POSIX_STAT
+
+#include <errno.h>
+#include <sys/stat.h>
+#include <sys/types.h>
+#include <unistd.h>
+
+#include <grpc/support/log.h>
+
+#include "src/core/lib/gprpp/stat.h"
+
+namespace grpc_core {
+
+absl::Status GetFileModificationTime(const char* filename, time_t* timestamp) {
+ GPR_ASSERT(filename != nullptr);
+ GPR_ASSERT(timestamp != nullptr);
+ struct stat buf;
+ if (stat(filename, &buf) != 0) {
+ const char* error_msg = strerror(errno);
+ gpr_log(GPR_ERROR, "stat failed for filename %s with error %s.", filename,
+ error_msg);
+ return absl::Status(absl::StatusCode::kInternal, error_msg);
+ }
+ // Last file/directory modification time.
+ *timestamp = buf.st_mtime;
+ return absl::OkStatus();
+}
+
+} // namespace grpc_core
+
+#endif // GPR_POSIX_STAT
--- /dev/null
+//
+// Copyright 2020 gRPC authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+#include <grpc/support/port_platform.h>
+
+#ifdef GPR_WINDOWS_STAT
+
+#include <errno.h>
+#include <sys/stat.h>
+#include <sys/types.h>
+
+#include <grpc/support/log.h>
+
+#include "src/core/lib/gprpp/stat.h"
+
+namespace grpc_core {
+
+absl::Status GetFileModificationTime(const char* filename, time_t* timestamp) {
+ GPR_ASSERT(filename != nullptr);
+ GPR_ASSERT(timestamp != nullptr);
+ struct _stat buf;
+ if (_stat(filename, &buf) != 0) {
+ const char* error_msg = strerror(errno);
+ gpr_log(GPR_ERROR, "_stat failed for filename %s with error %s.", filename,
+ error_msg);
+ return absl::Status(absl::StatusCode::kInternal, error_msg);
+ }
+ // Last file/directory modification time.
+ *timestamp = buf.st_mtime;
+ return absl::OkStatus();
+}
+
+} // namespace grpc_core
+
+#endif // GPR_WINDOWS_STAT
/// Move constructor for thread. After this is called, the other thread
/// no longer represents a living thread object
- Thread(Thread&& other)
+ Thread(Thread&& other) noexcept
: state_(other.state_), impl_(other.impl_), options_(other.options_) {
other.state_ = MOVED;
other.impl_ = nullptr;
/// Move assignment operator for thread. After this is called, the other
/// thread no longer represents a living thread object. Not allowed if this
/// thread actually exists
- Thread& operator=(Thread&& other) {
+ Thread& operator=(Thread&& other) noexcept {
if (this != &other) {
// TODO(vjpai): if we can be sure that all Thread's are actually
// constructed, then we should assert GPR_ASSERT(impl_ == nullptr) here.
GPR_ASSERT(pthread_attr_setstacksize(&attr, stack_size) == 0);
}
- *success =
- (pthread_create(&pthread_id_, &attr,
- [](void* v) -> void* {
- thd_arg arg = *static_cast<thd_arg*>(v);
- free(v);
- if (arg.name != nullptr) {
+ *success = (pthread_create(
+ &pthread_id_, &attr,
+ [](void* v) -> void* {
+ thd_arg arg = *static_cast<thd_arg*>(v);
+ free(v);
+ if (arg.name != nullptr) {
#if GPR_APPLE_PTHREAD_NAME
- /* Apple supports 64 characters, and will
- * truncate if it's longer. */
- pthread_setname_np(arg.name);
+ /* Apple supports 64 characters, and will
+ * truncate if it's longer. */
+ pthread_setname_np(arg.name);
#elif GPR_LINUX_PTHREAD_NAME
- /* Linux supports 16 characters max, and will
- * error if it's longer. */
- char buf[16];
- size_t buf_len = GPR_ARRAY_SIZE(buf) - 1;
- strncpy(buf, arg.name, buf_len);
- buf[buf_len] = '\0';
- pthread_setname_np(pthread_self(), buf);
+ /* Linux supports 16 characters max, and will
+ * error if it's longer. */
+ char buf[16];
+ size_t buf_len = GPR_ARRAY_SIZE(buf) - 1;
+ strncpy(buf, arg.name, buf_len);
+ buf[buf_len] = '\0';
+ pthread_setname_np(pthread_self(), buf);
#endif // GPR_APPLE_PTHREAD_NAME
- }
-
- gpr_mu_lock(&arg.thread->mu_);
- while (!arg.thread->started_) {
- gpr_cv_wait(&arg.thread->ready_, &arg.thread->mu_,
- gpr_inf_future(GPR_CLOCK_MONOTONIC));
- }
- gpr_mu_unlock(&arg.thread->mu_);
-
- if (!arg.joinable) {
- delete arg.thread;
- }
-
- (*arg.body)(arg.arg);
- if (arg.tracked) {
- Fork::DecThreadCount();
- }
- return nullptr;
- },
- info) == 0);
+ }
+
+ gpr_mu_lock(&arg.thread->mu_);
+ while (!arg.thread->started_) {
+ gpr_cv_wait(&arg.thread->ready_, &arg.thread->mu_,
+ gpr_inf_future(GPR_CLOCK_MONOTONIC));
+ }
+ gpr_mu_unlock(&arg.thread->mu_);
+
+ if (!arg.joinable) {
+ delete arg.thread;
+ }
+
+ (*arg.body)(arg.arg);
+ if (arg.tracked) {
+ Fork::DecThreadCount();
+ }
+ return nullptr;
+ },
+ info) == 0);
GPR_ASSERT(pthread_attr_destroy(&attr) == 0);
uint8_t* cur = beg;
uint8_t* end = beg + parser->cur_line_length;
- if (cur == end || *cur++ != 'H')
+ if (cur == end || *cur++ != 'H') {
return GRPC_ERROR_CREATE_FROM_STATIC_STRING("Expected 'H'");
- if (cur == end || *cur++ != 'T')
+ }
+ if (cur == end || *cur++ != 'T') {
return GRPC_ERROR_CREATE_FROM_STATIC_STRING("Expected 'T'");
- if (cur == end || *cur++ != 'T')
+ }
+ if (cur == end || *cur++ != 'T') {
return GRPC_ERROR_CREATE_FROM_STATIC_STRING("Expected 'T'");
- if (cur == end || *cur++ != 'P')
+ }
+ if (cur == end || *cur++ != 'P') {
return GRPC_ERROR_CREATE_FROM_STATIC_STRING("Expected 'P'");
- if (cur == end || *cur++ != '/')
+ }
+ if (cur == end || *cur++ != '/') {
return GRPC_ERROR_CREATE_FROM_STATIC_STRING("Expected '/'");
- if (cur == end || *cur++ != '1')
+ }
+ if (cur == end || *cur++ != '1') {
return GRPC_ERROR_CREATE_FROM_STATIC_STRING("Expected '1'");
- if (cur == end || *cur++ != '.')
+ }
+ if (cur == end || *cur++ != '.') {
return GRPC_ERROR_CREATE_FROM_STATIC_STRING("Expected '.'");
+ }
if (cur == end || *cur < '0' || *cur++ > '1') {
return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
"Expected HTTP/1.0 or HTTP/1.1");
}
- if (cur == end || *cur++ != ' ')
+ if (cur == end || *cur++ != ' ') {
return GRPC_ERROR_CREATE_FROM_STATIC_STRING("Expected ' '");
- if (cur == end || *cur < '1' || *cur++ > '9')
+ }
+ if (cur == end || *cur < '1' || *cur++ > '9') {
return GRPC_ERROR_CREATE_FROM_STATIC_STRING("Expected status code");
- if (cur == end || *cur < '0' || *cur++ > '9')
+ }
+ if (cur == end || *cur < '0' || *cur++ > '9') {
return GRPC_ERROR_CREATE_FROM_STATIC_STRING("Expected status code");
- if (cur == end || *cur < '0' || *cur++ > '9')
+ }
+ if (cur == end || *cur < '0' || *cur++ > '9') {
return GRPC_ERROR_CREATE_FROM_STATIC_STRING("Expected status code");
+ }
parser->http.response->status =
(cur[-3] - '0') * 100 + (cur[-2] - '0') * 10 + (cur[-1] - '0');
- if (cur == end || *cur++ != ' ')
+ if (cur == end || *cur++ != ' ') {
return GRPC_ERROR_CREATE_FROM_STATIC_STRING("Expected ' '");
+ }
/* we don't really care about the status code message */
uint8_t vers_major = 0;
uint8_t vers_minor = 0;
- while (cur != end && *cur++ != ' ')
- ;
- if (cur == end)
+ while (cur != end && *cur++ != ' ') {
+ }
+ if (cur == end) {
return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
"No method on HTTP request line");
+ }
parser->http.request->method =
buf2str(beg, static_cast<size_t>(cur - beg - 1));
beg = cur;
- while (cur != end && *cur++ != ' ')
- ;
- if (cur == end)
+ while (cur != end && *cur++ != ' ') {
+ }
+ if (cur == end) {
return GRPC_ERROR_CREATE_FROM_STATIC_STRING("No path on HTTP request line");
+ }
parser->http.request->path = buf2str(beg, static_cast<size_t>(cur - beg - 1));
- if (cur == end || *cur++ != 'H')
+ if (cur == end || *cur++ != 'H') {
return GRPC_ERROR_CREATE_FROM_STATIC_STRING("Expected 'H'");
- if (cur == end || *cur++ != 'T')
+ }
+ if (cur == end || *cur++ != 'T') {
return GRPC_ERROR_CREATE_FROM_STATIC_STRING("Expected 'T'");
- if (cur == end || *cur++ != 'T')
+ }
+ if (cur == end || *cur++ != 'T') {
return GRPC_ERROR_CREATE_FROM_STATIC_STRING("Expected 'T'");
- if (cur == end || *cur++ != 'P')
+ }
+ if (cur == end || *cur++ != 'P') {
return GRPC_ERROR_CREATE_FROM_STATIC_STRING("Expected 'P'");
- if (cur == end || *cur++ != '/')
+ }
+ if (cur == end || *cur++ != '/') {
return GRPC_ERROR_CREATE_FROM_STATIC_STRING("Expected '/'");
+ }
vers_major = static_cast<uint8_t>(*cur++ - '1' + 1);
++cur;
- if (cur == end)
+ if (cur == end) {
return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
"End of line in HTTP version string");
+ }
vers_minor = static_cast<uint8_t>(*cur++ - '1' + 1);
if (vers_major == 1) {
case GRPC_HTTP_FIRST_LINE:
case GRPC_HTTP_HEADERS:
if (parser->cur_line_length >= GRPC_HTTP_PARSER_MAX_HEADER_LENGTH) {
- if (GRPC_TRACE_FLAG_ENABLED(grpc_http1_trace))
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_http1_trace)) {
gpr_log(GPR_ERROR, "HTTP header max line length (%d) exceeded",
GRPC_HTTP_PARSER_MAX_HEADER_LENGTH);
+ }
return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
"HTTP header max line length exceeded");
}
memcpy((*err)->arena + slot, &new_last, sizeof(grpc_linked_error));
}
-#define SLOTS_PER_INT (sizeof(intptr_t) / sizeof(intptr_t))
+#define SLOTS_PER_INT (1) // == (sizeof(intptr_t) / sizeof(intptr_t))
#define SLOTS_PER_STR (sizeof(grpc_slice) / sizeof(intptr_t))
#define SLOTS_PER_TIME (sizeof(gpr_timespec) / sizeof(intptr_t))
#define SLOTS_PER_LINKED_ERROR (sizeof(grpc_linked_error) / sizeof(intptr_t))
}
#endif
// bulk memcpy of the rest of the struct.
+ // NOLINTNEXTLINE(bugprone-sizeof-expression)
size_t skip = sizeof(&out->atomics);
memcpy((void*)((uintptr_t)out + skip), (void*)((uintptr_t)in + skip),
sizeof(*in) + (in->arena_size * sizeof(intptr_t)) - skip);
}
(*p)->type = type;
- new (&(*p)->refs) grpc_core::RefCount(1, &grpc_trace_pollable_refcount);
+ new (&(*p)->refs) grpc_core::RefCount(
+ 1, GRPC_TRACE_FLAG_ENABLED(grpc_trace_pollable_refcount)
+ ? "pollable_refcount"
+ : nullptr);
gpr_mu_init(&(*p)->mu);
(*p)->epfd = epfd;
(*p)->owner_fd = nullptr;
static int poll_deadline_to_millis_timeout(grpc_millis millis) {
if (millis == GRPC_MILLIS_INF_FUTURE) return -1;
grpc_millis delta = millis - grpc_core::ExecCtx::Get()->Now();
- if (delta > INT_MAX)
+ if (delta > INT_MAX) {
return INT_MAX;
- else if (delta < 0)
+ } else if (delta < 0) {
return 0;
- else
+ } else {
return static_cast<int>(delta);
+ }
}
static void fd_become_readable(grpc_fd* fd) { fd->read_closure.SetReady(); }
}
bool ExecCtx::Flush() {
- bool did_something = 0;
+ bool did_something = false;
GPR_TIMER_SCOPE("grpc_exec_ctx_flush", 0);
for (;;) {
if (!grpc_closure_list_empty(closure_list_)) {
// Removes the oldest element from the queue and return it.
// This might cause to block on empty queue depending on implementation.
// Optional argument for collecting stats purpose.
- virtual void* Get(gpr_timespec* wait_time = nullptr) = 0;
+ virtual void* Get(gpr_timespec* wait_time) = 0;
// Returns number of elements in the queue currently
virtual int count() const = 0;
// Releases all resources held by the queue. The queue must be empty, and no
// one waits on conditional variables.
- ~InfLenFIFOQueue();
+ ~InfLenFIFOQueue() override;
// Puts elem into queue immediately at the end of queue. Since the queue has
// infinite length, this routine will never block and should never fail.
- void Put(void* elem);
+ void Put(void* elem) override;
// Removes the oldest element from the queue and returns it.
// This routine will cause the thread to block if queue is currently empty.
// Argument wait_time should be passed in when trace flag turning on (for
// collecting stats info purpose.)
- void* Get(gpr_timespec* wait_time = nullptr);
+ void* Get(gpr_timespec* wait_time) override;
// Returns number of elements in queue currently.
// There might be concurrently add/remove on queue, so count might change
// quickly.
- int count() const { return count_.Load(MemoryOrder::RELAXED); }
+ int count() const override { return count_.Load(MemoryOrder::RELAXED); }
struct Node {
Node* next; // Linking
ThreadPoolWorker(const char* thd_name, MPMCQueueInterface* queue,
Thread::Options& options, int index)
: queue_(queue), thd_name_(thd_name), index_(index) {
- thd_ = Thread(thd_name,
- [](void* th) { static_cast<ThreadPoolWorker*>(th)->Run(); },
- this, nullptr, options);
+ thd_ = Thread(
+ thd_name, [](void* th) { static_cast<ThreadPoolWorker*>(th)->Run(); },
+ this, nullptr, options);
}
~ThreadPoolWorker() {}
#include <grpc/support/port_platform.h>
+#include "absl/strings/str_cat.h"
+
#include "src/core/lib/iomgr/grpc_if_nametoindex.h"
#include "src/core/lib/iomgr/parse_address.h"
#include "src/core/lib/iomgr/sockaddr.h"
gpr_log(GPR_ERROR, "Expected 'unix' scheme, got '%s'", uri->scheme);
return false;
}
+ grpc_error* error = grpc_core::UnixSockaddrPopulate(uri->path, resolved_addr);
+ if (error != GRPC_ERROR_NONE) {
+ gpr_log(GPR_ERROR, "%s", grpc_error_string(error));
+ GRPC_ERROR_UNREF(error);
+ return false;
+ }
+ return true;
+}
+
+bool grpc_parse_unix_abstract(const grpc_uri* uri,
+ grpc_resolved_address* resolved_addr) {
+ if (strcmp("unix-abstract", uri->scheme) != 0) {
+ gpr_log(GPR_ERROR, "Expected 'unix-abstract' scheme, got '%s'",
+ uri->scheme);
+ return false;
+ }
+ grpc_error* error =
+ grpc_core::UnixAbstractSockaddrPopulate(uri->path, resolved_addr);
+ if (error != GRPC_ERROR_NONE) {
+ gpr_log(GPR_ERROR, "%s", grpc_error_string(error));
+ GRPC_ERROR_UNREF(error);
+ return false;
+ }
+ return true;
+}
+
+namespace grpc_core {
+
+grpc_error* UnixSockaddrPopulate(absl::string_view path,
+ grpc_resolved_address* resolved_addr) {
struct sockaddr_un* un =
reinterpret_cast<struct sockaddr_un*>(resolved_addr->addr);
- const size_t maxlen = sizeof(un->sun_path);
- const size_t path_len = strnlen(uri->path, maxlen);
- if (path_len == maxlen) return false;
+ const size_t maxlen = sizeof(un->sun_path) - 1;
+ if (path.size() > maxlen) {
+ return GRPC_ERROR_CREATE_FROM_COPIED_STRING(
+ absl::StrCat("Path name should not have more than ", maxlen,
+ " characters")
+ .c_str());
+ }
un->sun_family = AF_UNIX;
- strcpy(un->sun_path, uri->path);
+ path.copy(un->sun_path, path.size());
+ un->sun_path[path.size()] = '\0';
resolved_addr->len = static_cast<socklen_t>(sizeof(*un));
- return true;
+ return GRPC_ERROR_NONE;
}
-#else /* GRPC_HAVE_UNIX_SOCKET */
+grpc_error* UnixAbstractSockaddrPopulate(absl::string_view path,
+ grpc_resolved_address* resolved_addr) {
+ struct sockaddr_un* un =
+ reinterpret_cast<struct sockaddr_un*>(resolved_addr->addr);
+ const size_t maxlen = sizeof(un->sun_path) - 1;
+ if (path.size() > maxlen) {
+ return GRPC_ERROR_CREATE_FROM_COPIED_STRING(
+ absl::StrCat("Path name should not have more than ", maxlen,
+ " characters")
+ .c_str());
+ }
+ un->sun_family = AF_UNIX;
+ un->sun_path[0] = '\0';
+ path.copy(un->sun_path + 1, path.size());
+ resolved_addr->len =
+ static_cast<socklen_t>(sizeof(un->sun_family) + path.size() + 1);
+ return GRPC_ERROR_NONE;
+}
+
+} // namespace grpc_core
+
+#else /* GRPC_HAVE_UNIX_SOCKET */
bool grpc_parse_unix(const grpc_uri* uri,
grpc_resolved_address* resolved_addr) {
abort();
}
+bool grpc_parse_unix_abstract(const grpc_uri* uri,
+ grpc_resolved_address* resolved_addr) {
+ abort();
+}
+
+namespace grpc_core {
+
+grpc_error* UnixSockaddrPopulate(absl::string_view path,
+ grpc_resolved_address* resolved_addr) {
+ abort();
+}
+
+grpc_error* UnixAbstractSockaddrPopulate(absl::string_view path,
+ grpc_resolved_address* resolved_addr) {
+ abort();
+}
+
+} // namespace grpc_core
#endif /* GRPC_HAVE_UNIX_SOCKET */
bool grpc_parse_ipv4_hostport(const char* hostport, grpc_resolved_address* addr,
bool grpc_parse_uri(const grpc_uri* uri, grpc_resolved_address* resolved_addr) {
if (strcmp("unix", uri->scheme) == 0) {
return grpc_parse_unix(uri, resolved_addr);
+ } else if (strcmp("unix-abstract", uri->scheme) == 0) {
+ return grpc_parse_unix_abstract(uri, resolved_addr);
} else if (strcmp("ipv4", uri->scheme) == 0) {
return grpc_parse_ipv4(uri, resolved_addr);
} else if (strcmp("ipv6", uri->scheme) == 0) {
#include <stddef.h>
+#include "absl/strings/string_view.h"
+
#include "src/core/lib/iomgr/resolve_address.h"
#include "src/core/lib/uri/uri_parser.h"
* unix socket path. Returns true upon success. */
bool grpc_parse_unix(const grpc_uri* uri, grpc_resolved_address* resolved_addr);
+/** Populate \a resolved_addr from \a uri, whose path is expected to contain a
+ * unix socket path in the abstract namespace. Returns true upon success. */
+bool grpc_parse_unix_abstract(const grpc_uri* uri,
+ grpc_resolved_address* resolved_addr);
+
/** Populate \a resolved_addr from \a uri, whose path is expected to contain an
* IPv4 host:port pair. Returns true upon success. */
bool grpc_parse_ipv4(const grpc_uri* uri, grpc_resolved_address* resolved_addr);
/* Converts named or numeric port to a uint16 suitable for use in a sockaddr. */
uint16_t grpc_strhtons(const char* port);
+namespace grpc_core {
+
+/** Populate \a resolved_addr to be a unix socket at |path| */
+grpc_error* UnixSockaddrPopulate(absl::string_view path,
+ grpc_resolved_address* resolved_addr);
+
+/** Populate \a resolved_addr to be a unix socket in the abstract namespace
+ * at |path| */
+grpc_error* UnixAbstractSockaddrPopulate(absl::string_view path,
+ grpc_resolved_address* resolved_addr);
+
+} // namespace grpc_core
+
#endif /* GRPC_CORE_LIB_IOMGR_PARSE_ADDRESS_H */
}
void grpc::experimental::LibuvEventManager::Shutdown() {
- if (should_stop_.Load(grpc_core::MemoryOrder::ACQUIRE))
+ if (should_stop_.Load(grpc_core::MemoryOrder::ACQUIRE)) {
return; // Already shut down.
+ }
{
grpc_core::MutexLock lock(&shutdown_mu_);
// They are easier to define here (rather than in Cython)
// because Cython doesn't handle #defines well.
-grpc_error* grpc_socket_error(char* error) {
+inline grpc_error* grpc_socket_error(char* error) {
return grpc_error_set_int(GRPC_ERROR_CREATE_FROM_COPIED_STRING(error),
GRPC_ERROR_INT_GRPC_STATUS,
GRPC_STATUS_UNAVAILABLE);
}
-char* grpc_slice_buffer_start(grpc_slice_buffer* buffer, int i) {
+inline char* grpc_slice_buffer_start(grpc_slice_buffer* buffer, int i) {
return (char*)GRPC_SLICE_START_PTR(buffer->slices[i]);
}
-int grpc_slice_buffer_length(grpc_slice_buffer* buffer, int i) {
+inline int grpc_slice_buffer_length(grpc_slice_buffer* buffer, int i) {
return GRPC_SLICE_LENGTH(buffer->slices[i]);
}
size_t i;
grpc_error* err;
- if (name[0] == 'u' && name[1] == 'n' && name[2] == 'i' && name[3] == 'x' &&
- name[4] == ':' && name[5] != 0) {
- return grpc_resolve_unix_domain_address(name + 5, addresses);
- }
-
std::string host;
std::string port;
/* parse name, splitting it into host and port parts */
GRPC_ERROR_STR_TARGET_ADDRESS, grpc_slice_from_copied_string(name));
goto done;
}
+
if (port.empty()) {
if (default_port == nullptr) {
err = grpc_error_set_str(
tcp_get_fd,
tcp_can_track_err};
-#define MAX_CHUNK_SIZE 32 * 1024 * 1024
+#define MAX_CHUNK_SIZE (32 * 1024 * 1024)
grpc_endpoint* grpc_tcp_create(grpc_fd* em_fd,
const grpc_channel_args* channel_args,
#endif
}
/* paired with unref in grpc_tcp_destroy */
- new (&tcp->refcount) grpc_core::RefCount(1, &grpc_tcp_trace);
+ new (&tcp->refcount) grpc_core::RefCount(
+ 1, GRPC_TRACE_FLAG_ENABLED(grpc_tcp_trace) ? "tcp" : nullptr);
gpr_atm_no_barrier_store(&tcp->shutdown_count, 0);
tcp->em_fd = em_fd;
grpc_slice_buffer_init(&tcp->last_read_buffer);
grpc_core::ExecCtx exec_ctx;
grpc_timer* timer = t->original;
GPR_ASSERT(timer->pending);
- timer->pending = 0;
+ timer->pending = false;
grpc_core::ExecCtx::Run(DEBUG_LOCATION, timer->closure, GRPC_ERROR_NONE);
custom_timer_impl->stop(t);
gpr_free(t);
GRPC_CUSTOM_IOMGR_ASSERT_SAME_THREAD();
grpc_custom_timer* tw = (grpc_custom_timer*)timer->custom_timer;
if (timer->pending) {
- timer->pending = 0;
+ timer->pending = false;
grpc_core::ExecCtx::Run(DEBUG_LOCATION, timer->closure,
GRPC_ERROR_CANCELLED);
custom_timer_impl->stop(tw);
#include "absl/strings/str_cat.h"
+#include "src/core/lib/iomgr/parse_address.h"
#include "src/core/lib/iomgr/unix_sockets_posix.h"
#include <grpc/support/alloc.h>
grpc_error* grpc_resolve_unix_domain_address(const char* name,
grpc_resolved_addresses** addrs) {
- struct sockaddr_un* un;
- if (strlen(name) >
- GPR_ARRAY_SIZE(((struct sockaddr_un*)nullptr)->sun_path) - 1) {
- return GRPC_ERROR_CREATE_FROM_COPIED_STRING(
- absl::StrCat("Path name should not have more than ",
- GPR_ARRAY_SIZE(un->sun_path) - 1, " characters")
- .c_str());
- }
*addrs = static_cast<grpc_resolved_addresses*>(
gpr_malloc(sizeof(grpc_resolved_addresses)));
(*addrs)->naddrs = 1;
(*addrs)->addrs = static_cast<grpc_resolved_address*>(
gpr_malloc(sizeof(grpc_resolved_address)));
- un = reinterpret_cast<struct sockaddr_un*>((*addrs)->addrs->addr);
- un->sun_family = AF_UNIX;
- strncpy(un->sun_path, name, sizeof(un->sun_path));
- (*addrs)->addrs->len =
- static_cast<socklen_t>(strlen(un->sun_path) + sizeof(un->sun_family) + 1);
- return GRPC_ERROR_NONE;
+ return grpc_core::UnixSockaddrPopulate(name, (*addrs)->addrs);
+}
+
+grpc_error* grpc_resolve_unix_abstract_domain_address(
+ const absl::string_view name, grpc_resolved_addresses** addrs) {
+ *addrs = static_cast<grpc_resolved_addresses*>(
+ gpr_malloc(sizeof(grpc_resolved_addresses)));
+ (*addrs)->naddrs = 1;
+ (*addrs)->addrs = static_cast<grpc_resolved_address*>(
+ gpr_malloc(sizeof(grpc_resolved_address)));
+ return grpc_core::UnixAbstractSockaddrPopulate(name, (*addrs)->addrs);
}
int grpc_is_unix_socket(const grpc_resolved_address* resolved_addr) {
}
struct sockaddr_un* un = reinterpret_cast<struct sockaddr_un*>(
const_cast<char*>(resolved_addr->addr));
- struct stat st;
+ // There is nothing to unlink for an abstract unix socket
+ if (un->sun_path[0] == '\0' && un->sun_path[1] != '\0') {
+ return;
+ }
+
+ struct stat st;
if (stat(un->sun_path, &st) == 0 && (st.st_mode & S_IFMT) == S_IFSOCK) {
unlink(un->sun_path);
}
if (addr->sa_family != AF_UNIX) {
return "";
}
+ if (((struct sockaddr_un*)addr)->sun_path[0] == '\0' &&
+ ((struct sockaddr_un*)addr)->sun_path[1] != '\0') {
+ const struct sockaddr_un* un =
+ reinterpret_cast<const struct sockaddr_un*>(resolved_addr->addr);
+ return absl::StrCat(
+ "unix-abstract:",
+ absl::string_view(un->sun_path + 1,
+ resolved_addr->len - sizeof(un->sun_family) - 1));
+ }
return absl::StrCat("unix:", ((struct sockaddr_un*)addr)->sun_path);
}
#include "src/core/lib/iomgr/resolve_address.h"
+#include "absl/strings/string_view.h"
+
void grpc_create_socketpair_if_unix(int sv[2]);
grpc_error* grpc_resolve_unix_domain_address(
const char* name, grpc_resolved_addresses** addresses);
+grpc_error* grpc_resolve_unix_abstract_domain_address(
+ absl::string_view name, grpc_resolved_addresses** addresses);
+
int grpc_is_unix_socket(const grpc_resolved_address* resolved_addr);
void grpc_unlink_if_unix_domain_socket(
"Unix domain sockets are not supported on Windows");
}
+grpc_error* grpc_resolve_unix_abstract_domain_address(
+ absl::string_view, grpc_resolved_addresses** addresses) {
+ *addresses = NULL;
+ return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
+ "Unix domain sockets are not supported on Windows");
+}
+
int grpc_is_unix_socket(const grpc_resolved_address* addr) { return false; }
void grpc_unlink_if_unix_domain_socket(const grpc_resolved_address* addr) {}
static grpc_error* pipe_wakeup(grpc_wakeup_fd* fd_info) {
char c = 0;
- while (write(fd_info->write_fd, &c, 1) != 1 && errno == EINTR)
- ;
+ while (write(fd_info->write_fd, &c, 1) != 1 && errno == EINTR) {
+ }
return GRPC_ERROR_NONE;
}
}
// Moveable.
- Json(Json&& other) { MoveFrom(std::move(other)); }
- Json& operator=(Json&& other) {
+ Json(Json&& other) noexcept { MoveFrom(std::move(other)); }
+ Json& operator=(Json&& other) noexcept {
MoveFrom(std::move(other));
return *this;
}
/* This is the \\ case. */
case State::GRPC_JSON_STATE_STRING_ESCAPE:
- if (unicode_high_surrogate_ != 0)
+ if (unicode_high_surrogate_ != 0) {
return Status::GRPC_JSON_PARSE_ERROR;
+ }
StringAddChar('\\');
if (escaped_string_was_key_) {
state_ = State::GRPC_JSON_STATE_OBJECT_KEY_STRING;
*/
if ((unicode_char_ & 0xfc00) == 0xd800) {
/* high surrogate utf-16 */
- if (unicode_high_surrogate_ != 0)
+ if (unicode_high_surrogate_ != 0) {
return Status::GRPC_JSON_PARSE_ERROR;
+ }
unicode_high_surrogate_ = unicode_char_;
} else if ((unicode_char_ & 0xfc00) == 0xdc00) {
/* low surrogate utf-16 */
uint32_t utf32;
- if (unicode_high_surrogate_ == 0)
+ if (unicode_high_surrogate_ == 0) {
return Status::GRPC_JSON_PARSE_ERROR;
+ }
utf32 = 0x10000;
utf32 += static_cast<uint32_t>(
(unicode_high_surrogate_ - 0xd800) * 0x400);
unicode_high_surrogate_ = 0;
} else {
/* anything else */
- if (unicode_high_surrogate_ != 0)
+ if (unicode_high_surrogate_ != 0) {
return Status::GRPC_JSON_PARSE_ERROR;
+ }
StringAddUtf32(unicode_char_);
}
if (escaped_string_was_key_) {
#include <grpc/support/port_platform.h>
+#include "absl/strings/numbers.h"
+#include "absl/strings/str_cat.h"
+
#include "src/core/lib/iomgr/exec_ctx.h"
#include "src/core/lib/json/json.h"
// Returns true on success, false otherwise.
bool ParseDurationFromJson(const Json& field, grpc_millis* duration);
+//
+// Helper functions for extracting types from JSON.
+// Return true on success, false otherwise. If an error is encountered during
+// parsing, a descriptive error is appended to \a error_list.
+//
+template <typename NumericType, typename ErrorVectorType>
+inline bool ExtractJsonNumber(const Json& json, const std::string& field_name,
+ NumericType* output,
+ ErrorVectorType* error_list) {
+ static_assert(std::is_integral<NumericType>::value, "Integral required");
+ if (json.type() != Json::Type::NUMBER) {
+ error_list->push_back(GRPC_ERROR_CREATE_FROM_COPIED_STRING(
+ absl::StrCat("field:", field_name, " error:type should be NUMBER")
+ .c_str()));
+ return false;
+ }
+ if (!absl::SimpleAtoi(json.string_value(), output)) {
+ error_list->push_back(GRPC_ERROR_CREATE_FROM_COPIED_STRING(
+ absl::StrCat("field:", field_name, " error:failed to parse.").c_str()));
+ return false;
+ }
+ return true;
+}
+
+template <typename ErrorVectorType>
+inline bool ExtractJsonBool(const Json& json, const std::string& field_name,
+ bool* output, ErrorVectorType* error_list) {
+ switch (json.type()) {
+ case Json::Type::JSON_TRUE:
+ *output = true;
+ return true;
+ case Json::Type::JSON_FALSE:
+ *output = false;
+ return true;
+ default:
+ error_list->push_back(GRPC_ERROR_CREATE_FROM_COPIED_STRING(
+ absl::StrCat("field:", field_name, " error:type should be BOOLEAN")
+ .c_str()));
+ return false;
+ }
+}
+
+template <typename ErrorVectorType>
+inline bool ExtractJsonString(const Json& json, const std::string& field_name,
+ std::string* output,
+ ErrorVectorType* error_list) {
+ if (json.type() != Json::Type::STRING) {
+ *output = "";
+ error_list->push_back(GRPC_ERROR_CREATE_FROM_COPIED_STRING(
+ absl::StrCat("field:", field_name, " error:type should be STRING")
+ .c_str()));
+ return false;
+ }
+ *output = json.string_value();
+ return true;
+}
+
+template <typename ErrorVectorType>
+inline bool ExtractJsonArray(const Json& json, const std::string& field_name,
+ const Json::Array** output,
+ ErrorVectorType* error_list) {
+ if (json.type() != Json::Type::ARRAY) {
+ *output = nullptr;
+ error_list->push_back(GRPC_ERROR_CREATE_FROM_COPIED_STRING(
+ absl::StrCat("field:", field_name, " error:type should be ARRAY")
+ .c_str()));
+ return false;
+ }
+ *output = &json.array_value();
+ return true;
+}
+
+template <typename ErrorVectorType>
+inline bool ExtractJsonObject(const Json& json, const std::string& field_name,
+ const Json::Object** output,
+ ErrorVectorType* error_list) {
+ if (json.type() != Json::Type::OBJECT) {
+ *output = nullptr;
+ error_list->push_back(GRPC_ERROR_CREATE_FROM_COPIED_STRING(
+ absl::StrCat("field:", field_name, " error:type should be OBJECT")
+ .c_str()));
+ return false;
+ }
+ *output = &json.object_value();
+ return true;
+}
+
+template <typename NumericType, typename ErrorVectorType>
+inline bool ExtractJsonType(const Json& json, const std::string& field_name,
+ NumericType* output, ErrorVectorType* error_list) {
+ return ExtractJsonNumber(json, field_name, output, error_list);
+}
+
+template <typename ErrorVectorType>
+inline bool ExtractJsonType(const Json& json, const std::string& field_name,
+ bool* output, ErrorVectorType* error_list) {
+ return ExtractJsonBool(json, field_name, output, error_list);
+}
+
+template <typename ErrorVectorType>
+inline bool ExtractJsonType(const Json& json, const std::string& field_name,
+ std::string* output, ErrorVectorType* error_list) {
+ return ExtractJsonString(json, field_name, output, error_list);
+}
+
+template <typename ErrorVectorType>
+inline bool ExtractJsonType(const Json& json, const std::string& field_name,
+ const Json::Array** output,
+ ErrorVectorType* error_list) {
+ return ExtractJsonArray(json, field_name, output, error_list);
+}
+
+template <typename ErrorVectorType>
+inline bool ExtractJsonType(const Json& json, const std::string& field_name,
+ const Json::Object** output,
+ ErrorVectorType* error_list) {
+ return ExtractJsonObject(json, field_name, output, error_list);
+}
+
+template <typename T, typename ErrorVectorType>
+inline bool ParseJsonObjectField(const Json::Object& object,
+ const std::string& field_name, T* output,
+ ErrorVectorType* error_list,
+ bool required = true) {
+ auto it = object.find(field_name);
+ if (it == object.end()) {
+ if (required) {
+ error_list->push_back(GRPC_ERROR_CREATE_FROM_COPIED_STRING(
+ absl::StrCat("field:", field_name, " error:does not exist.")
+ .c_str()));
+ }
+ return false;
+ }
+ auto& child_object_json = it->second;
+ return ExtractJsonType(child_object_json, field_name, output, error_list);
+}
+
+template <typename ErrorVectorType>
+inline bool ParseJsonObjectFieldAsDuration(const Json::Object& object,
+ const std::string& field_name,
+ grpc_millis* output,
+ ErrorVectorType* error_list,
+ bool required = true) {
+ auto it = object.find(field_name);
+ if (it == object.end()) {
+ if (required) {
+ error_list->push_back(GRPC_ERROR_CREATE_FROM_COPIED_STRING(
+ absl::StrCat("field:", field_name, " error:does not exist.")
+ .c_str()));
+ }
+ return false;
+ }
+ if (!ParseDurationFromJson(it->second, output)) {
+ *output = GRPC_MILLIS_INF_PAST;
+ error_list->push_back(GRPC_ERROR_CREATE_FROM_COPIED_STRING(
+ absl::StrCat("field:", field_name,
+ " error:type should be STRING of the form given by "
+ "google.proto.Duration.")
+ .c_str()));
+ return false;
+ }
+ return true;
+}
+
} // namespace grpc_core
#endif // GRPC_CORE_LIB_JSON_JSON_UTIL_H
* Any other range is technically reserved for future usage, so if we
* don't want the software to break in the future, we have to allow
* anything else. The first non-unicode character is 0x110000. */
- if (((utf32 >= 0xd800) && (utf32 <= 0xdfff)) || (utf32 >= 0x110000))
+ if (((utf32 >= 0xd800) && (utf32 <= 0xdfff)) || (utf32 >= 0x110000)) {
break;
+ }
if (utf32 >= 0x10000) {
/* If utf32 contains a character that is above 0xffff, it needs to be
* broken down into a utf-16 surrogate pair. A surrogate pair is first
#include <memory>
+#include "absl/memory/memory.h"
+
#include "src/core/lib/security/authorization/mock_cel/flat_expr_builder.h"
namespace grpc_core {
bool short_circuiting = true;
};
-std::unique_ptr<CelExpressionBuilder> CreateCelExpressionBuilder(
+inline std::unique_ptr<CelExpressionBuilder> CreateCelExpressionBuilder(
const InterpreterOptions& options) {
return absl::make_unique<FlatExprBuilder>();
}
#include <memory>
#include <vector>
+#include "absl/status/statusor.h"
+
#include "google/api/expr/v1alpha1/syntax.upb.h"
#include "src/core/lib/security/authorization/mock_cel/activation.h"
#include "src/core/lib/security/authorization/mock_cel/cel_value.h"
-#include "src/core/lib/security/authorization/mock_cel/statusor.h"
namespace grpc_core {
namespace mock_cel {
// Evaluates expression and returns value.
// activation contains bindings from parameter names to values
- virtual StatusOr<CelValue> Evaluate(
+ virtual absl::StatusOr<CelValue> Evaluate(
const BaseActivation& activation) const = 0;
};
// Creates CelExpression object from AST tree.
// expr specifies root of AST tree
- virtual StatusOr<std::unique_ptr<CelExpression>> CreateExpression(
+ virtual absl::StatusOr<std::unique_ptr<CelExpression>> CreateExpression(
const google_api_expr_v1alpha1_Expr* expr,
const google_api_expr_v1alpha1_SourceInfo* source_info) const = 0;
- virtual StatusOr<std::unique_ptr<CelExpression>> CreateExpression(
+ virtual absl::StatusOr<std::unique_ptr<CelExpression>> CreateExpression(
const google_api_expr_v1alpha1_Expr* expr,
const google_api_expr_v1alpha1_SourceInfo* source_info,
std::vector<absl::Status>* warnings) const = 0;
#include <grpc/support/port_platform.h>
+#include <memory>
+
+#include "absl/memory/memory.h"
#include "absl/strings/string_view.h"
+#include "absl/types/span.h"
namespace grpc_core {
namespace mock_cel {
#include <set>
#include <vector>
+#include "absl/status/statusor.h"
+
#include "google/api/expr/v1alpha1/syntax.upb.h"
#include "src/core/lib/security/authorization/mock_cel/activation.h"
#include "src/core/lib/security/authorization/mock_cel/cel_expression.h"
#include "src/core/lib/security/authorization/mock_cel/cel_value.h"
-#include "src/core/lib/security/authorization/mock_cel/statusor.h"
namespace grpc_core {
namespace mock_cel {
// This is a temporary stub implementation of CEL APIs.
// Once gRPC imports the CEL library, this file will be removed.
-class ExpressionStep {
+class ExecutionPath {
public:
- virtual ~ExpressionStep() = default;
+ ExecutionPath() = default;
};
-using ExecutionPath = std::vector<std::unique_ptr<const ExpressionStep>>;
-
// Implementation of the CelExpression that utilizes flattening
// of the expression tree.
class CelExpressionFlatImpl : public CelExpression {
bool enable_unknown_function_results = false) {}
// Implementation of CelExpression evaluate method.
- StatusOr<CelValue> Evaluate(const BaseActivation& activation) const override {
+ absl::StatusOr<CelValue> Evaluate(
+ const BaseActivation& activation) const override {
return CelValue::CreateNull();
}
};
public:
FlatExprBuilder() = default;
- cel_base::StatusOr<std::unique_ptr<CelExpression>> CreateExpression(
- const google::api::expr::v1alpha1::Expr* expr,
- const google::api::expr::v1alpha1::SourceInfo* source_info)
- const override {
+ absl::StatusOr<std::unique_ptr<CelExpression>> CreateExpression(
+ const google_api_expr_v1alpha1_Expr* expr,
+ const google_api_expr_v1alpha1_SourceInfo* source_info) const override {
ExecutionPath path;
- return absl::make_unique<CelExpressionFlatImpl>(nullptr, path, 0);
+ return absl::make_unique<CelExpressionFlatImpl>(nullptr, path, 0,
+ std::set<std::string>{});
}
- cel_base::StatusOr<std::unique_ptr<CelExpression>> CreateExpression(
- const google::api::expr::v1alpha1::Expr* expr,
- const google::api::expr::v1alpha1::SourceInfo* source_info,
+ absl::StatusOr<std::unique_ptr<CelExpression>> CreateExpression(
+ const google_api_expr_v1alpha1_Expr* expr,
+ const google_api_expr_v1alpha1_SourceInfo* source_info,
std::vector<absl::Status>* warnings) const override {
ExecutionPath path;
- return absl::make_unique<CelExpressionFlatImpl>(nullptr, path, 0);
+ return absl::make_unique<CelExpressionFlatImpl>(nullptr, path, 0,
+ std::set<std::string>{});
}
};
grpc_core::RefCountedPtr<grpc_auth_context> chained)
: grpc_core::RefCounted<grpc_auth_context,
grpc_core::NonPolymorphicRefCount>(
- &grpc_trace_auth_context_refcount),
+ GRPC_TRACE_FLAG_ENABLED(grpc_trace_auth_context_refcount)
+ ? "auth_context_refcount"
+ : nullptr),
chained_(std::move(chained)) {
if (chained_ != nullptr) {
peer_identity_property_name_ = chained_->peer_identity_property_name_;
grpc_channel_credentials* grpc_channel_credentials_from_arg(
const grpc_arg* arg) {
- if (strcmp(arg->key, GRPC_ARG_CHANNEL_CREDENTIALS)) return nullptr;
+ if (strcmp(arg->key, GRPC_ARG_CHANNEL_CREDENTIALS) != 0) return nullptr;
if (arg->type != GRPC_ARG_POINTER) {
gpr_log(GPR_ERROR, "Invalid type %d for arg %s", arg->type,
GRPC_ARG_CHANNEL_CREDENTIALS);
: grpc_core::RefCounted<grpc_channel_credentials> {
public:
explicit grpc_channel_credentials(const char* type) : type_(type) {}
- virtual ~grpc_channel_credentials() = default;
+ ~grpc_channel_credentials() override = default;
// Creates a security connector for the channel. May also create new channel
// args for the channel to be used in place of the passed in const args if
grpc_security_level min_security_level = GRPC_PRIVACY_AND_INTEGRITY)
: type_(type), min_security_level_(min_security_level) {}
- virtual ~grpc_call_credentials() = default;
+ ~grpc_call_credentials() override = default;
// Returns true if completed synchronously, in which case \a error will
// be set to indicate the result. Otherwise, \a on_request_metadata will
public:
explicit grpc_server_credentials(const char* type) : type_(type) {}
- virtual ~grpc_server_credentials() { DestroyProcessor(); }
+ ~grpc_server_credentials() override { DestroyProcessor(); }
virtual grpc_core::RefCountedPtr<grpc_server_security_connector>
create_security_connector() = 0;
--- /dev/null
+//
+// Copyright 2020 gRPC authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+#include <grpc/support/port_platform.h>
+
+#include "src/core/lib/security/credentials/external/aws_request_signer.h"
+
+#include "absl/strings/ascii.h"
+#include "absl/strings/escaping.h"
+#include "absl/strings/str_format.h"
+#include "absl/strings/str_join.h"
+#include "absl/strings/str_split.h"
+#include "absl/time/clock.h"
+#include "absl/time/time.h"
+
+#include <openssl/hmac.h>
+#include <openssl/sha.h>
+
+namespace grpc_core {
+
+namespace {
+
+const char kAlgorithm[] = "AWS4-HMAC-SHA256";
+const char kDateFormat[] = "%a, %d %b %E4Y %H:%M:%S %Z";
+const char kXAmzDateFormat[] = "%Y%m%dT%H%M%SZ";
+
+void SHA256(const std::string& str, unsigned char out[SHA256_DIGEST_LENGTH]) {
+ SHA256_CTX sha256;
+ SHA256_Init(&sha256);
+ SHA256_Update(&sha256, str.c_str(), str.size());
+ SHA256_Final(out, &sha256);
+}
+
+std::string SHA256Hex(const std::string& str) {
+ unsigned char hash[SHA256_DIGEST_LENGTH];
+ SHA256(str, hash);
+ std::string hash_str(reinterpret_cast<char const*>(hash),
+ SHA256_DIGEST_LENGTH);
+ return absl::BytesToHexString(hash_str);
+}
+
+std::string HMAC(const std::string& key, const std::string& msg) {
+ unsigned int len;
+ unsigned char digest[EVP_MAX_MD_SIZE];
+ HMAC(EVP_sha256(), key.c_str(), key.length(),
+ (const unsigned char*)msg.c_str(), msg.length(), digest, &len);
+ return std::string(digest, digest + len);
+}
+
+} // namespace
+
+AwsRequestSigner::AwsRequestSigner(
+ std::string access_key_id, std::string secret_access_key, std::string token,
+ std::string method, std::string url, std::string region,
+ std::string request_payload,
+ std::map<std::string, std::string> additional_headers, grpc_error** error)
+ : access_key_id_(std::move(access_key_id)),
+ secret_access_key_(std::move(secret_access_key)),
+ token_(std::move(token)),
+ method_(std::move(method)),
+ region_(std::move(region)),
+ request_payload_(std::move(request_payload)),
+ additional_headers_(std::move(additional_headers)) {
+ auto amz_date_it = additional_headers_.find("x-amz-date");
+ auto date_it = additional_headers_.find("date");
+ if (amz_date_it != additional_headers_.end() &&
+ date_it != additional_headers_.end()) {
+ *error = GRPC_ERROR_CREATE_FROM_STATIC_STRING(
+ "Only one of {date, x-amz-date} can be specified, not both.");
+ return;
+ }
+ if (amz_date_it != additional_headers_.end()) {
+ static_request_date_ = amz_date_it->second;
+ } else if (date_it != additional_headers_.end()) {
+ absl::Time request_date;
+ std::string err_str;
+ if (!absl::ParseTime(kDateFormat, date_it->second, &request_date,
+ &err_str)) {
+ *error = GRPC_ERROR_CREATE_FROM_STATIC_STRING(err_str.c_str());
+ return;
+ }
+ static_request_date_ =
+ absl::FormatTime(kXAmzDateFormat, request_date, absl::UTCTimeZone());
+ }
+ url_ = grpc_uri_parse(url, false);
+ if (url_ == nullptr) {
+ *error = GRPC_ERROR_CREATE_FROM_STATIC_STRING("Invalid Aws request url.");
+ return;
+ }
+}
+
+AwsRequestSigner::~AwsRequestSigner() { grpc_uri_destroy(url_); }
+
+std::map<std::string, std::string> AwsRequestSigner::GetSignedRequestHeaders() {
+ std::string request_date_full;
+ if (!static_request_date_.empty()) {
+ if (!request_headers_.empty()) {
+ return request_headers_;
+ }
+ request_date_full = static_request_date_;
+ } else {
+ absl::Time request_date = absl::Now();
+ request_date_full =
+ absl::FormatTime(kXAmzDateFormat, request_date, absl::UTCTimeZone());
+ }
+ std::string request_date_short = request_date_full.substr(0, 8);
+ // TASK 1: Create a canonical request for Signature Version 4
+ // https://docs.aws.amazon.com/general/latest/gr/sigv4-create-canonical-request.html
+ std::vector<absl::string_view> canonical_request_vector;
+ // 1. HTTPRequestMethod
+ canonical_request_vector.emplace_back(method_);
+ canonical_request_vector.emplace_back("\n");
+ // 2. CanonicalURI
+
+ canonical_request_vector.emplace_back(*url_->path == '\0' ? "/" : url_->path);
+ canonical_request_vector.emplace_back("\n");
+ // 3. CanonicalQueryString
+ canonical_request_vector.emplace_back(url_->query);
+ canonical_request_vector.emplace_back("\n");
+ // 4. CanonicalHeaders
+ if (request_headers_.empty()) {
+ request_headers_.insert({"host", url_->authority});
+ if (!token_.empty()) {
+ request_headers_.insert({"x-amz-security-token", token_});
+ }
+ for (const auto& header : additional_headers_) {
+ request_headers_.insert(
+ {absl::AsciiStrToLower(header.first), header.second});
+ }
+ }
+ if (additional_headers_.find("date") == additional_headers_.end()) {
+ request_headers_["x-amz-date"] = request_date_full;
+ }
+ std::vector<absl::string_view> canonical_headers_vector;
+ for (const auto& header : request_headers_) {
+ canonical_headers_vector.emplace_back(header.first);
+ canonical_headers_vector.emplace_back(":");
+ canonical_headers_vector.emplace_back(header.second);
+ canonical_headers_vector.emplace_back("\n");
+ }
+ std::string canonical_headers = absl::StrJoin(canonical_headers_vector, "");
+ canonical_request_vector.emplace_back(canonical_headers);
+ canonical_request_vector.emplace_back("\n");
+ // 5. SignedHeaders
+ std::vector<absl::string_view> signed_headers_vector;
+ for (const auto& header : request_headers_) {
+ signed_headers_vector.emplace_back(header.first);
+ }
+ std::string signed_headers = absl::StrJoin(signed_headers_vector, ";");
+ canonical_request_vector.emplace_back(signed_headers);
+ canonical_request_vector.emplace_back("\n");
+ // 6. RequestPayload
+ std::string hashed_request_payload = SHA256Hex(request_payload_);
+ canonical_request_vector.emplace_back(hashed_request_payload);
+ std::string canonical_request = absl::StrJoin(canonical_request_vector, "");
+ // TASK 2: Create a string to sign for Signature Version 4
+ // https://docs.aws.amazon.com/general/latest/gr/sigv4-create-string-to-sign.html
+ std::vector<absl::string_view> string_to_sign_vector;
+ // 1. Algorithm
+ string_to_sign_vector.emplace_back("AWS4-HMAC-SHA256");
+ string_to_sign_vector.emplace_back("\n");
+ // 2. RequestDateTime
+ string_to_sign_vector.emplace_back(request_date_full);
+ string_to_sign_vector.emplace_back("\n");
+ // 3. CredentialScope
+ std::pair<absl::string_view, absl::string_view> host_parts =
+ absl::StrSplit(url_->authority, absl::MaxSplits('.', 1));
+ std::string service_name(host_parts.first);
+ std::string credential_scope = absl::StrFormat(
+ "%s/%s/%s/aws4_request", request_date_short, region_, service_name);
+ string_to_sign_vector.emplace_back(credential_scope);
+ string_to_sign_vector.emplace_back("\n");
+ // 4. HashedCanonicalRequest
+ std::string hashed_canonical_request = SHA256Hex(canonical_request);
+ string_to_sign_vector.emplace_back(hashed_canonical_request);
+ std::string string_to_sign = absl::StrJoin(string_to_sign_vector, "");
+ // TASK 3: Task 3: Calculate the signature for AWS Signature Version 4
+ // https://docs.aws.amazon.com/general/latest/gr/sigv4-calculate-signature.html
+ // 1. Derive your signing key.
+ std::string date = HMAC("AWS4" + secret_access_key_, request_date_short);
+ std::string region = HMAC(date, region_);
+ std::string service = HMAC(region, service_name);
+ std::string signing = HMAC(service, "aws4_request");
+ // 2. Calculate the signature.
+ std::string signature_str = HMAC(signing, string_to_sign);
+ std::string signature = absl::BytesToHexString(signature_str);
+ // TASK 4: Add the signature to the HTTP request
+ // https://docs.aws.amazon.com/general/latest/gr/sigv4-add-signature-to-request.html
+ std::string authorization_header = absl::StrFormat(
+ "%s Credential=%s/%s, SignedHeaders=%s, Signature=%s", kAlgorithm,
+ access_key_id_, credential_scope, signed_headers, signature);
+ request_headers_["Authorization"] = authorization_header;
+ return request_headers_;
+}
+
+} // namespace grpc_core
--- /dev/null
+//
+// Copyright 2020 gRPC authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+#ifndef GRPC_CORE_LIB_SECURITY_CREDENTIALS_EXTERNAL_AWS_REQUEST_SIGNER_H
+#define GRPC_CORE_LIB_SECURITY_CREDENTIALS_EXTERNAL_AWS_REQUEST_SIGNER_H
+
+#include <grpc/support/port_platform.h>
+
+#include <map>
+#include <string>
+
+#include "src/core/lib/iomgr/error.h"
+#include "src/core/lib/uri/uri_parser.h"
+
+namespace grpc_core {
+
+// Implements an AWS API request signer based on the AWS Signature Version 4
+// signing process.
+// https://docs.aws.amazon.com/general/latest/gr/signature-version-4.html
+// To retrieve the subject token in AwsExternalAccountCredentials, we need to
+// sign an AWS request server and use the signed request as the subject token.
+// This class is a utility to sign an AWS request.
+class AwsRequestSigner {
+ public:
+ // Construct a signer with the necessary information to sign a request.
+ // `access_key_id`, `secret_access_key` and `token` are the AWS credentials
+ // required for signing. `method` and `url` are the HTTP method and url of the
+ // request. `region` is the region of the AWS environment. `request_payload`
+ // is the payload of the HTTP request. `additional_headers` are additional
+ // headers to be inject into the request.
+ AwsRequestSigner(std::string access_key_id, std::string secret_access_key,
+ std::string token, std::string method, std::string url,
+ std::string region, std::string request_payload,
+ std::map<std::string, std::string> additional_headers,
+ grpc_error** error);
+ ~AwsRequestSigner();
+
+ // This method triggers the signing process then returns the headers of the
+ // signed request as a map. In case there is an error, the input `error`
+ // parameter will be updated and an empty map will be returned if there is
+ // error.
+ std::map<std::string, std::string> GetSignedRequestHeaders();
+
+ private:
+ std::string access_key_id_;
+ std::string secret_access_key_;
+ std::string token_;
+ std::string method_;
+ grpc_uri* url_ = nullptr;
+ std::string region_;
+ std::string request_payload_;
+ std::map<std::string, std::string> additional_headers_;
+
+ std::string static_request_date_;
+ std::map<std::string, std::string> request_headers_;
+};
+
+} // namespace grpc_core
+
+#endif // GRPC_CORE_LIB_SECURITY_CREDENTIALS_EXTERNAL_AWS_REQUEST_SIGNER_H
--- /dev/null
+//
+// Copyright 2020 gRPC authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+#include <grpc/support/port_platform.h>
+
+#include "src/core/lib/security/credentials/external/external_account_credentials.h"
+
+#include "absl/strings/str_format.h"
+#include "absl/strings/str_join.h"
+#include "absl/time/clock.h"
+#include "absl/time/time.h"
+
+#include "src/core/lib/http/parser.h"
+#include "src/core/lib/security/util/json_util.h"
+#include "src/core/lib/slice/b64.h"
+
+#define EXTERNAL_ACCOUNT_CREDENTIALS_GRANT_TYPE \
+ "urn:ietf:params:oauth:grant-type:token-exchange"
+#define EXTERNAL_ACCOUNT_CREDENTIALS_REQUESTED_TOKEN_TYPE \
+ "urn:ietf:params:oauth:token-type:access_token"
+#define GOOGLE_CLOUD_PLATFORM_DEFAULT_SCOPE \
+ "https://www.googleapis.com/auth/cloud-platform"
+
+namespace grpc_core {
+
+ExternalAccountCredentials::ExternalAccountCredentials(
+ ExternalAccountCredentialsOptions options, std::vector<std::string> scopes)
+ : options_(std::move(options)) {
+ if (scopes.empty()) {
+ scopes.push_back(GOOGLE_CLOUD_PLATFORM_DEFAULT_SCOPE);
+ }
+ scopes_ = std::move(scopes);
+}
+
+ExternalAccountCredentials::~ExternalAccountCredentials() {}
+
+std::string ExternalAccountCredentials::debug_string() {
+ return absl::StrFormat("ExternalAccountCredentials{Audience:%s,%s}",
+ options_.audience,
+ grpc_oauth2_token_fetcher_credentials::debug_string());
+}
+
+// The token fetching flow:
+// 1. Retrieve subject token - Subclass's RetrieveSubjectToken() gets called
+// and the subject token is received in OnRetrieveSubjectTokenInternal().
+// 2. Exchange token - ExchangeToken() gets called with the
+// subject token from #1. Receive the response in OnExchangeTokenInternal().
+// 3. (Optional) Impersonate service account - ImpersenateServiceAccount() gets
+// called with the access token of the response from #2. Get an impersonated
+// access token in OnImpersenateServiceAccountInternal().
+// 4. Finish token fetch - Return back the response that contains an access
+// token in FinishTokenFetch().
+// TODO(chuanr): Avoid starting the remaining requests if the channel gets shut
+// down.
+void ExternalAccountCredentials::fetch_oauth2(
+ grpc_credentials_metadata_request* metadata_req,
+ grpc_httpcli_context* httpcli_context, grpc_polling_entity* pollent,
+ grpc_iomgr_cb_func response_cb, grpc_millis deadline) {
+ GPR_ASSERT(ctx_ == nullptr);
+ ctx_ = new HTTPRequestContext(httpcli_context, pollent, deadline);
+ metadata_req_ = metadata_req;
+ response_cb_ = response_cb;
+ auto cb = [this](std::string token, grpc_error* error) {
+ OnRetrieveSubjectTokenInternal(token, error);
+ };
+ RetrieveSubjectToken(ctx_, options_, cb);
+}
+
+void ExternalAccountCredentials::OnRetrieveSubjectTokenInternal(
+ absl::string_view subject_token, grpc_error* error) {
+ if (error != GRPC_ERROR_NONE) {
+ FinishTokenFetch(error);
+ } else {
+ ExchangeToken(subject_token);
+ }
+}
+
+void ExternalAccountCredentials::ExchangeToken(
+ absl::string_view subject_token) {
+ grpc_uri* uri = grpc_uri_parse(options_.token_url, false);
+ if (uri == nullptr) {
+ FinishTokenFetch(GRPC_ERROR_CREATE_FROM_COPIED_STRING(
+ absl::StrFormat("Invalid token url: %s.", options_.token_url).c_str()));
+ return;
+ }
+ grpc_httpcli_request request;
+ memset(&request, 0, sizeof(grpc_httpcli_request));
+ request.host = const_cast<char*>(uri->authority);
+ request.http.path = gpr_strdup(uri->path);
+ grpc_http_header* headers = nullptr;
+ if (!options_.client_id.empty() && !options_.client_secret.empty()) {
+ request.http.hdr_count = 2;
+ headers = static_cast<grpc_http_header*>(
+ gpr_malloc(sizeof(grpc_http_header) * request.http.hdr_count));
+ headers[0].key = gpr_strdup("Content-Type");
+ headers[0].value = gpr_strdup("application/x-www-form-urlencoded");
+ std::string raw_cred =
+ absl::StrFormat("%s:%s", options_.client_id, options_.client_secret);
+ char* encoded_cred =
+ grpc_base64_encode(raw_cred.c_str(), raw_cred.length(), 0, 0);
+ std::string str = absl::StrFormat("Basic %s", std::string(encoded_cred));
+ headers[1].key = gpr_strdup("Authorization");
+ headers[1].value = gpr_strdup(str.c_str());
+ gpr_free(encoded_cred);
+ } else {
+ request.http.hdr_count = 1;
+ headers = static_cast<grpc_http_header*>(
+ gpr_malloc(sizeof(grpc_http_header) * request.http.hdr_count));
+ headers[0].key = gpr_strdup("Content-Type");
+ headers[0].value = gpr_strdup("application/x-www-form-urlencoded");
+ }
+ request.http.hdrs = headers;
+ request.handshaker = (strcmp(uri->scheme, "https") == 0)
+ ? &grpc_httpcli_ssl
+ : &grpc_httpcli_plaintext;
+ std::vector<std::string> body_parts;
+ body_parts.push_back(absl::StrFormat("%s=%s", "audience", options_.audience));
+ body_parts.push_back(absl::StrFormat(
+ "%s=%s", "grant_type", EXTERNAL_ACCOUNT_CREDENTIALS_GRANT_TYPE));
+ body_parts.push_back(
+ absl::StrFormat("%s=%s", "requested_token_type",
+ EXTERNAL_ACCOUNT_CREDENTIALS_REQUESTED_TOKEN_TYPE));
+ body_parts.push_back(absl::StrFormat("%s=%s", "subject_token_type",
+ options_.subject_token_type));
+ body_parts.push_back(
+ absl::StrFormat("%s=%s", "subject_token", subject_token));
+ std::string scope = GOOGLE_CLOUD_PLATFORM_DEFAULT_SCOPE;
+ if (options_.service_account_impersonation_url.empty()) {
+ scope = absl::StrJoin(scopes_, " ");
+ }
+ body_parts.push_back(absl::StrFormat("%s=%s", "scope", scope));
+ std::string body = absl::StrJoin(body_parts, "&");
+ grpc_resource_quota* resource_quota =
+ grpc_resource_quota_create("external_account_credentials");
+ grpc_http_response_destroy(&ctx_->response);
+ ctx_->response = {};
+ GRPC_CLOSURE_INIT(&ctx_->closure, OnExchangeToken, this, nullptr);
+ grpc_httpcli_post(ctx_->httpcli_context, ctx_->pollent, resource_quota,
+ &request, body.c_str(), body.size(), ctx_->deadline,
+ &ctx_->closure, &ctx_->response);
+ grpc_resource_quota_unref_internal(resource_quota);
+ grpc_http_request_destroy(&request.http);
+ grpc_uri_destroy(uri);
+}
+
+void ExternalAccountCredentials::OnExchangeToken(void* arg, grpc_error* error) {
+ ExternalAccountCredentials* self =
+ static_cast<ExternalAccountCredentials*>(arg);
+ self->OnExchangeTokenInternal(GRPC_ERROR_REF(error));
+}
+
+void ExternalAccountCredentials::OnExchangeTokenInternal(grpc_error* error) {
+ if (error != GRPC_ERROR_NONE) {
+ FinishTokenFetch(error);
+ } else {
+ if (options_.service_account_impersonation_url.empty()) {
+ metadata_req_->response = ctx_->response;
+ metadata_req_->response.body = gpr_strdup(ctx_->response.body);
+ FinishTokenFetch(GRPC_ERROR_NONE);
+ } else {
+ ImpersenateServiceAccount();
+ }
+ }
+}
+
+void ExternalAccountCredentials::ImpersenateServiceAccount() {
+ grpc_error* error = GRPC_ERROR_NONE;
+ absl::string_view response_body(ctx_->response.body,
+ ctx_->response.body_length);
+ Json json = Json::Parse(response_body, &error);
+ if (error != GRPC_ERROR_NONE || json.type() != Json::Type::OBJECT) {
+ FinishTokenFetch(GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
+ "Invalid token exchange response.", &error, 1));
+ GRPC_ERROR_UNREF(error);
+ return;
+ }
+ auto it = json.object_value().find("access_token");
+ if (it == json.object_value().end() ||
+ it->second.type() != Json::Type::STRING) {
+ FinishTokenFetch(GRPC_ERROR_CREATE_FROM_COPIED_STRING(
+ absl::StrFormat("Missing or invalid access_token in %s.", response_body)
+ .c_str()));
+ return;
+ }
+ std::string access_token = it->second.string_value();
+ grpc_uri* uri =
+ grpc_uri_parse(options_.service_account_impersonation_url, false);
+ if (uri == nullptr) {
+ FinishTokenFetch(GRPC_ERROR_CREATE_FROM_COPIED_STRING(
+ absl::StrFormat("Invalid service account impersonation url: %s.",
+ options_.service_account_impersonation_url)
+ .c_str()));
+ return;
+ }
+ grpc_httpcli_request request;
+ memset(&request, 0, sizeof(grpc_httpcli_request));
+ request.host = const_cast<char*>(uri->authority);
+ request.http.path = gpr_strdup(uri->path);
+ request.http.hdr_count = 2;
+ grpc_http_header* headers = static_cast<grpc_http_header*>(
+ gpr_malloc(sizeof(grpc_http_header) * request.http.hdr_count));
+ headers[0].key = gpr_strdup("Content-Type");
+ headers[0].value = gpr_strdup("application/x-www-form-urlencoded");
+ std::string str = absl::StrFormat("Bearer %s", access_token);
+ headers[1].key = gpr_strdup("Authorization");
+ headers[1].value = gpr_strdup(str.c_str());
+ request.http.hdrs = headers;
+ request.handshaker = (strcmp(uri->scheme, "https") == 0)
+ ? &grpc_httpcli_ssl
+ : &grpc_httpcli_plaintext;
+ std::string scope = absl::StrJoin(scopes_, " ");
+ std::string body = absl::StrFormat("%s=%s", "scope", scope);
+ grpc_resource_quota* resource_quota =
+ grpc_resource_quota_create("external_account_credentials");
+ grpc_http_response_destroy(&ctx_->response);
+ ctx_->response = {};
+ GRPC_CLOSURE_INIT(&ctx_->closure, OnImpersenateServiceAccount, this, nullptr);
+ grpc_httpcli_post(ctx_->httpcli_context, ctx_->pollent, resource_quota,
+ &request, body.c_str(), body.size(), ctx_->deadline,
+ &ctx_->closure, &ctx_->response);
+ grpc_resource_quota_unref_internal(resource_quota);
+ grpc_http_request_destroy(&request.http);
+ grpc_uri_destroy(uri);
+}
+
+void ExternalAccountCredentials::OnImpersenateServiceAccount(
+ void* arg, grpc_error* error) {
+ ExternalAccountCredentials* self =
+ static_cast<ExternalAccountCredentials*>(arg);
+ self->OnImpersenateServiceAccountInternal(GRPC_ERROR_REF(error));
+}
+
+void ExternalAccountCredentials::OnImpersenateServiceAccountInternal(
+ grpc_error* error) {
+ if (error != GRPC_ERROR_NONE) {
+ FinishTokenFetch(error);
+ return;
+ }
+ absl::string_view response_body(ctx_->response.body,
+ ctx_->response.body_length);
+ Json json = Json::Parse(response_body, &error);
+ if (error != GRPC_ERROR_NONE || json.type() != Json::Type::OBJECT) {
+ FinishTokenFetch(GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
+ "Invalid service account impersonation response.", &error, 1));
+ GRPC_ERROR_UNREF(error);
+ return;
+ }
+ auto it = json.object_value().find("accessToken");
+ if (it == json.object_value().end() ||
+ it->second.type() != Json::Type::STRING) {
+ FinishTokenFetch(GRPC_ERROR_CREATE_FROM_COPIED_STRING(
+ absl::StrFormat("Missing or invalid accessToken in %s.", response_body)
+ .c_str()));
+ return;
+ }
+ std::string access_token = it->second.string_value();
+ it = json.object_value().find("expireTime");
+ if (it == json.object_value().end() ||
+ it->second.type() != Json::Type::STRING) {
+ FinishTokenFetch(GRPC_ERROR_CREATE_FROM_COPIED_STRING(
+ absl::StrFormat("Missing or invalid expireTime in %s.", response_body)
+ .c_str()));
+ return;
+ }
+ std::string expire_time = it->second.string_value();
+ absl::Time t;
+ if (!absl::ParseTime(absl::RFC3339_full, expire_time, &t, nullptr)) {
+ FinishTokenFetch(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
+ "Invalid expire time of service account impersonation response."));
+ return;
+ }
+ int expire_in = (t - absl::Now()) / absl::Seconds(1);
+ std::string body = absl::StrFormat(
+ "{\"access_token\":\"%s\",\"expires_in\":%d,\"token_type\":\"Bearer\"}",
+ access_token, expire_in);
+ metadata_req_->response = ctx_->response;
+ metadata_req_->response.body = gpr_strdup(body.c_str());
+ metadata_req_->response.body_length = body.length();
+ FinishTokenFetch(GRPC_ERROR_NONE);
+}
+
+void ExternalAccountCredentials::FinishTokenFetch(grpc_error* error) {
+ GRPC_LOG_IF_ERROR("Fetch external account credentials access token",
+ GRPC_ERROR_REF(error));
+ // Move object state into local variables.
+ auto* cb = response_cb_;
+ response_cb_ = nullptr;
+ auto* metadata_req = metadata_req_;
+ metadata_req_ = nullptr;
+ auto* ctx = ctx_;
+ ctx_ = nullptr;
+ // Invoke the callback.
+ cb(metadata_req, error);
+ // Delete context.
+ delete ctx;
+ GRPC_ERROR_UNREF(error);
+}
+
+} // namespace grpc_core
--- /dev/null
+//
+// Copyright 2020 gRPC authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+#ifndef GRPC_CORE_LIB_SECURITY_CREDENTIALS_EXTERNAL_EXTERNAL_ACCOUNT_CREDENTIALS_H
+#define GRPC_CORE_LIB_SECURITY_CREDENTIALS_EXTERNAL_EXTERNAL_ACCOUNT_CREDENTIALS_H
+
+#include <grpc/support/port_platform.h>
+
+#include <string>
+#include <vector>
+
+#include "src/core/lib/json/json.h"
+#include "src/core/lib/security/credentials/oauth2/oauth2_credentials.h"
+
+namespace grpc_core {
+
+// Base external account credentials. The base class implements common logic for
+// exchanging external account credentials for GCP access token to authorize
+// requests to GCP APIs. The specific logic of retrieving subject token is
+// implemented in subclasses.
+class ExternalAccountCredentials
+ : public grpc_oauth2_token_fetcher_credentials {
+ public:
+ // External account credentials json interface.
+ struct ExternalAccountCredentialsOptions {
+ std::string type;
+ std::string audience;
+ std::string subject_token_type;
+ std::string service_account_impersonation_url;
+ std::string token_url;
+ std::string token_info_url;
+ Json credential_source;
+ std::string quota_project_id;
+ std::string client_id;
+ std::string client_secret;
+ };
+
+ ExternalAccountCredentials(ExternalAccountCredentialsOptions options,
+ std::vector<std::string> scopes);
+ ~ExternalAccountCredentials() override;
+ std::string debug_string() override;
+
+ protected:
+ // This is a helper struct to pass information between multiple callback based
+ // asynchronous calls.
+ struct HTTPRequestContext {
+ HTTPRequestContext(grpc_httpcli_context* httpcli_context,
+ grpc_polling_entity* pollent, grpc_millis deadline)
+ : httpcli_context(httpcli_context),
+ pollent(pollent),
+ deadline(deadline) {}
+ ~HTTPRequestContext() { grpc_http_response_destroy(&response); }
+
+ // Contextual parameters passed from
+ // grpc_oauth2_token_fetcher_credentials::fetch_oauth2().
+ grpc_httpcli_context* httpcli_context;
+ grpc_polling_entity* pollent;
+ grpc_millis deadline;
+
+ // Reusable token fetch http response and closure.
+ grpc_closure closure;
+ grpc_http_response response;
+ };
+
+ // Subclasses of base external account credentials need to override this
+ // method to implement the specific subject token retrieval logic.
+ // Once the subject token is ready, subclasses need to invoke
+ // the callback function (cb) to pass the subject token (or error)
+ // back.
+ virtual void RetrieveSubjectToken(
+ HTTPRequestContext* ctx, const ExternalAccountCredentialsOptions& options,
+ std::function<void(std::string, grpc_error*)> cb) = 0;
+
+ private:
+ // This method implements the common token fetch logic and it will be called
+ // when grpc_oauth2_token_fetcher_credentials request a new access token.
+ void fetch_oauth2(grpc_credentials_metadata_request* req,
+ grpc_httpcli_context* httpcli_context,
+ grpc_polling_entity* pollent, grpc_iomgr_cb_func cb,
+ grpc_millis deadline) override;
+
+ void OnRetrieveSubjectTokenInternal(absl::string_view subject_token,
+ grpc_error* error);
+
+ void ExchangeToken(absl::string_view subject_token);
+ static void OnExchangeToken(void* arg, grpc_error* error);
+ void OnExchangeTokenInternal(grpc_error* error);
+
+ void ImpersenateServiceAccount();
+ static void OnImpersenateServiceAccount(void* arg, grpc_error* error);
+ void OnImpersenateServiceAccountInternal(grpc_error* error);
+
+ void FinishTokenFetch(grpc_error* error);
+
+ ExternalAccountCredentialsOptions options_;
+ std::vector<std::string> scopes_;
+
+ HTTPRequestContext* ctx_ = nullptr;
+ grpc_credentials_metadata_request* metadata_req_ = nullptr;
+ grpc_iomgr_cb_func response_cb_ = nullptr;
+};
+
+} // namespace grpc_core
+
+#endif // GRPC_CORE_LIB_SECURITY_CREDENTIALS_EXTERNAL_EXTERNAL_ACCOUNT_CREDENTIALS_H
--- /dev/null
+//
+// Copyright 2020 gRPC authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+#include <grpc/support/port_platform.h>
+
+#include "src/core/lib/security/credentials/external/file_external_account_credentials.h"
+
+#include <fstream>
+
+#include "src/core/lib/iomgr/load_file.h"
+#include "src/core/lib/slice/slice_internal.h"
+#include "src/core/lib/slice/slice_utils.h"
+
+namespace grpc_core {
+
+RefCountedPtr<FileExternalAccountCredentials>
+FileExternalAccountCredentials::Create(
+ ExternalAccountCredentialsOptions options, std::vector<std::string> scopes,
+ grpc_error** error) {
+ auto creds = MakeRefCounted<FileExternalAccountCredentials>(
+ std::move(options), std::move(scopes), error);
+ if (*error == GRPC_ERROR_NONE) {
+ return creds;
+ } else {
+ return nullptr;
+ }
+}
+
+FileExternalAccountCredentials::FileExternalAccountCredentials(
+ ExternalAccountCredentialsOptions options, std::vector<std::string> scopes,
+ grpc_error** error)
+ : ExternalAccountCredentials(options, std::move(scopes)) {
+ auto it = options.credential_source.object_value().find("file");
+ if (it == options.credential_source.object_value().end()) {
+ *error = GRPC_ERROR_CREATE_FROM_STATIC_STRING("file field not present.");
+ return;
+ }
+ if (it->second.type() != Json::Type::STRING) {
+ *error =
+ GRPC_ERROR_CREATE_FROM_STATIC_STRING("file field must be a string.");
+ return;
+ }
+ file_ = it->second.string_value();
+ it = options.credential_source.object_value().find("format");
+ if (it != options.credential_source.object_value().end()) {
+ const Json& format_json = it->second;
+ if (format_json.type() != Json::Type::OBJECT) {
+ *error = GRPC_ERROR_CREATE_FROM_STATIC_STRING(
+ "The JSON value of credential source format is not an object.");
+ return;
+ }
+ auto format_it = format_json.object_value().find("type");
+ if (format_it == format_json.object_value().end()) {
+ *error = GRPC_ERROR_CREATE_FROM_STATIC_STRING(
+ "format.type field not present.");
+ return;
+ }
+ if (format_it->second.type() != Json::Type::STRING) {
+ *error = GRPC_ERROR_CREATE_FROM_STATIC_STRING(
+ "format.type field must be a string.");
+ return;
+ }
+ format_type_ = format_it->second.string_value();
+ if (format_type_ == "json") {
+ format_it = format_json.object_value().find("subject_token_field_name");
+ if (format_it == format_json.object_value().end()) {
+ *error = GRPC_ERROR_CREATE_FROM_STATIC_STRING(
+ "format.subject_token_field_name field must be present if the "
+ "format is in Json.");
+ return;
+ }
+ if (format_it->second.type() != Json::Type::STRING) {
+ *error = GRPC_ERROR_CREATE_FROM_STATIC_STRING(
+ "format.subject_token_field_name field must be a string.");
+ return;
+ }
+ format_subject_token_field_name_ = format_it->second.string_value();
+ }
+ }
+}
+
+void FileExternalAccountCredentials::RetrieveSubjectToken(
+ HTTPRequestContext* ctx, const ExternalAccountCredentialsOptions& options,
+ std::function<void(std::string, grpc_error*)> cb) {
+ struct SliceWrapper {
+ ~SliceWrapper() { grpc_slice_unref_internal(slice); }
+ grpc_slice slice = grpc_empty_slice();
+ };
+ SliceWrapper content_slice;
+ // To retrieve the subject token, we read the file every time we make a
+ // request because it may have changed since the last request.
+ grpc_error* error = grpc_load_file(file_.c_str(), 0, &content_slice.slice);
+ if (error != GRPC_ERROR_NONE) {
+ cb("", error);
+ return;
+ }
+ absl::string_view content = StringViewFromSlice(content_slice.slice);
+ if (format_type_ == "json") {
+ Json content_json = Json::Parse(content, &error);
+ if (error != GRPC_ERROR_NONE || content_json.type() != Json::Type::OBJECT) {
+ cb("", GRPC_ERROR_CREATE_FROM_STATIC_STRING(
+ "The content of the file is not a valid json object."));
+ GRPC_ERROR_UNREF(error);
+ return;
+ }
+ auto content_it =
+ content_json.object_value().find(format_subject_token_field_name_);
+ if (content_it == content_json.object_value().end()) {
+ cb("", GRPC_ERROR_CREATE_FROM_STATIC_STRING(
+ "Subject token field not present."));
+ return;
+ }
+ if (content_it->second.type() != Json::Type::STRING) {
+ cb("", GRPC_ERROR_CREATE_FROM_STATIC_STRING(
+ "Subject token field must be a string."));
+ return;
+ }
+ cb(content_it->second.string_value(), GRPC_ERROR_NONE);
+ return;
+ }
+ cb(std::string(content), GRPC_ERROR_NONE);
+}
+
+} // namespace grpc_core
--- /dev/null
+//
+// Copyright 2020 gRPC authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+#ifndef GRPC_CORE_LIB_SECURITY_CREDENTIALS_EXTERNAL_FILE_EXTERNAL_ACCOUNT_CREDENTIALS_H
+#define GRPC_CORE_LIB_SECURITY_CREDENTIALS_EXTERNAL_FILE_EXTERNAL_ACCOUNT_CREDENTIALS_H
+
+#include <grpc/support/port_platform.h>
+
+#include "src/core/lib/security/credentials/external/external_account_credentials.h"
+
+namespace grpc_core {
+
+class FileExternalAccountCredentials final : public ExternalAccountCredentials {
+ public:
+ static RefCountedPtr<FileExternalAccountCredentials> Create(
+ ExternalAccountCredentialsOptions options,
+ std::vector<std::string> scopes, grpc_error** error);
+
+ FileExternalAccountCredentials(ExternalAccountCredentialsOptions options,
+ std::vector<std::string> scopes,
+ grpc_error** error);
+
+ private:
+ void RetrieveSubjectToken(
+ HTTPRequestContext* ctx, const ExternalAccountCredentialsOptions& options,
+ std::function<void(std::string, grpc_error*)> cb) override;
+
+ // Fields of credential source
+ std::string file_;
+ std::string format_type_;
+ std::string format_subject_token_field_name_;
+};
+
+} // namespace grpc_core
+
+#endif // GRPC_CORE_LIB_SECURITY_CREDENTIALS_EXTERNAL_FILE_EXTERNAL_ACCOUNT_CREDENTIALS_H
--- /dev/null
+//
+// Copyright 2020 gRPC authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+#include <grpc/support/port_platform.h>
+
+#include "src/core/lib/security/credentials/external/url_external_account_credentials.h"
+
+#include "absl/strings/str_format.h"
+
+namespace grpc_core {
+
+RefCountedPtr<UrlExternalAccountCredentials>
+UrlExternalAccountCredentials::Create(ExternalAccountCredentialsOptions options,
+ std::vector<std::string> scopes,
+ grpc_error** error) {
+ auto creds = MakeRefCounted<UrlExternalAccountCredentials>(
+ std::move(options), std::move(scopes), error);
+ if (*error == GRPC_ERROR_NONE) {
+ return creds;
+ } else {
+ return nullptr;
+ }
+}
+
+UrlExternalAccountCredentials::UrlExternalAccountCredentials(
+ ExternalAccountCredentialsOptions options, std::vector<std::string> scopes,
+ grpc_error** error)
+ : ExternalAccountCredentials(options, std::move(scopes)) {
+ auto it = options.credential_source.object_value().find("url");
+ if (it == options.credential_source.object_value().end()) {
+ *error = GRPC_ERROR_CREATE_FROM_STATIC_STRING("url field not present.");
+ return;
+ }
+ if (it->second.type() != Json::Type::STRING) {
+ *error =
+ GRPC_ERROR_CREATE_FROM_STATIC_STRING("url field must be a string.");
+ return;
+ }
+ grpc_uri* url = grpc_uri_parse(it->second.string_value(), false);
+ if (url == nullptr) {
+ *error =
+ GRPC_ERROR_CREATE_FROM_STATIC_STRING("Invalid credential source url.");
+ return;
+ }
+ url_ = url;
+ it = options.credential_source.object_value().find("headers");
+ if (it != options.credential_source.object_value().end()) {
+ if (it->second.type() != Json::Type::OBJECT) {
+ *error = GRPC_ERROR_CREATE_FROM_STATIC_STRING(
+ "The JSON value of credential source headers is not an object.");
+ return;
+ }
+ for (auto const& header : it->second.object_value()) {
+ headers_[header.first] = header.second.string_value();
+ }
+ }
+ it = options.credential_source.object_value().find("format");
+ if (it != options.credential_source.object_value().end()) {
+ const Json& format_json = it->second;
+ if (format_json.type() != Json::Type::OBJECT) {
+ *error = GRPC_ERROR_CREATE_FROM_STATIC_STRING(
+ "The JSON value of credential source format is not an object.");
+ return;
+ }
+ auto format_it = format_json.object_value().find("type");
+ if (format_it == format_json.object_value().end()) {
+ *error = GRPC_ERROR_CREATE_FROM_STATIC_STRING(
+ "format.type field not present.");
+ return;
+ }
+ if (format_it->second.type() != Json::Type::STRING) {
+ *error = GRPC_ERROR_CREATE_FROM_STATIC_STRING(
+ "format.type field must be a string.");
+ return;
+ }
+ format_type_ = format_it->second.string_value();
+ if (format_type_ == "json") {
+ format_it = format_json.object_value().find("subject_token_field_name");
+ if (format_it == format_json.object_value().end()) {
+ *error = GRPC_ERROR_CREATE_FROM_STATIC_STRING(
+ "format.subject_token_field_name field must be present if the "
+ "format is in Json.");
+ return;
+ }
+ if (format_it->second.type() != Json::Type::STRING) {
+ *error = GRPC_ERROR_CREATE_FROM_STATIC_STRING(
+ "format.subject_token_field_name field must be a string.");
+ return;
+ }
+ format_subject_token_field_name_ = format_it->second.string_value();
+ }
+ }
+}
+
+UrlExternalAccountCredentials::~UrlExternalAccountCredentials() {
+ grpc_uri_destroy(url_);
+}
+
+void UrlExternalAccountCredentials::RetrieveSubjectToken(
+ HTTPRequestContext* ctx, const ExternalAccountCredentialsOptions& options,
+ std::function<void(std::string, grpc_error*)> cb) {
+ if (ctx == nullptr) {
+ FinishRetrieveSubjectToken(
+ "",
+ GRPC_ERROR_CREATE_FROM_STATIC_STRING(
+ "Missing HTTPRequestContext to start subject token retrieval."));
+ return;
+ }
+ ctx_ = ctx;
+ cb_ = cb;
+ grpc_httpcli_request request;
+ memset(&request, 0, sizeof(grpc_httpcli_request));
+ request.host = const_cast<char*>(url_->authority);
+ request.http.path = gpr_strdup(url_->path);
+ grpc_http_header* headers = nullptr;
+ request.http.hdr_count = headers_.size();
+ headers = static_cast<grpc_http_header*>(
+ gpr_malloc(sizeof(grpc_http_header) * request.http.hdr_count));
+ int i = 0;
+ for (auto const& header : headers_) {
+ headers[i].key = gpr_strdup(header.first.c_str());
+ headers[i].value = gpr_strdup(header.second.c_str());
+ ++i;
+ }
+ request.http.hdrs = headers;
+ request.handshaker = (strcmp(url_->scheme, "https") == 0)
+ ? &grpc_httpcli_ssl
+ : &grpc_httpcli_plaintext;
+ grpc_resource_quota* resource_quota =
+ grpc_resource_quota_create("external_account_credentials");
+ grpc_http_response_destroy(&ctx_->response);
+ ctx_->response = {};
+ GRPC_CLOSURE_INIT(&ctx_->closure, OnRetrieveSubjectToken, this, nullptr);
+ grpc_httpcli_get(ctx_->httpcli_context, ctx_->pollent, resource_quota,
+ &request, ctx_->deadline, &ctx_->closure, &ctx_->response);
+ grpc_resource_quota_unref_internal(resource_quota);
+ grpc_http_request_destroy(&request.http);
+}
+
+void UrlExternalAccountCredentials::OnRetrieveSubjectToken(void* arg,
+ grpc_error* error) {
+ UrlExternalAccountCredentials* self =
+ static_cast<UrlExternalAccountCredentials*>(arg);
+ self->OnRetrieveSubjectTokenInternal(GRPC_ERROR_REF(error));
+}
+
+void UrlExternalAccountCredentials::OnRetrieveSubjectTokenInternal(
+ grpc_error* error) {
+ if (error != GRPC_ERROR_NONE) {
+ FinishRetrieveSubjectToken("", error);
+ return;
+ }
+ absl::string_view response_body(ctx_->response.body,
+ ctx_->response.body_length);
+ if (format_type_ == "json") {
+ grpc_error* error = GRPC_ERROR_NONE;
+ Json response_json = Json::Parse(response_body, &error);
+ if (error != GRPC_ERROR_NONE ||
+ response_json.type() != Json::Type::OBJECT) {
+ FinishRetrieveSubjectToken(
+ "", GRPC_ERROR_CREATE_FROM_STATIC_STRING(
+ "The format of response is not a valid json object."));
+ return;
+ }
+ auto response_it =
+ response_json.object_value().find(format_subject_token_field_name_);
+ if (response_it == response_json.object_value().end()) {
+ FinishRetrieveSubjectToken("", GRPC_ERROR_CREATE_FROM_STATIC_STRING(
+ "Subject token field not present."));
+ return;
+ }
+ if (response_it->second.type() != Json::Type::STRING) {
+ FinishRetrieveSubjectToken("",
+ GRPC_ERROR_CREATE_FROM_STATIC_STRING(
+ "Subject token field must be a string."));
+ return;
+ }
+ FinishRetrieveSubjectToken(response_it->second.string_value(), error);
+ return;
+ }
+ FinishRetrieveSubjectToken(std::string(response_body), GRPC_ERROR_NONE);
+}
+
+void UrlExternalAccountCredentials::FinishRetrieveSubjectToken(
+ std::string subject_token, grpc_error* error) {
+ // Reset context
+ ctx_ = nullptr;
+ // Move object state into local variables.
+ auto cb = cb_;
+ cb_ = nullptr;
+ // Invoke the callback.
+ if (error != GRPC_ERROR_NONE) {
+ cb("", error);
+ } else {
+ cb(subject_token, GRPC_ERROR_NONE);
+ }
+}
+
+} // namespace grpc_core
--- /dev/null
+//
+// Copyright 2020 gRPC authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+#ifndef GRPC_CORE_LIB_SECURITY_CREDENTIALS_EXTERNAL_URL_EXTERNAL_ACCOUNT_CREDENTIALS_H
+#define GRPC_CORE_LIB_SECURITY_CREDENTIALS_EXTERNAL_URL_EXTERNAL_ACCOUNT_CREDENTIALS_H
+
+#include <grpc/support/port_platform.h>
+
+#include "src/core/lib/security/credentials/external/external_account_credentials.h"
+
+namespace grpc_core {
+
+class UrlExternalAccountCredentials final : public ExternalAccountCredentials {
+ public:
+ static RefCountedPtr<UrlExternalAccountCredentials> Create(
+ ExternalAccountCredentialsOptions options,
+ std::vector<std::string> scopes, grpc_error** error);
+
+ UrlExternalAccountCredentials(ExternalAccountCredentialsOptions options,
+ std::vector<std::string> scopes,
+ grpc_error** error);
+ ~UrlExternalAccountCredentials() override;
+
+ private:
+ void RetrieveSubjectToken(
+ HTTPRequestContext* ctx, const ExternalAccountCredentialsOptions& options,
+ std::function<void(std::string, grpc_error*)> cb) override;
+
+ static void OnRetrieveSubjectToken(void* arg, grpc_error* error);
+ void OnRetrieveSubjectTokenInternal(grpc_error* error);
+
+ void FinishRetrieveSubjectToken(std::string subject_token, grpc_error* error);
+
+ // Fields of credential source
+ grpc_uri* url_ = nullptr;
+ std::map<std::string, std::string> headers_;
+ std::string format_type_;
+ std::string format_subject_token_field_name_;
+
+ HTTPRequestContext* ctx_ = nullptr;
+ std::function<void(std::string, grpc_error*)> cb_ = nullptr;
+};
+
+} // namespace grpc_core
+
+#endif // GRPC_CORE_LIB_SECURITY_CREDENTIALS_EXTERNAL_URL_EXTERNAL_ACCOUNT_CREDENTIALS_H
--- /dev/null
+//
+//
+// Copyright 2020 gRPC authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+//
+
+#include <grpc/support/port_platform.h>
+
+#include <grpc/grpc_security.h>
+
+#include "src/core/lib/security/credentials/credentials.h"
+#include "src/core/lib/security/security_connector/insecure/insecure_security_connector.h"
+
+namespace grpc_core {
+namespace {
+
+constexpr char kCredentialsTypeInsecure[] = "insecure";
+
+class InsecureCredentials final : public grpc_channel_credentials {
+ public:
+ explicit InsecureCredentials()
+ : grpc_channel_credentials(kCredentialsTypeInsecure) {}
+
+ grpc_core::RefCountedPtr<grpc_channel_security_connector>
+ create_security_connector(
+ grpc_core::RefCountedPtr<grpc_call_credentials> call_creds,
+ const char* /* target_name */, const grpc_channel_args* /* args */,
+ grpc_channel_args** /* new_args */) override {
+ return MakeRefCounted<InsecureChannelSecurityConnector>(
+ Ref(), std::move(call_creds));
+ }
+};
+
+} // namespace
+} // namespace grpc_core
+
+grpc_channel_credentials* grpc_insecure_credentials_create() {
+ return new grpc_core::InsecureCredentials();
+}
#include "src/core/lib/security/util/json_util.h"
#include "src/core/lib/slice/b64.h"
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wmodule-import-in-extern-c"
extern "C" {
#include <openssl/bio.h>
#include <openssl/evp.h>
#include <openssl/pem.h>
}
+#pragma clang diagnostic pop
using grpc_core::Json;
int grpc_auth_json_key_is_valid(const grpc_auth_json_key* json_key) {
return (json_key != nullptr) &&
- strcmp(json_key->type, GRPC_AUTH_JSON_TYPE_INVALID);
+ strcmp(json_key->type, GRPC_AUTH_JSON_TYPE_INVALID) != 0;
}
grpc_auth_json_key grpc_auth_json_key_create_from_json(const Json& json) {
prop_value = grpc_json_get_string_property(json, "type", &error);
GRPC_LOG_IF_ERROR("JSON key parsing", error);
if (prop_value == nullptr ||
- strcmp(prop_value, GRPC_AUTH_JSON_TYPE_SERVICE_ACCOUNT)) {
+ strcmp(prop_value, GRPC_AUTH_JSON_TYPE_SERVICE_ACCOUNT) != 0) {
goto end;
}
result.type = GRPC_AUTH_JSON_TYPE_SERVICE_ACCOUNT;
const grpc_auth_json_key& key() const { return key_; }
std::string debug_string() override {
- return absl::StrFormat("JWTAccessCredentials{ExpirationTime:%s}",
- absl::FormatTime(absl::FromUnixMicros(
- gpr_timespec_to_micros(jwt_lifetime_))));
+ return absl::StrFormat(
+ "JWTAccessCredentials{ExpirationTime:%s}",
+ absl::FormatTime(absl::FromUnixMicros(
+ static_cast<int64_t>(gpr_timespec_to_micros(jwt_lifetime_)))));
};
private:
#include <grpc/support/string_util.h>
#include <grpc/support/sync.h>
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wmodule-import-in-extern-c"
extern "C" {
#include <openssl/bn.h>
#include <openssl/pem.h>
#include <openssl/rsa.h>
}
+#pragma clang diagnostic pop
#include "src/core/lib/gpr/string.h"
#include "src/core/lib/gprpp/manual_constructor.h"
https://auth0.com/blog/2015/03/31/critical-vulnerabilities-in-json-web-token-libraries/
*/
alg_value = it->second.string_value().c_str();
- if (it->second.type() != Json::Type::STRING || strncmp(alg_value, "RS", 2) ||
+ if (it->second.type() != Json::Type::STRING ||
+ strncmp(alg_value, "RS", 2) != 0 ||
evp_md_from_alg(alg_value) == nullptr) {
gpr_log(GPR_ERROR, "Invalid alg field");
goto error;
int grpc_auth_refresh_token_is_valid(
const grpc_auth_refresh_token* refresh_token) {
return (refresh_token != nullptr) &&
- strcmp(refresh_token->type, GRPC_AUTH_JSON_TYPE_INVALID);
+ strcmp(refresh_token->type, GRPC_AUTH_JSON_TYPE_INVALID) != 0;
}
grpc_auth_refresh_token grpc_auth_refresh_token_create_from_json(
prop_value = grpc_json_get_string_property(json, "type", &error);
GRPC_LOG_IF_ERROR("Parsing refresh token", error);
if (prop_value == nullptr ||
- strcmp(prop_value, GRPC_AUTH_JSON_TYPE_AUTHORIZED_USER)) {
+ strcmp(prop_value, GRPC_AUTH_JSON_TYPE_AUTHORIZED_USER) != 0) {
goto end;
}
result.type = GRPC_AUTH_JSON_TYPE_AUTHORIZED_USER;
void grpc_tls_certificate_distributor::SetKeyMaterials(
const std::string& cert_name, absl::optional<std::string> pem_root_certs,
- absl::optional<PemKeyCertPairList> pem_key_cert_pairs) {
+ absl::optional<grpc_core::PemKeyCertPairList> pem_key_cert_pairs) {
GPR_ASSERT(pem_root_certs.has_value() || pem_key_cert_pairs.has_value());
grpc_core::MutexLock lock(&mu_);
auto& cert_info = certificate_info_map_[cert_name];
const auto watcher_it = watchers_.find(watcher_ptr);
GPR_ASSERT(watcher_it != watchers_.end());
GPR_ASSERT(watcher_it->second.root_cert_name.has_value());
- absl::optional<PemKeyCertPairList> pem_key_cert_pairs_to_report;
+ absl::optional<grpc_core::PemKeyCertPairList>
+ pem_key_cert_pairs_to_report;
if (pem_key_cert_pairs.has_value() &&
watcher_it->second.identity_cert_name == cert_name) {
pem_key_cert_pairs_to_report = pem_key_cert_pairs;
} else if (watcher_it->second.identity_cert_name.has_value()) {
auto& identity_cert_info =
certificate_info_map_[*watcher_it->second.identity_cert_name];
- pem_key_cert_pairs_to_report = identity_cert_info.pem_key_cert_pairs;
+ if (!identity_cert_info.pem_key_cert_pairs.empty()) {
+ pem_key_cert_pairs_to_report = identity_cert_info.pem_key_cert_pairs;
+ }
}
watcher_ptr->OnCertificatesChanged(
pem_root_certs, std::move(pem_key_cert_pairs_to_report));
} else if (watcher_it->second.root_cert_name.has_value()) {
auto& root_cert_info =
certificate_info_map_[*watcher_it->second.root_cert_name];
- pem_root_certs_to_report = root_cert_info.pem_root_certs;
+ if (!root_cert_info.pem_root_certs.empty()) {
+ pem_root_certs_to_report = root_cert_info.pem_root_certs;
+ }
}
watcher_ptr->OnCertificatesChanged(pem_root_certs_to_report,
pem_key_cert_pairs);
watchers_[watcher_ptr] = {std::move(watcher), root_cert_name,
identity_cert_name};
absl::optional<absl::string_view> updated_root_certs;
- absl::optional<PemKeyCertPairList> updated_identity_pairs;
+ absl::optional<grpc_core::PemKeyCertPairList> updated_identity_pairs;
grpc_error* root_error = GRPC_ERROR_NONE;
grpc_error* identity_error = GRPC_ERROR_NONE;
if (root_cert_name.has_value()) {
}
}
};
+
+/** -- Wrapper APIs declared in grpc_security.h -- **/
+
+grpc_tls_identity_pairs* grpc_tls_identity_pairs_create() {
+ return new grpc_tls_identity_pairs();
+}
+
+void grpc_tls_identity_pairs_add_pair(grpc_tls_identity_pairs* pairs,
+ const char* private_key,
+ const char* cert_chain) {
+ GPR_ASSERT(pairs != nullptr);
+ GPR_ASSERT(private_key != nullptr);
+ GPR_ASSERT(cert_chain != nullptr);
+ grpc_ssl_pem_key_cert_pair* ssl_pair =
+ static_cast<grpc_ssl_pem_key_cert_pair*>(
+ gpr_malloc(sizeof(grpc_ssl_pem_key_cert_pair)));
+ ssl_pair->private_key = gpr_strdup(private_key);
+ ssl_pair->cert_chain = gpr_strdup(cert_chain);
+ pairs->pem_key_cert_pairs.emplace_back(ssl_pair);
+}
+
+void grpc_tls_identity_pairs_destroy(grpc_tls_identity_pairs* pairs) {
+ GPR_ASSERT(pairs != nullptr);
+ delete pairs;
+}
#include <grpc/grpc_security.h>
+#include <utility>
+
#include "absl/container/inlined_vector.h"
#include "absl/types/optional.h"
#include "src/core/lib/gprpp/ref_counted.h"
#include "src/core/lib/security/security_connector/ssl_utils.h"
+struct grpc_tls_identity_pairs {
+ grpc_core::PemKeyCertPairList pem_key_cert_pairs;
+};
+
// TLS certificate distributor.
struct grpc_tls_certificate_distributor
: public grpc_core::RefCounted<grpc_tls_certificate_distributor> {
public:
- typedef absl::InlinedVector<grpc_core::PemKeyCertPair, 1> PemKeyCertPairList;
-
// Interface for watching TLS certificates update.
class TlsCertificatesWatcherInterface {
public:
// pairs.
virtual void OnCertificatesChanged(
absl::optional<absl::string_view> root_certs,
- absl::optional<PemKeyCertPairList> key_cert_pairs) = 0;
+ absl::optional<grpc_core::PemKeyCertPairList> key_cert_pairs) = 0;
// Handles an error that occurs while attempting to fetch certificate data.
// Note that if a watcher sees an error, it simply means the Provider is
// @param cert_name The name of the certificates being updated.
// @param pem_root_certs The content of root certificates.
// @param pem_key_cert_pairs The content of identity key-cert pairs.
- void SetKeyMaterials(const std::string& cert_name,
- absl::optional<std::string> pem_root_certs,
- absl::optional<PemKeyCertPairList> pem_key_cert_pairs);
+ void SetKeyMaterials(
+ const std::string& cert_name, absl::optional<std::string> pem_root_certs,
+ absl::optional<grpc_core::PemKeyCertPairList> pem_key_cert_pairs);
bool HasRootCerts(const std::string& root_cert_name);
void SetWatchStatusCallback(
std::function<void(std::string, bool, bool)> callback) {
grpc_core::MutexLock lock(&mu_);
- watch_status_callback_ = callback;
+ watch_status_callback_ = std::move(callback);
};
// Registers a watcher. The caller may keep a raw pointer to the watcher,
// The contents of the root certificates.
std::string pem_root_certs;
// The contents of the identity key-certificate pairs.
- PemKeyCertPairList pem_key_cert_pairs;
+ grpc_core::PemKeyCertPairList pem_key_cert_pairs;
// The root cert reloading error propagated by the caller.
grpc_error* root_cert_error = GRPC_ERROR_NONE;
// The identity cert reloading error propagated by the caller.
--- /dev/null
+//
+// Copyright 2020 gRPC authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+#include <grpc/support/port_platform.h>
+
+#include "src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h"
+
+#include <grpc/support/alloc.h>
+#include <grpc/support/log.h>
+#include <grpc/support/string_util.h>
+
+#include "src/core/lib/surface/api_trace.h"
+
+namespace grpc_core {
+
+StaticDataCertificateProvider::StaticDataCertificateProvider(
+ std::string root_certificate,
+ grpc_core::PemKeyCertPairList pem_key_cert_pairs)
+ : distributor_(MakeRefCounted<grpc_tls_certificate_distributor>()),
+ root_certificate_(std::move(root_certificate)),
+ pem_key_cert_pairs_(std::move(pem_key_cert_pairs)) {
+ distributor_->SetWatchStatusCallback([this](std::string cert_name,
+ bool root_being_watched,
+ bool identity_being_watched) {
+ if (!root_being_watched && !identity_being_watched) return;
+ absl::optional<std::string> root_certificate;
+ absl::optional<grpc_core::PemKeyCertPairList> pem_key_cert_pairs;
+ if (root_being_watched) {
+ root_certificate = root_certificate_;
+ }
+ if (identity_being_watched) {
+ pem_key_cert_pairs = pem_key_cert_pairs_;
+ }
+ distributor_->SetKeyMaterials(cert_name, std::move(root_certificate),
+ std::move(pem_key_cert_pairs));
+ });
+}
+
+} // namespace grpc_core
+
+/** -- Wrapper APIs declared in grpc_security.h -- **/
+
+grpc_tls_certificate_provider* grpc_tls_certificate_provider_static_data_create(
+ const char* root_certificate, grpc_tls_identity_pairs* pem_key_cert_pairs) {
+ GPR_ASSERT(root_certificate != nullptr || pem_key_cert_pairs != nullptr);
+ grpc_core::PemKeyCertPairList identity_pairs_core;
+ if (pem_key_cert_pairs != nullptr) {
+ identity_pairs_core = std::move(pem_key_cert_pairs->pem_key_cert_pairs);
+ delete pem_key_cert_pairs;
+ }
+ std::string root_cert_core;
+ if (root_certificate != nullptr) {
+ root_cert_core = root_certificate;
+ }
+ return new grpc_core::StaticDataCertificateProvider(
+ std::move(root_cert_core), std::move(identity_pairs_core));
+}
+
+void grpc_tls_certificate_provider_release(
+ grpc_tls_certificate_provider* provider) {
+ GRPC_API_TRACE("grpc_tls_certificate_provider_release(provider=%p)", 1,
+ (provider));
+ grpc_core::ExecCtx exec_ctx;
+ if (provider != nullptr) provider->Unref();
+}
//
-//
// Copyright 2020 gRPC authors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// See the License for the specific language governing permissions and
// limitations under the License.
//
-//
-#ifndef GRPC_CORE_LIB_SECURITY_CERTIFICATE_PROVIDER_H
-#define GRPC_CORE_LIB_SECURITY_CERTIFICATE_PROVIDER_H
+#ifndef GRPC_CORE_LIB_SECURITY_CREDENTIALS_TLS_GRPC_TLS_CERTIFICATE_PROVIDER_H
+#define GRPC_CORE_LIB_SECURITY_CREDENTIALS_TLS_GRPC_TLS_CERTIFICATE_PROVIDER_H
#include <grpc/support/port_platform.h>
+#include <grpc/grpc_security.h>
+#include <string.h>
+
+#include "absl/container/inlined_vector.h"
+
#include "src/core/lib/gprpp/ref_counted.h"
#include "src/core/lib/gprpp/ref_counted_ptr.h"
#include "src/core/lib/iomgr/pollset_set.h"
-
-// TODO(yashkt): After https://github.com/grpc/grpc/pull/23572, remove this
-// forward declaration and include the header for the distributor instead.
-struct grpc_tls_certificate_distributor;
+#include "src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h"
+#include "src/core/lib/security/security_connector/ssl_utils.h"
// Interface for a grpc_tls_certificate_provider that handles the process to
// fetch credentials and validation contexts. Implementations are free to rely
struct grpc_tls_certificate_provider
: public grpc_core::RefCounted<grpc_tls_certificate_provider> {
public:
- grpc_tls_certificate_provider()
- : interested_parties_(grpc_pollset_set_create()) {}
-
- virtual ~grpc_tls_certificate_provider() {
- grpc_pollset_set_destroy(interested_parties_);
- }
-
- grpc_pollset_set* interested_parties() const { return interested_parties_; }
+ virtual grpc_pollset_set* interested_parties() const { return nullptr; }
virtual grpc_core::RefCountedPtr<grpc_tls_certificate_distributor>
distributor() const = 0;
+};
+
+namespace grpc_core {
+
+// A basic provider class that will get credentials from string during
+// initialization.
+class StaticDataCertificateProvider final
+ : public grpc_tls_certificate_provider {
+ public:
+ StaticDataCertificateProvider(
+ std::string root_certificate,
+ grpc_core::PemKeyCertPairList pem_key_cert_pairs);
+
+ RefCountedPtr<grpc_tls_certificate_distributor> distributor() const override {
+ return distributor_;
+ }
private:
- grpc_pollset_set* interested_parties_;
+ RefCountedPtr<grpc_tls_certificate_distributor> distributor_;
+ std::string root_certificate_;
+ grpc_core::PemKeyCertPairList pem_key_cert_pairs_;
};
-#endif // GRPC_CORE_LIB_SECURITY_CERTIFICATE_PROVIDER_H
+} // namespace grpc_core
+
+#endif // GRPC_CORE_LIB_SECURITY_CREDENTIALS_TLS_GRPC_TLS_CERTIFICATE_PROVIDER_H
#include <grpc/support/log.h>
#include <grpc/support/string_util.h>
-/** -- gRPC TLS key materials config API implementation. -- **/
-void grpc_tls_key_materials_config::set_key_materials(
- const char* pem_root_certs,
- const grpc_ssl_pem_key_cert_pair** pem_key_cert_pairs,
- size_t num_key_cert_pairs) {
- this->set_pem_root_certs(pem_root_certs);
- grpc_tls_key_materials_config::PemKeyCertPairList cert_pair_list;
- for (size_t i = 0; i < num_key_cert_pairs; i++) {
- auto current_pair = static_cast<grpc_ssl_pem_key_cert_pair*>(
- gpr_zalloc(sizeof(grpc_ssl_pem_key_cert_pair)));
- current_pair->cert_chain = gpr_strdup(pem_key_cert_pairs[i]->cert_chain);
- current_pair->private_key = gpr_strdup(pem_key_cert_pairs[i]->private_key);
- cert_pair_list.emplace_back(grpc_core::PemKeyCertPair(current_pair));
- }
- pem_key_cert_pair_list_ = std::move(cert_pair_list);
-}
-
-void grpc_tls_key_materials_config::set_key_materials(
- const char* pem_root_certs,
- const PemKeyCertPairList& pem_key_cert_pair_list) {
- this->set_pem_root_certs(pem_root_certs);
- grpc_tls_key_materials_config::PemKeyCertPairList dup_list(
- pem_key_cert_pair_list);
- pem_key_cert_pair_list_ = std::move(dup_list);
-}
-
-/** -- gRPC TLS credential reload config API implementation. -- **/
-grpc_tls_credential_reload_config::grpc_tls_credential_reload_config(
- const void* config_user_data,
- int (*schedule)(void* config_user_data,
- grpc_tls_credential_reload_arg* arg),
- void (*cancel)(void* config_user_data, grpc_tls_credential_reload_arg* arg),
- void (*destruct)(void* config_user_data))
- : config_user_data_(const_cast<void*>(config_user_data)),
- schedule_(schedule),
- cancel_(cancel),
- destruct_(destruct) {}
-
-grpc_tls_credential_reload_config::~grpc_tls_credential_reload_config() {
- if (destruct_ != nullptr) {
- destruct_((void*)config_user_data_);
- }
-}
+#include "src/core/lib/surface/api_trace.h"
/** -- gRPC TLS server authorization check API implementation. -- **/
grpc_tls_server_authorization_check_config::
}
}
+int grpc_tls_server_authorization_check_config::Schedule(
+ grpc_tls_server_authorization_check_arg* arg) const {
+ if (schedule_ == nullptr) {
+ gpr_log(GPR_ERROR, "schedule API is nullptr");
+ if (arg != nullptr) {
+ arg->status = GRPC_STATUS_NOT_FOUND;
+ arg->error_details->set_error_details(
+ "schedule API in server authorization check config is nullptr");
+ }
+ return 1;
+ }
+ if (arg != nullptr && context_ != nullptr) {
+ arg->config = const_cast<grpc_tls_server_authorization_check_config*>(this);
+ }
+ return schedule_(config_user_data_, arg);
+}
+
+void grpc_tls_server_authorization_check_config::Cancel(
+ grpc_tls_server_authorization_check_arg* arg) const {
+ if (cancel_ == nullptr) {
+ gpr_log(GPR_ERROR, "cancel API is nullptr.");
+ if (arg != nullptr) {
+ arg->status = GRPC_STATUS_NOT_FOUND;
+ arg->error_details->set_error_details(
+ "schedule API in server authorization check config is nullptr");
+ }
+ return;
+ }
+ if (arg != nullptr) {
+ arg->config = const_cast<grpc_tls_server_authorization_check_config*>(this);
+ }
+ cancel_(config_user_data_, arg);
+}
+
/** -- Wrapper APIs declared in grpc_security.h -- **/
+
grpc_tls_credentials_options* grpc_tls_credentials_options_create() {
return new grpc_tls_credentials_options();
}
-int grpc_tls_credentials_options_set_cert_request_type(
+void grpc_tls_credentials_options_set_cert_request_type(
grpc_tls_credentials_options* options,
grpc_ssl_client_certificate_request_type type) {
- if (options == nullptr) {
- gpr_log(GPR_ERROR,
- "Invalid nullptr arguments to "
- "grpc_tls_credentials_options_set_cert_request_type()");
- return 0;
- }
+ GPR_ASSERT(options != nullptr);
options->set_cert_request_type(type);
- return 1;
}
-int grpc_tls_credentials_options_set_server_verification_option(
+void grpc_tls_credentials_options_set_server_verification_option(
grpc_tls_credentials_options* options,
grpc_tls_server_verification_option server_verification_option) {
- if (options == nullptr) {
- gpr_log(GPR_ERROR,
- "Invalid nullptr arguments to "
- "grpc_tls_credentials_options_set_server_verification_option()");
- return 0;
- }
- if (server_verification_option != GRPC_TLS_SERVER_VERIFICATION &&
- options->server_authorization_check_config() == nullptr) {
- gpr_log(GPR_ERROR,
- "server_authorization_check_config needs to be specified when"
- "server_verification_option is not GRPC_TLS_SERVER_VERIFICATION");
- return 0;
- }
+ GPR_ASSERT(options != nullptr);
options->set_server_verification_option(server_verification_option);
- return 1;
-}
-
-int grpc_tls_credentials_options_set_key_materials_config(
- grpc_tls_credentials_options* options,
- grpc_tls_key_materials_config* config) {
- if (options == nullptr || config == nullptr) {
- gpr_log(GPR_ERROR,
- "Invalid nullptr arguments to "
- "grpc_tls_credentials_options_set_key_materials_config()");
- return 0;
- }
- options->set_key_materials_config(config->Ref());
- return 1;
}
-int grpc_tls_credentials_options_set_credential_reload_config(
+void grpc_tls_credentials_options_set_certificate_provider(
grpc_tls_credentials_options* options,
- grpc_tls_credential_reload_config* config) {
- if (options == nullptr || config == nullptr) {
- gpr_log(GPR_ERROR,
- "Invalid nullptr arguments to "
- "grpc_tls_credentials_options_set_credential_reload_config()");
- return 0;
- }
- options->set_credential_reload_config(config->Ref());
- return 1;
+ grpc_tls_certificate_provider* provider) {
+ GPR_ASSERT(options != nullptr);
+ GPR_ASSERT(provider != nullptr);
+ options->set_certificate_provider(
+ provider->Ref(DEBUG_LOCATION, "set_certificate_provider"));
}
-int grpc_tls_credentials_options_set_server_authorization_check_config(
- grpc_tls_credentials_options* options,
- grpc_tls_server_authorization_check_config* config) {
- if (options == nullptr || config == nullptr) {
- gpr_log(
- GPR_ERROR,
- "Invalid nullptr arguments to "
- "grpc_tls_credentials_options_set_server_authorization_check_config()");
- return 0;
- }
- options->set_server_authorization_check_config(config->Ref());
- return 1;
+void grpc_tls_credentials_options_watch_root_certs(
+ grpc_tls_credentials_options* options) {
+ GPR_ASSERT(options != nullptr);
+ options->set_watch_root_cert(true);
}
-grpc_tls_key_materials_config* grpc_tls_key_materials_config_create() {
- return new grpc_tls_key_materials_config();
+void grpc_tls_credentials_options_set_root_cert_name(
+ grpc_tls_credentials_options* options, const char* root_cert_name) {
+ GPR_ASSERT(options != nullptr);
+ options->set_root_cert_name(root_cert_name);
}
-int grpc_tls_key_materials_config_set_key_materials(
- grpc_tls_key_materials_config* config, const char* root_certs,
- const grpc_ssl_pem_key_cert_pair** key_cert_pairs, size_t num) {
- if (config == nullptr || key_cert_pairs == nullptr || num == 0) {
- gpr_log(GPR_ERROR,
- "Invalid arguments to "
- "grpc_tls_key_materials_config_set_key_materials()");
- return 0;
- }
- config->set_key_materials(root_certs, key_cert_pairs, num);
- return 1;
-}
-
-int grpc_tls_key_materials_config_set_version(
- grpc_tls_key_materials_config* config, int version) {
- if (config == nullptr) {
- gpr_log(GPR_ERROR,
- "Invalid arguments to "
- "grpc_tls_key_materials_config_set_version()");
- return 0;
- }
- config->set_version(version);
- return 1;
+void grpc_tls_credentials_options_watch_identity_key_cert_pairs(
+ grpc_tls_credentials_options* options) {
+ GPR_ASSERT(options != nullptr);
+ options->set_watch_identity_pair(true);
}
-int grpc_tls_key_materials_config_get_version(
- grpc_tls_key_materials_config* config) {
- if (config == nullptr) {
- gpr_log(GPR_ERROR,
- "Invalid arguments to "
- "grpc_tls_key_materials_config_get_version()");
- return -1;
- }
- return config->version();
+void grpc_tls_credentials_options_set_identity_cert_name(
+ grpc_tls_credentials_options* options, const char* identity_cert_name) {
+ GPR_ASSERT(options != nullptr);
+ options->set_identity_cert_name(identity_cert_name);
}
-grpc_tls_credential_reload_config* grpc_tls_credential_reload_config_create(
- const void* config_user_data,
- int (*schedule)(void* config_user_data,
- grpc_tls_credential_reload_arg* arg),
- void (*cancel)(void* config_user_data, grpc_tls_credential_reload_arg* arg),
- void (*destruct)(void* config_user_data)) {
- if (schedule == nullptr) {
- gpr_log(
- GPR_ERROR,
- "Schedule API is nullptr in creating TLS credential reload config.");
- return nullptr;
- }
- return new grpc_tls_credential_reload_config(config_user_data, schedule,
- cancel, destruct);
+void grpc_tls_credentials_options_set_server_authorization_check_config(
+ grpc_tls_credentials_options* options,
+ grpc_tls_server_authorization_check_config* config) {
+ GPR_ASSERT(options != nullptr);
+ GPR_ASSERT(config != nullptr);
+ options->set_server_authorization_check_config(config->Ref());
}
grpc_tls_server_authorization_check_config*
return new grpc_tls_server_authorization_check_config(
config_user_data, schedule, cancel, destruct);
}
+
+void grpc_tls_server_authorization_check_config_release(
+ grpc_tls_server_authorization_check_config* config) {
+ GRPC_API_TRACE(
+ "grpc_tls_server_authorization_check_config_release(config=%p)", 1,
+ (config));
+ grpc_core::ExecCtx exec_ctx;
+ if (config != nullptr) config->Unref();
+}
#include "absl/container/inlined_vector.h"
#include "src/core/lib/gprpp/ref_counted.h"
+#include "src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h"
+#include "src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h"
#include "src/core/lib/security/security_connector/ssl_utils.h"
struct grpc_tls_error_details
std::string error_details_;
};
-/** TLS key materials config. **/
-struct grpc_tls_key_materials_config
- : public grpc_core::RefCounted<grpc_tls_key_materials_config> {
- public:
- typedef absl::InlinedVector<grpc_core::PemKeyCertPair, 1> PemKeyCertPairList;
-
- /** Getters for member fields. **/
- const char* pem_root_certs() const { return pem_root_certs_.get(); }
- const PemKeyCertPairList& pem_key_cert_pair_list() const {
- return pem_key_cert_pair_list_;
- }
- int version() const { return version_; }
-
- /** Setters for member fields. **/
- // TODO(ZhenLian): Remove this function
- void set_pem_root_certs(grpc_core::UniquePtr<char> pem_root_certs) {
- pem_root_certs_ = std::move(pem_root_certs);
- }
- // The ownerships of |pem_root_certs| remain with the caller.
- void set_pem_root_certs(const char* pem_root_certs) {
- // make a copy of pem_root_certs.
- grpc_core::UniquePtr<char> pem_root_ptr(gpr_strdup(pem_root_certs));
- pem_root_certs_ = std::move(pem_root_ptr);
- }
- void add_pem_key_cert_pair(grpc_core::PemKeyCertPair pem_key_cert_pair) {
- pem_key_cert_pair_list_.push_back(pem_key_cert_pair);
- }
- // The ownerships of |pem_root_certs| and |pem_key_cert_pairs| remain with the
- // caller.
- void set_key_materials(const char* pem_root_certs,
- const grpc_ssl_pem_key_cert_pair** pem_key_cert_pairs,
- size_t num_key_cert_pairs);
- // The ownerships of |pem_root_certs| and |pem_key_cert_pair_list| remain with
- // the caller.
- void set_key_materials(const char* pem_root_certs,
- const PemKeyCertPairList& pem_key_cert_pair_list);
- void set_version(int version) { version_ = version; }
-
- private:
- int version_ = 0;
- PemKeyCertPairList pem_key_cert_pair_list_;
- grpc_core::UniquePtr<char> pem_root_certs_;
-};
-
-/** TLS credential reload config. **/
-struct grpc_tls_credential_reload_config
- : public grpc_core::RefCounted<grpc_tls_credential_reload_config> {
- public:
- grpc_tls_credential_reload_config(
- const void* config_user_data,
- int (*schedule)(void* config_user_data,
- grpc_tls_credential_reload_arg* arg),
- void (*cancel)(void* config_user_data,
- grpc_tls_credential_reload_arg* arg),
- void (*destruct)(void* config_user_data));
- ~grpc_tls_credential_reload_config();
-
- void* context() const { return context_; }
- void set_context(void* context) { context_ = context; }
-
- int Schedule(grpc_tls_credential_reload_arg* arg) const {
- if (schedule_ == nullptr) {
- gpr_log(GPR_ERROR, "schedule API is nullptr");
- if (arg != nullptr) {
- arg->status = GRPC_SSL_CERTIFICATE_CONFIG_RELOAD_FAIL;
- arg->error_details->set_error_details(
- "schedule API in credential reload config is nullptr");
- }
- return 1;
- }
- if (arg != nullptr) {
- arg->config = const_cast<grpc_tls_credential_reload_config*>(this);
- }
- return schedule_(config_user_data_, arg);
- }
- void Cancel(grpc_tls_credential_reload_arg* arg) const {
- if (cancel_ == nullptr) {
- gpr_log(GPR_ERROR, "cancel API is nullptr.");
- if (arg != nullptr) {
- arg->status = GRPC_SSL_CERTIFICATE_CONFIG_RELOAD_FAIL;
- arg->error_details->set_error_details(
- "cancel API in credential reload config is nullptr");
- }
- return;
- }
- if (arg != nullptr) {
- arg->config = const_cast<grpc_tls_credential_reload_config*>(this);
- }
- cancel_(config_user_data_, arg);
- }
-
- private:
- /** This is a pointer to the wrapped language implementation of
- * grpc_tls_credential_reload_config. It is necessary to implement the C
- * schedule and cancel functions, given the schedule or cancel function in a
- * wrapped language. **/
- void* context_ = nullptr;
- /** config-specific, read-only user data that works for all channels created
- with a credential using the config. */
- void* config_user_data_;
- /** callback function for invoking credential reload API. The implementation
- of this method has to be non-blocking, but can be performed synchronously
- or asynchronously.
- If processing occurs synchronously, it populates \a arg->key_materials, \a
- arg->status, and \a arg->error_details and returns zero.
- If processing occurs asynchronously, it returns a non-zero value.
- Application then invokes \a arg->cb when processing is completed. Note that
- \a arg->cb cannot be invoked before \a schedule returns.
- */
- int (*schedule_)(void* config_user_data, grpc_tls_credential_reload_arg* arg);
- /** callback function for cancelling a credential reload request scheduled via
- an asynchronous \a schedule. \a arg is used to pinpoint an exact reloading
- request to be cancelled, and the operation may not have any effect if the
- request has already been processed. */
- void (*cancel_)(void* config_user_data, grpc_tls_credential_reload_arg* arg);
- /** callback function for cleaning up any data associated with credential
- reload config. */
- void (*destruct_)(void* config_user_data);
-};
-
/** TLS server authorization check config. **/
struct grpc_tls_server_authorization_check_config
: public grpc_core::RefCounted<grpc_tls_server_authorization_check_config> {
void (*cancel)(void* config_user_data,
grpc_tls_server_authorization_check_arg* arg),
void (*destruct)(void* config_user_data));
- ~grpc_tls_server_authorization_check_config();
+ ~grpc_tls_server_authorization_check_config() override;
void* context() const { return context_; }
+
void set_context(void* context) { context_ = context; }
- int Schedule(grpc_tls_server_authorization_check_arg* arg) const {
- if (schedule_ == nullptr) {
- gpr_log(GPR_ERROR, "schedule API is nullptr");
- if (arg != nullptr) {
- arg->status = GRPC_STATUS_NOT_FOUND;
- arg->error_details->set_error_details(
- "schedule API in server authorization check config is nullptr");
- }
- return 1;
- }
- if (arg != nullptr && context_ != nullptr) {
- arg->config =
- const_cast<grpc_tls_server_authorization_check_config*>(this);
- }
- return schedule_(config_user_data_, arg);
- }
- void Cancel(grpc_tls_server_authorization_check_arg* arg) const {
- if (cancel_ == nullptr) {
- gpr_log(GPR_ERROR, "cancel API is nullptr.");
- if (arg != nullptr) {
- arg->status = GRPC_STATUS_NOT_FOUND;
- arg->error_details->set_error_details(
- "schedule API in server authorization check config is nullptr");
- }
- return;
- }
- if (arg != nullptr) {
- arg->config =
- const_cast<grpc_tls_server_authorization_check_config*>(this);
- }
- cancel_(config_user_data_, arg);
- }
+ int Schedule(grpc_tls_server_authorization_check_arg* arg) const;
+
+ void Cancel(grpc_tls_server_authorization_check_arg* arg) const;
private:
/** This is a pointer to the wrapped language implementation of
void (*destruct_)(void* config_user_data);
};
-/* TLS credentials options. */
+// Contains configurable options specified by callers to configure their certain
+// security features supported in TLS.
+// TODO(ZhenLian): consider making this not ref-counted.
struct grpc_tls_credentials_options
: public grpc_core::RefCounted<grpc_tls_credentials_options> {
public:
- ~grpc_tls_credentials_options() {
- if (key_materials_config_.get() != nullptr) {
- key_materials_config_.get()->Unref();
- }
- if (credential_reload_config_.get() != nullptr) {
- credential_reload_config_.get()->Unref();
- }
- if (server_authorization_check_config_.get() != nullptr) {
- server_authorization_check_config_.get()->Unref();
- }
- }
+ ~grpc_tls_credentials_options() override = default;
- /* Getters for member fields. */
+ // Getters for member fields.
grpc_ssl_client_certificate_request_type cert_request_type() const {
return cert_request_type_;
}
}
grpc_tls_version min_tls_version() const { return min_tls_version_; }
grpc_tls_version max_tls_version() const { return max_tls_version_; }
- grpc_tls_key_materials_config* key_materials_config() const {
- return key_materials_config_.get();
- }
- grpc_tls_credential_reload_config* credential_reload_config() const {
- return credential_reload_config_.get();
- }
grpc_tls_server_authorization_check_config*
server_authorization_check_config() const {
return server_authorization_check_config_.get();
}
+ // Returns the distributor from provider_ if it is set, nullptr otherwise.
+ grpc_tls_certificate_distributor* certificate_distributor() {
+ if (provider_ != nullptr) return provider_->distributor().get();
+ return nullptr;
+ }
+ bool watch_root_cert() { return watch_root_cert_; }
+ const std::string& root_cert_name() { return root_cert_name_; }
+ bool watch_identity_pair() { return watch_identity_pair_; }
+ const std::string& identity_cert_name() { return identity_cert_name_; }
- /* Setters for member fields. */
+ // Setters for member fields.
void set_cert_request_type(
const grpc_ssl_client_certificate_request_type type) {
cert_request_type_ = type;
void set_max_tls_version(grpc_tls_version max_tls_version) {
max_tls_version_ = max_tls_version;
}
- void set_key_materials_config(
- grpc_core::RefCountedPtr<grpc_tls_key_materials_config> config) {
- key_materials_config_ = std::move(config);
- }
- void set_credential_reload_config(
- grpc_core::RefCountedPtr<grpc_tls_credential_reload_config> config) {
- credential_reload_config_ = std::move(config);
- }
void set_server_authorization_check_config(
grpc_core::RefCountedPtr<grpc_tls_server_authorization_check_config>
config) {
server_authorization_check_config_ = std::move(config);
}
+ // Sets the provider in the options.
+ // This should only be used by C-core API for Tls*Creds case.
+ void set_certificate_provider(
+ grpc_core::RefCountedPtr<grpc_tls_certificate_provider> provider) {
+ provider_ = std::move(provider);
+ }
+ // If need to watch the updates of root certificates with name
+ // |root_cert_name|. The default value is false. If used in tls_credentials,
+ // it should always be set to true unless the root certificates are not
+ // needed.
+ void set_watch_root_cert(bool watch) { watch_root_cert_ = watch; }
+ // Sets the name of root certificates being watched, if |set_watch_root_cert|
+ // is called. If not set, an empty string will be used as the name.
+ void set_root_cert_name(std::string root_cert_name) {
+ root_cert_name_ = std::move(root_cert_name);
+ }
+ // If need to watch the updates of identity certificates with name
+ // |identity_cert_name|.
+ // The default value is false.
+ // If used in tls_credentials, it should always be set to true
+ // unless the identity key-cert pairs are not needed.
+ void set_watch_identity_pair(bool watch) { watch_identity_pair_ = watch; }
+ // Sets the name of identity key-cert pairs being watched, if
+ // |set_watch_identity_pair| is called. If not set, an empty string will
+ // be used as the name.
+ void set_identity_cert_name(std::string identity_cert_name) {
+ identity_cert_name_ = std::move(identity_cert_name);
+ }
private:
- grpc_ssl_client_certificate_request_type cert_request_type_;
+ grpc_ssl_client_certificate_request_type cert_request_type_ =
+ GRPC_SSL_DONT_REQUEST_CLIENT_CERTIFICATE;
grpc_tls_server_verification_option server_verification_option_ =
GRPC_TLS_SERVER_VERIFICATION;
grpc_tls_version min_tls_version_ = grpc_tls_version::TLS1_2;
grpc_tls_version max_tls_version_ = grpc_tls_version::TLS1_3;
- grpc_core::RefCountedPtr<grpc_tls_key_materials_config> key_materials_config_;
- grpc_core::RefCountedPtr<grpc_tls_credential_reload_config>
- credential_reload_config_;
grpc_core::RefCountedPtr<grpc_tls_server_authorization_check_config>
server_authorization_check_config_;
+ grpc_core::RefCountedPtr<grpc_tls_certificate_provider> provider_;
+ bool watch_root_cert_ = false;
+ std::string root_cert_name_;
+ bool watch_identity_pair_ = false;
+ std::string identity_cert_name_;
};
-#endif /* GRPC_CORE_LIB_SECURITY_CREDENTIALS_TLS_GRPC_TLS_CREDENTIALS_OPTIONS_H \
- */
+#endif // GRPC_CORE_LIB_SECURITY_CREDENTIALS_TLS_GRPC_TLS_CREDENTIALS_OPTIONS_H
gpr_log(GPR_ERROR, "TLS credentials options is nullptr.");
return false;
}
- if (options->key_materials_config() == nullptr &&
- options->credential_reload_config() == nullptr) {
- gpr_log(GPR_ERROR,
- "TLS credentials options must specify either key materials or "
- "credential reload config.");
- return false;
- }
+ // TODO(ZhenLian): remove this when it is also supported on server side.
if (!is_client && options->server_authorization_check_config() != nullptr) {
gpr_log(GPR_INFO,
"Server's credentials options should not contain server "
"authorization check config.");
}
+ if (options->server_verification_option() != GRPC_TLS_SERVER_VERIFICATION &&
+ options->server_authorization_check_config() == nullptr) {
+ gpr_log(GPR_ERROR,
+ "Should provider custom verifications if bypassing default ones.");
+ return false;
+ }
return true;
}
}
grpc_core::RefCountedPtr<grpc_channel_security_connector> sc =
grpc_core::TlsChannelSecurityConnector::CreateTlsChannelSecurityConnector(
- this->Ref(), std::move(call_creds), target_name,
+ this->Ref(), options_, std::move(call_creds), target_name,
overridden_target_name, ssl_session_cache);
if (sc == nullptr) {
return nullptr;
}
- grpc_arg new_arg = grpc_channel_arg_string_create(
- (char*)GRPC_ARG_HTTP2_SCHEME, (char*)"https");
- *new_args = grpc_channel_args_copy_and_add(args, &new_arg, 1);
+ if (args != nullptr) {
+ grpc_arg new_arg = grpc_channel_arg_string_create(
+ (char*)GRPC_ARG_HTTP2_SCHEME, (char*)"https");
+ *new_args = grpc_channel_args_copy_and_add(args, &new_arg, 1);
+ }
return sc;
}
grpc_core::RefCountedPtr<grpc_server_security_connector>
TlsServerCredentials::create_security_connector() {
return grpc_core::TlsServerSecurityConnector::
- CreateTlsServerSecurityConnector(this->Ref());
+ CreateTlsServerSecurityConnector(this->Ref(), options_);
}
+/** -- Wrapper APIs declared in grpc_security.h -- **/
+
grpc_channel_credentials* grpc_tls_credentials_create(
grpc_tls_credentials_options* options) {
if (!CredentialOptionSanityCheck(options, true /* is_client */)) {
const char* target_name, const grpc_channel_args* args,
grpc_channel_args** new_args) override;
- const grpc_tls_credentials_options& options() const { return *options_; }
+ grpc_tls_credentials_options* options() const { return options_.get(); }
private:
grpc_core::RefCountedPtr<grpc_tls_credentials_options> options_;
grpc_core::RefCountedPtr<grpc_server_security_connector>
create_security_connector() override;
- const grpc_tls_credentials_options& options() const { return *options_; }
+ grpc_tls_credentials_options* options() const { return options_.get(); }
private:
grpc_core::RefCountedPtr<grpc_tls_credentials_options> options_;
}
prop_name = peer.properties[0].name;
if (prop_name == nullptr ||
- strcmp(prop_name, TSI_CERTIFICATE_TYPE_PEER_PROPERTY)) {
+ strcmp(prop_name, TSI_CERTIFICATE_TYPE_PEER_PROPERTY) != 0) {
error = GRPC_ERROR_CREATE_FROM_COPIED_STRING(
absl::StrCat("Unexpected property in fake peer: ",
prop_name == nullptr ? "<EMPTY>" : prop_name)
goto end;
}
if (strncmp(peer.properties[0].value.data, TSI_FAKE_CERTIFICATE_TYPE,
- peer.properties[0].value.length)) {
+ peer.properties[0].value.length) != 0) {
error = GRPC_ERROR_CREATE_FROM_STATIC_STRING(
"Invalid value for cert type property.");
goto end;
--- /dev/null
+//
+//
+// Copyright 2020 gRPC authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+//
+
+#include <grpc/support/port_platform.h>
+
+#include "src/core/lib/security/security_connector/insecure/insecure_security_connector.h"
+
+#include "src/core/lib/gprpp/ref_counted_ptr.h"
+#include "src/core/lib/security/transport/security_handshaker.h"
+#include "src/core/tsi/local_transport_security.h"
+
+namespace grpc_core {
+
+const char kInsecureTransportSecurityType[] = "insecure";
+
+// check_call_host and cancel_check_call_host are no-ops since we want to
+// provide an insecure channel.
+bool InsecureChannelSecurityConnector::check_call_host(
+ absl::string_view host, grpc_auth_context* auth_context,
+ grpc_closure* on_call_host_checked, grpc_error** error) {
+ *error = GRPC_ERROR_NONE;
+ return true;
+}
+
+void InsecureChannelSecurityConnector::cancel_check_call_host(
+ grpc_closure* on_call_host_checked, grpc_error* error) {
+ GRPC_ERROR_UNREF(error);
+}
+
+// add_handshakers should have been a no-op but we need to add a minimalist
+// security handshaker so that check_peer is invoked and an auth_context is
+// created with the security level of TSI_SECURITY_NONE.
+void InsecureChannelSecurityConnector::add_handshakers(
+ const grpc_channel_args* args, grpc_pollset_set* /* interested_parties */,
+ HandshakeManager* handshake_manager) {
+ tsi_handshaker* handshaker = nullptr;
+ // Re-use local_tsi_handshaker_create as a minimalist handshaker.
+ GPR_ASSERT(tsi_local_handshaker_create(true /* is_client */, &handshaker) ==
+ TSI_OK);
+ handshake_manager->Add(SecurityHandshakerCreate(handshaker, this, args));
+}
+
+void InsecureChannelSecurityConnector::check_peer(
+ tsi_peer peer, grpc_endpoint* ep,
+ RefCountedPtr<grpc_auth_context>* auth_context,
+ grpc_closure* on_peer_checked) {
+ *auth_context = MakeAuthContext();
+ tsi_peer_destruct(&peer);
+ ExecCtx::Run(DEBUG_LOCATION, on_peer_checked, GRPC_ERROR_NONE);
+}
+
+int InsecureChannelSecurityConnector::cmp(
+ const grpc_security_connector* other_sc) const {
+ return channel_security_connector_cmp(
+ static_cast<const grpc_channel_security_connector*>(other_sc));
+}
+
+RefCountedPtr<grpc_auth_context>
+InsecureChannelSecurityConnector::MakeAuthContext() {
+ auto ctx = MakeRefCounted<grpc_auth_context>(nullptr);
+ grpc_auth_context_add_cstring_property(
+ ctx.get(), GRPC_TRANSPORT_SECURITY_TYPE_PROPERTY_NAME,
+ kInsecureTransportSecurityType);
+ GPR_ASSERT(grpc_auth_context_set_peer_identity_property_name(
+ ctx.get(), GRPC_TRANSPORT_SECURITY_TYPE_PROPERTY_NAME) == 1);
+ const char* security_level = tsi_security_level_to_string(TSI_SECURITY_NONE);
+ grpc_auth_context_add_property(ctx.get(),
+ GRPC_TRANSPORT_SECURITY_LEVEL_PROPERTY_NAME,
+ security_level, strlen(security_level));
+ return ctx;
+}
+
+} // namespace grpc_core
--- /dev/null
+//
+//
+// Copyright 2020 gRPC authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+//
+
+#ifndef GRPC_CORE_LIB_SECURITY_SECURITY_CONNECTOR_INSECURE_INSECURE_SECURITY_CONNECTOR_H
+#define GRPC_CORE_LIB_SECURITY_SECURITY_CONNECTOR_INSECURE_INSECURE_SECURITY_CONNECTOR_H
+
+#include <grpc/support/port_platform.h>
+
+#include "src/core/lib/security/context/security_context.h"
+#include "src/core/lib/security/credentials/credentials.h"
+#include "src/core/lib/security/security_connector/security_connector.h"
+
+namespace grpc_core {
+
+extern const char kInsecureTransportSecurityType[];
+
+class InsecureChannelSecurityConnector
+ : public grpc_channel_security_connector {
+ public:
+ InsecureChannelSecurityConnector(
+ grpc_core::RefCountedPtr<grpc_channel_credentials> channel_creds,
+ grpc_core::RefCountedPtr<grpc_call_credentials> request_metadata_creds)
+ : grpc_channel_security_connector(/* url_scheme */ nullptr,
+ std::move(channel_creds),
+ std::move(request_metadata_creds)) {}
+
+ bool check_call_host(absl::string_view host, grpc_auth_context* auth_context,
+ grpc_closure* on_call_host_checked,
+ grpc_error** error) override;
+
+ void cancel_check_call_host(grpc_closure* on_call_host_checked,
+ grpc_error* error) override;
+
+ void add_handshakers(const grpc_channel_args* args,
+ grpc_pollset_set* /* interested_parties */,
+ grpc_core::HandshakeManager* handshake_manager) override;
+
+ void check_peer(tsi_peer peer, grpc_endpoint* ep,
+ grpc_core::RefCountedPtr<grpc_auth_context>* auth_context,
+ grpc_closure* on_peer_checked) override;
+
+ int cmp(const grpc_security_connector* other_sc) const override;
+
+ // Exposed for testing purposes only.
+ // Create an auth context which is necessary to pass the santiy check in
+ // client_auth_filter that verifies if the peer's auth context is obtained
+ // during handshakes. The auth context is only checked for its existence and
+ // not actually used.
+ static RefCountedPtr<grpc_auth_context> MakeAuthContext();
+};
+
+} // namespace grpc_core
+
+#endif /* GRPC_CORE_LIB_SECURITY_SECURITY_CONNECTOR_INSECURE_INSECURE_SECURITY_CONNECTOR_H \
+ */
#ifndef GRPC_CORE_LIB_SECURITY_SECURITY_CONNECTOR_LOAD_SYSTEM_ROOTS_H
#define GRPC_CORE_LIB_SECURITY_SECURITY_CONNECTOR_LOAD_SYSTEM_ROOTS_H
+#include <grpc/support/port_platform.h>
+
+#include <grpc/slice.h>
+
namespace grpc_core {
// Returns a slice containing roots from the OS trust store
#include <grpc/support/port_platform.h>
+#include <grpc/slice.h>
+
#ifdef GPR_LINUX
namespace grpc_core {
const grpc_channel_args* args, grpc_pollset_set* /*interested_parties*/,
grpc_core::HandshakeManager* handshake_manager) override {
tsi_handshaker* handshaker = nullptr;
- GPR_ASSERT(local_tsi_handshaker_create(true /* is_client */, &handshaker) ==
+ GPR_ASSERT(tsi_local_handshaker_create(true /* is_client */, &handshaker) ==
TSI_OK);
handshake_manager->Add(
grpc_core::SecurityHandshakerCreate(handshaker, this, args));
const grpc_channel_args* args, grpc_pollset_set* /*interested_parties*/,
grpc_core::HandshakeManager* handshake_manager) override {
tsi_handshaker* handshaker = nullptr;
- GPR_ASSERT(local_tsi_handshaker_create(false /* is_client */,
+ GPR_ASSERT(tsi_local_handshaker_create(false /* is_client */,
&handshaker) == TSI_OK);
handshake_manager->Add(
grpc_core::SecurityHandshakerCreate(handshaker, this, args));
}
grpc_security_connector* grpc_security_connector_from_arg(const grpc_arg* arg) {
- if (strcmp(arg->key, GRPC_ARG_SECURITY_CONNECTOR)) return nullptr;
+ if (strcmp(arg->key, GRPC_ARG_SECURITY_CONNECTOR) != 0) return nullptr;
if (arg->type != GRPC_ARG_POINTER) {
gpr_log(GPR_ERROR, "Invalid type %d for arg %s", arg->type,
GRPC_ARG_SECURITY_CONNECTOR);
public:
explicit grpc_security_connector(const char* url_scheme)
: grpc_core::RefCounted<grpc_security_connector>(
- &grpc_trace_security_connector_refcount),
+ GRPC_TRACE_FLAG_ENABLED(grpc_trace_security_connector_refcount)
+ ? "security_connector_refcount"
+ : nullptr),
url_scheme_(url_scheme) {}
- virtual ~grpc_security_connector() = default;
+ ~grpc_security_connector() override = default;
/* Check the peer. Callee takes ownership of the peer object.
When done, sets *auth_context and invokes on_peer_checked. */
}
// Movable.
- PemKeyCertPair(PemKeyCertPair&& other) {
+ PemKeyCertPair(PemKeyCertPair&& other) noexcept {
private_key_ = std::move(other.private_key_);
cert_chain_ = std::move(other.cert_chain_);
}
- PemKeyCertPair& operator=(PemKeyCertPair&& other) {
+ PemKeyCertPair& operator=(PemKeyCertPair&& other) noexcept {
private_key_ = std::move(other.private_key_);
cert_chain_ = std::move(other.cert_chain_);
return *this;
grpc_core::UniquePtr<char> cert_chain_;
};
+typedef absl::InlinedVector<grpc_core::PemKeyCertPair, 1> PemKeyCertPairList;
+
} // namespace grpc_core
#endif /* GRPC_CORE_LIB_SECURITY_SECURITY_CONNECTOR_SSL_UTILS_H \
namespace {
tsi_ssl_pem_key_cert_pair* ConvertToTsiPemKeyCertPair(
- const grpc_tls_key_materials_config::PemKeyCertPairList& cert_pair_list) {
+ const grpc_core::PemKeyCertPairList& cert_pair_list) {
tsi_ssl_pem_key_cert_pair* tsi_pairs = nullptr;
size_t num_key_cert_pairs = cert_pair_list.size();
if (num_key_cert_pairs > 0) {
} // namespace
-grpc_status_code TlsFetchKeyMaterials(
- const grpc_core::RefCountedPtr<grpc_tls_key_materials_config>&
- key_materials_config,
- const grpc_tls_credentials_options& options, bool is_server,
- grpc_ssl_certificate_config_reload_status* status) {
- GPR_ASSERT(key_materials_config != nullptr);
- GPR_ASSERT(status != nullptr);
- bool is_key_materials_empty =
- key_materials_config->pem_key_cert_pair_list().empty();
- grpc_tls_credential_reload_config* credential_reload_config =
- options.credential_reload_config();
- /** If there are no key materials and no credential reload config and the
- * caller is a server, then return an error. We do not require that a client
- * always provision certificates. **/
- if (credential_reload_config == nullptr && is_key_materials_empty &&
- is_server) {
+// -------------------channel security connector-------------------
+grpc_core::RefCountedPtr<grpc_channel_security_connector>
+TlsChannelSecurityConnector::CreateTlsChannelSecurityConnector(
+ grpc_core::RefCountedPtr<grpc_channel_credentials> ch_creds,
+ grpc_core::RefCountedPtr<grpc_tls_credentials_options> options,
+ grpc_core::RefCountedPtr<grpc_call_credentials> request_metadata_creds,
+ const char* target_name, const char* overridden_target_name,
+ tsi_ssl_session_cache* ssl_session_cache) {
+ if (ch_creds == nullptr) {
gpr_log(GPR_ERROR,
- "Either credential reload config or key materials should be "
- "provisioned.");
- return GRPC_STATUS_FAILED_PRECONDITION;
- }
- grpc_status_code reload_status = GRPC_STATUS_OK;
- /** Use |credential_reload_config| to update |key_materials_config|. **/
- if (credential_reload_config != nullptr) {
- grpc_tls_credential_reload_arg* arg = new grpc_tls_credential_reload_arg();
- arg->key_materials_config = key_materials_config.get();
- arg->error_details = new grpc_tls_error_details();
- int result = credential_reload_config->Schedule(arg);
- if (result) {
- /** Credential reloading is performed async. This is not yet supported.
- * **/
- gpr_log(GPR_ERROR, "Async credential reload is unsupported now.");
- *status = GRPC_SSL_CERTIFICATE_CONFIG_RELOAD_UNCHANGED;
- reload_status =
- is_key_materials_empty ? GRPC_STATUS_UNIMPLEMENTED : GRPC_STATUS_OK;
- } else {
- /** Credential reloading is performed sync. **/
- *status = arg->status;
- if (arg->status == GRPC_SSL_CERTIFICATE_CONFIG_RELOAD_UNCHANGED) {
- /* Key materials is not empty. */
- gpr_log(GPR_DEBUG, "Credential does not change after reload.");
- } else if (arg->status == GRPC_SSL_CERTIFICATE_CONFIG_RELOAD_FAIL) {
- gpr_log(GPR_ERROR, "Credential reload failed with an error:");
- if (arg->error_details != nullptr) {
- gpr_log(GPR_ERROR, "%s", arg->error_details->error_details().c_str());
- }
- reload_status =
- is_key_materials_empty ? GRPC_STATUS_INTERNAL : GRPC_STATUS_OK;
- }
- }
- delete arg->error_details;
- /** If the credential reload config was constructed via a wrapped language,
- * then |arg->context| and |arg->destroy_context| will not be nullptr. In
- * this case, we must destroy |arg->context|, which stores the wrapped
- * language-version of the credential reload arg. **/
- if (arg->destroy_context != nullptr) {
- arg->destroy_context(arg->context);
- }
- delete arg;
+ "channel_creds is nullptr in "
+ "TlsChannelSecurityConnectorCreate()");
+ return nullptr;
}
- return reload_status;
-}
-
-grpc_error* TlsCheckHostName(const char* peer_name, const tsi_peer* peer) {
- /* Check the peer name if specified. */
- if (peer_name != nullptr && !grpc_ssl_host_matches_name(peer, peer_name)) {
- return GRPC_ERROR_CREATE_FROM_COPIED_STRING(
- absl::StrCat("Peer name ", peer_name, " is not in peer certificate")
- .c_str());
+ if (options == nullptr) {
+ gpr_log(GPR_ERROR,
+ "options is nullptr in "
+ "TlsChannelSecurityConnectorCreate()");
+ return nullptr;
}
- return GRPC_ERROR_NONE;
+ if (target_name == nullptr) {
+ gpr_log(GPR_ERROR,
+ "target_name is nullptr in "
+ "TlsChannelSecurityConnectorCreate()");
+ return nullptr;
+ }
+ grpc_core::RefCountedPtr<TlsChannelSecurityConnector> c =
+ grpc_core::MakeRefCounted<TlsChannelSecurityConnector>(
+ std::move(ch_creds), std::move(options),
+ std::move(request_metadata_creds), target_name,
+ overridden_target_name, ssl_session_cache);
+ return c;
}
TlsChannelSecurityConnector::TlsChannelSecurityConnector(
- grpc_core::RefCountedPtr<grpc_channel_credentials> channel_creds,
+ grpc_core::RefCountedPtr<grpc_channel_credentials> ch_creds,
+ grpc_core::RefCountedPtr<grpc_tls_credentials_options> options,
grpc_core::RefCountedPtr<grpc_call_credentials> request_metadata_creds,
- const char* target_name, const char* overridden_target_name)
- : grpc_channel_security_connector(GRPC_SSL_URL_SCHEME,
- std::move(channel_creds),
+ const char* target_name, const char* overridden_target_name,
+ tsi_ssl_session_cache* ssl_session_cache)
+ : grpc_channel_security_connector(GRPC_SSL_URL_SCHEME, std::move(ch_creds),
std::move(request_metadata_creds)),
+ options_(std::move(options)),
overridden_target_name_(
- overridden_target_name == nullptr ? "" : overridden_target_name) {
- key_materials_config_ = grpc_tls_key_materials_config_create()->Ref();
+ overridden_target_name == nullptr ? "" : overridden_target_name),
+ ssl_session_cache_(ssl_session_cache) {
+ if (ssl_session_cache_ != nullptr) {
+ tsi_ssl_session_cache_ref(ssl_session_cache_);
+ }
check_arg_ = ServerAuthorizationCheckArgCreate(this);
absl::string_view host;
absl::string_view port;
grpc_core::SplitHostPort(target_name, &host, &port);
target_name_ = std::string(host);
+ // Create a watcher.
+ auto watcher_ptr = absl::make_unique<TlsChannelCertificateWatcher>(this);
+ certificate_watcher_ = watcher_ptr.get();
+ // Register the watcher with the distributor.
+ grpc_tls_certificate_distributor* distributor =
+ options_->certificate_distributor();
+ absl::optional<std::string> watched_root_cert_name;
+ if (options_->watch_root_cert()) {
+ watched_root_cert_name = options_->root_cert_name();
+ }
+ absl::optional<std::string> watched_identity_cert_name;
+ if (options_->watch_identity_pair()) {
+ watched_identity_cert_name = options_->identity_cert_name();
+ }
+ distributor->WatchTlsCertificates(std::move(watcher_ptr),
+ watched_root_cert_name,
+ watched_identity_cert_name);
}
TlsChannelSecurityConnector::~TlsChannelSecurityConnector() {
+ if (ssl_session_cache_ != nullptr) {
+ tsi_ssl_session_cache_unref(ssl_session_cache_);
+ }
+ // Cancel all the watchers.
+ grpc_tls_certificate_distributor* distributor =
+ options_->certificate_distributor();
+ distributor->CancelTlsCertificatesWatch(certificate_watcher_);
if (client_handshaker_factory_ != nullptr) {
tsi_ssl_client_handshaker_factory_unref(client_handshaker_factory_);
}
- if (key_materials_config_.get() != nullptr) {
- key_materials_config_.get()->Unref();
+ if (check_arg_ != nullptr) {
+ ServerAuthorizationCheckArgDestroy(check_arg_);
}
- ServerAuthorizationCheckArgDestroy(check_arg_);
}
void TlsChannelSecurityConnector::add_handshakers(
const grpc_channel_args* args, grpc_pollset_set* /*interested_parties*/,
grpc_core::HandshakeManager* handshake_mgr) {
- if (RefreshHandshakerFactory() != GRPC_SECURITY_OK) {
- gpr_log(GPR_ERROR, "Handshaker factory refresh failed.");
- return;
- }
- // Instantiate TSI handshaker.
- tsi_handshaker* tsi_hs = nullptr;
- tsi_result result = tsi_ssl_client_handshaker_factory_create_handshaker(
- client_handshaker_factory_,
- overridden_target_name_.empty() ? target_name_.c_str()
- : overridden_target_name_.c_str(),
- &tsi_hs);
- if (result != TSI_OK) {
- gpr_log(GPR_ERROR, "Handshaker creation failed with error %s.",
- tsi_result_to_string(result));
+ grpc_core::MutexLock lock(&mu_);
+ if (client_handshaker_factory_ != nullptr) {
+ // Instantiate TSI handshaker.
+ tsi_handshaker* tsi_hs = nullptr;
+ tsi_result result = tsi_ssl_client_handshaker_factory_create_handshaker(
+ client_handshaker_factory_,
+ overridden_target_name_.empty() ? target_name_.c_str()
+ : overridden_target_name_.c_str(),
+ &tsi_hs);
+ if (result != TSI_OK) {
+ gpr_log(GPR_ERROR, "Handshaker creation failed with error %s.",
+ tsi_result_to_string(result));
+ return;
+ }
+ // Create handshakers.
+ handshake_mgr->Add(grpc_core::SecurityHandshakerCreate(tsi_hs, this, args));
return;
}
- // Create handshakers.
- handshake_mgr->Add(grpc_core::SecurityHandshakerCreate(tsi_hs, this, args));
+ // TODO(ZhenLian): Implement the logic(delegation to
+ // BlockOnInitialCredentialHandshaker) when certificates are not ready.
+ gpr_log(GPR_ERROR, "%s not supported yet.",
+ "Client BlockOnInitialCredentialHandshaker");
}
void TlsChannelSecurityConnector::check_peer(
}
*auth_context =
grpc_ssl_peer_to_auth_context(&peer, GRPC_TLS_TRANSPORT_SECURITY_TYPE);
- const TlsCredentials* creds =
- static_cast<const TlsCredentials*>(channel_creds());
- if (creds->options().server_verification_option() ==
- GRPC_TLS_SERVER_VERIFICATION) {
+ if (options_->server_verification_option() == GRPC_TLS_SERVER_VERIFICATION) {
/* Do the default host name check if specifying the target name. */
- error = TlsCheckHostName(target_name, &peer);
+ error = internal::TlsCheckHostName(target_name, &peer);
if (error != GRPC_ERROR_NONE) {
grpc_core::ExecCtx::Run(DEBUG_LOCATION, on_peer_checked, error);
tsi_peer_destruct(&peer);
}
/* Do the custom server authorization check, if specified by the user. */
const grpc_tls_server_authorization_check_config* config =
- creds->options().server_authorization_check_config();
+ options_->server_authorization_check_config();
/* If server authorization config is not null, use it to perform
* server authorization check. */
if (config != nullptr) {
GRPC_ERROR_UNREF(error);
}
-grpc_core::RefCountedPtr<grpc_channel_security_connector>
-TlsChannelSecurityConnector::CreateTlsChannelSecurityConnector(
- grpc_core::RefCountedPtr<grpc_channel_credentials> channel_creds,
- grpc_core::RefCountedPtr<grpc_call_credentials> request_metadata_creds,
- const char* target_name, const char* overridden_target_name,
- tsi_ssl_session_cache* ssl_session_cache) {
- if (channel_creds == nullptr) {
- gpr_log(GPR_ERROR,
- "channel_creds is nullptr in "
- "TlsChannelSecurityConnectorCreate()");
- return nullptr;
+void TlsChannelSecurityConnector::TlsChannelCertificateWatcher::
+ OnCertificatesChanged(
+ absl::optional<absl::string_view> root_certs,
+ absl::optional<grpc_core::PemKeyCertPairList> key_cert_pairs) {
+ GPR_ASSERT(security_connector_ != nullptr);
+ grpc_core::MutexLock lock(&security_connector_->mu_);
+ if (root_certs.has_value()) {
+ security_connector_->pem_root_certs_ = root_certs;
+ }
+ if (key_cert_pairs.has_value()) {
+ security_connector_->pem_key_cert_pair_list_ = std::move(key_cert_pairs);
+ }
+ bool root_being_watched = security_connector_->options_->watch_root_cert();
+ bool root_has_value = security_connector_->pem_root_certs_.has_value();
+ bool identity_being_watched =
+ security_connector_->options_->watch_identity_pair();
+ bool identity_has_value =
+ security_connector_->pem_key_cert_pair_list_.has_value();
+ if ((root_being_watched && root_has_value && identity_being_watched &&
+ identity_has_value) ||
+ (root_being_watched && root_has_value && !identity_being_watched) ||
+ (!root_being_watched && identity_being_watched && identity_has_value)) {
+ if (security_connector_->UpdateHandshakerFactoryLocked() !=
+ GRPC_SECURITY_OK) {
+ gpr_log(GPR_ERROR, "Update handshaker factory failed.");
+ }
}
- if (target_name == nullptr) {
+}
+
+// TODO(ZhenLian): implement the logic to signal waiting handshakers once
+// BlockOnInitialCredentialHandshaker is implemented.
+void TlsChannelSecurityConnector::TlsChannelCertificateWatcher::OnError(
+ grpc_error* root_cert_error, grpc_error* identity_cert_error) {
+ if (root_cert_error != GRPC_ERROR_NONE) {
gpr_log(GPR_ERROR,
- "target_name is nullptr in "
- "TlsChannelSecurityConnectorCreate()");
- return nullptr;
+ "TlsChannelCertificateWatcher getting root_cert_error: %s",
+ grpc_error_string(root_cert_error));
}
- grpc_core::RefCountedPtr<TlsChannelSecurityConnector> c =
- grpc_core::MakeRefCounted<TlsChannelSecurityConnector>(
- std::move(channel_creds), std::move(request_metadata_creds),
- target_name, overridden_target_name);
- if (c->InitializeHandshakerFactory(ssl_session_cache) != GRPC_SECURITY_OK) {
- gpr_log(GPR_ERROR, "Could not initialize client handshaker factory.");
- return nullptr;
+ if (identity_cert_error != GRPC_ERROR_NONE) {
+ gpr_log(GPR_ERROR,
+ "TlsChannelCertificateWatcher getting identity_cert_error: %s",
+ grpc_error_string(identity_cert_error));
}
- return c;
+ GRPC_ERROR_UNREF(root_cert_error);
+ GRPC_ERROR_UNREF(identity_cert_error);
}
-grpc_security_status TlsChannelSecurityConnector::ReplaceHandshakerFactory(
- tsi_ssl_session_cache* ssl_session_cache) {
- const TlsCredentials* creds =
- static_cast<const TlsCredentials*>(channel_creds());
+// TODO(ZhenLian): implement the logic to signal waiting handshakers once
+// BlockOnInitialCredentialHandshaker is implemented.
+grpc_security_status
+TlsChannelSecurityConnector::UpdateHandshakerFactoryLocked() {
bool skip_server_certificate_verification =
- creds->options().server_verification_option() ==
+ options_->server_verification_option() ==
GRPC_TLS_SKIP_ALL_SERVER_VERIFICATION;
/* Free the client handshaker factory if exists. */
- if (client_handshaker_factory_) {
+ if (client_handshaker_factory_ != nullptr) {
tsi_ssl_client_handshaker_factory_unref(client_handshaker_factory_);
}
- tsi_ssl_pem_key_cert_pair* pem_key_cert_pair = ConvertToTsiPemKeyCertPair(
- key_materials_config_->pem_key_cert_pair_list());
+ std::string pem_root_certs;
+ if (pem_root_certs_.has_value()) {
+ // TODO(ZhenLian): update the underlying TSI layer to use C++ types like
+ // std::string and absl::string_view to avoid making another copy here.
+ pem_root_certs = std::string(*pem_root_certs_);
+ }
+ tsi_ssl_pem_key_cert_pair* pem_key_cert_pair = nullptr;
+ if (pem_key_cert_pair_list_.has_value()) {
+ pem_key_cert_pair = ConvertToTsiPemKeyCertPair(*pem_key_cert_pair_list_);
+ }
grpc_security_status status = grpc_ssl_tsi_client_handshaker_factory_init(
- pem_key_cert_pair, key_materials_config_->pem_root_certs(),
+ pem_key_cert_pair,
+ pem_root_certs.empty() ? nullptr : pem_root_certs.c_str(),
skip_server_certificate_verification,
- grpc_get_tsi_tls_version(creds->options().min_tls_version()),
- grpc_get_tsi_tls_version(creds->options().max_tls_version()),
- ssl_session_cache, &client_handshaker_factory_);
+ grpc_get_tsi_tls_version(options_->min_tls_version()),
+ grpc_get_tsi_tls_version(options_->max_tls_version()), ssl_session_cache_,
+ &client_handshaker_factory_);
/* Free memory. */
- grpc_tsi_ssl_pem_key_cert_pairs_destroy(pem_key_cert_pair, 1);
- return status;
-}
-
-grpc_security_status TlsChannelSecurityConnector::InitializeHandshakerFactory(
- tsi_ssl_session_cache* ssl_session_cache) {
- grpc_core::MutexLock lock(&mu_);
- const TlsCredentials* creds =
- static_cast<const TlsCredentials*>(channel_creds());
- grpc_tls_key_materials_config* key_materials_config =
- creds->options().key_materials_config();
- // key_materials_config_->set_key_materials will handle the copying of the key
- // materials users provided
- if (key_materials_config != nullptr) {
- key_materials_config_->set_key_materials(
- key_materials_config->pem_root_certs(),
- key_materials_config->pem_key_cert_pair_list());
- }
- grpc_ssl_certificate_config_reload_status reload_status =
- GRPC_SSL_CERTIFICATE_CONFIG_RELOAD_UNCHANGED;
- /** If |creds->options()| has a credential reload config, then the call to
- * |TlsFetchKeyMaterials| will use it to update the root cert and
- * pem-key-cert-pair list stored in |key_materials_config_|. **/
- if (TlsFetchKeyMaterials(key_materials_config_, creds->options(), false,
- &reload_status) != GRPC_STATUS_OK) {
- /* Raise an error if key materials are not populated. */
- return GRPC_SECURITY_ERROR;
- }
- return ReplaceHandshakerFactory(ssl_session_cache);
-}
-
-grpc_security_status TlsChannelSecurityConnector::RefreshHandshakerFactory() {
- grpc_core::MutexLock lock(&mu_);
- const TlsCredentials* creds =
- static_cast<const TlsCredentials*>(channel_creds());
- grpc_ssl_certificate_config_reload_status reload_status =
- GRPC_SSL_CERTIFICATE_CONFIG_RELOAD_UNCHANGED;
- /** If |creds->options()| has a credential reload config, then the call to
- * |TlsFetchKeyMaterials| will use it to update the root cert and
- * pem-key-cert-pair list stored in |key_materials_config_|. **/
- if (TlsFetchKeyMaterials(key_materials_config_, creds->options(), false,
- &reload_status) != GRPC_STATUS_OK) {
- return GRPC_SECURITY_ERROR;
- }
- if (reload_status != GRPC_SSL_CERTIFICATE_CONFIG_RELOAD_NEW) {
- // Re-use existing handshaker factory.
- return GRPC_SECURITY_OK;
- } else {
- return ReplaceHandshakerFactory(nullptr);
+ if (pem_key_cert_pair != nullptr) {
+ grpc_tsi_ssl_pem_key_cert_pairs_destroy(pem_key_cert_pair, 1);
}
+ return status;
}
void TlsChannelSecurityConnector::ServerAuthorizationCheckDone(
delete arg;
}
+// -------------------server security connector-------------------
+grpc_core::RefCountedPtr<grpc_server_security_connector>
+TlsServerSecurityConnector::CreateTlsServerSecurityConnector(
+ grpc_core::RefCountedPtr<grpc_server_credentials> server_creds,
+ grpc_core::RefCountedPtr<grpc_tls_credentials_options> options) {
+ if (server_creds == nullptr) {
+ gpr_log(GPR_ERROR,
+ "server_creds is nullptr in "
+ "TlsServerSecurityConnectorCreate()");
+ return nullptr;
+ }
+ if (options == nullptr) {
+ gpr_log(GPR_ERROR,
+ "options is nullptr in "
+ "TlsServerSecurityConnectorCreate()");
+ return nullptr;
+ }
+ grpc_core::RefCountedPtr<TlsServerSecurityConnector> c =
+ grpc_core::MakeRefCounted<TlsServerSecurityConnector>(
+ std::move(server_creds), std::move(options));
+ return c;
+}
+
TlsServerSecurityConnector::TlsServerSecurityConnector(
- grpc_core::RefCountedPtr<grpc_server_credentials> server_creds)
+ grpc_core::RefCountedPtr<grpc_server_credentials> server_creds,
+ grpc_core::RefCountedPtr<grpc_tls_credentials_options> options)
: grpc_server_security_connector(GRPC_SSL_URL_SCHEME,
- std::move(server_creds)) {
- key_materials_config_ = grpc_tls_key_materials_config_create()->Ref();
+ std::move(server_creds)),
+ options_(std::move(options)) {
+ // Create a watcher.
+ auto watcher_ptr = absl::make_unique<TlsServerCertificateWatcher>(this);
+ certificate_watcher_ = watcher_ptr.get();
+ // Register the watcher with the distributor.
+ grpc_tls_certificate_distributor* distributor =
+ options_->certificate_distributor();
+ absl::optional<std::string> watched_root_cert_name;
+ if (options_->watch_root_cert()) {
+ watched_root_cert_name = options_->root_cert_name();
+ }
+ absl::optional<std::string> watched_identity_cert_name;
+ if (options_->watch_identity_pair()) {
+ watched_identity_cert_name = options_->identity_cert_name();
+ }
+ distributor->WatchTlsCertificates(std::move(watcher_ptr),
+ watched_root_cert_name,
+ watched_identity_cert_name);
}
TlsServerSecurityConnector::~TlsServerSecurityConnector() {
+ // Cancel all the watchers.
+ grpc_tls_certificate_distributor* distributor =
+ options_->certificate_distributor();
+ distributor->CancelTlsCertificatesWatch(certificate_watcher_);
if (server_handshaker_factory_ != nullptr) {
tsi_ssl_server_handshaker_factory_unref(server_handshaker_factory_);
}
- if (key_materials_config_.get() != nullptr) {
- key_materials_config_.get()->Unref();
- }
}
void TlsServerSecurityConnector::add_handshakers(
const grpc_channel_args* args, grpc_pollset_set* /*interested_parties*/,
grpc_core::HandshakeManager* handshake_mgr) {
- /* Refresh handshaker factory if needed. */
- if (RefreshHandshakerFactory() != GRPC_SECURITY_OK) {
- gpr_log(GPR_ERROR, "Handshaker factory refresh failed.");
- return;
- }
- /* Create a TLS TSI handshaker for server. */
- tsi_handshaker* tsi_hs = nullptr;
- tsi_result result = tsi_ssl_server_handshaker_factory_create_handshaker(
- server_handshaker_factory_, &tsi_hs);
- if (result != TSI_OK) {
- gpr_log(GPR_ERROR, "Handshaker creation failed with error %s.",
- tsi_result_to_string(result));
+ grpc_core::MutexLock lock(&mu_);
+ if (server_handshaker_factory_ != nullptr) {
+ // Instantiate TSI handshaker.
+ tsi_handshaker* tsi_hs = nullptr;
+ tsi_result result = tsi_ssl_server_handshaker_factory_create_handshaker(
+ server_handshaker_factory_, &tsi_hs);
+ if (result != TSI_OK) {
+ gpr_log(GPR_ERROR, "Handshaker creation failed with error %s.",
+ tsi_result_to_string(result));
+ return;
+ }
+ // Create handshakers.
+ handshake_mgr->Add(grpc_core::SecurityHandshakerCreate(tsi_hs, this, args));
return;
}
- handshake_mgr->Add(grpc_core::SecurityHandshakerCreate(tsi_hs, this, args));
+ // TODO(ZhenLian): Implement the logic(delegation to
+ // BlockOnInitialCredentialHandshaker) when certificates are not ready.
+ gpr_log(GPR_ERROR, "%s not supported yet.",
+ "Server BlockOnInitialCredentialHandshaker");
}
void TlsServerSecurityConnector::check_peer(
static_cast<const grpc_server_security_connector*>(other));
}
-grpc_core::RefCountedPtr<grpc_server_security_connector>
-TlsServerSecurityConnector::CreateTlsServerSecurityConnector(
- grpc_core::RefCountedPtr<grpc_server_credentials> server_creds) {
- if (server_creds == nullptr) {
+void TlsServerSecurityConnector::TlsServerCertificateWatcher::
+ OnCertificatesChanged(
+ absl::optional<absl::string_view> root_certs,
+ absl::optional<grpc_core::PemKeyCertPairList> key_cert_pairs) {
+ GPR_ASSERT(security_connector_ != nullptr);
+ grpc_core::MutexLock lock(&security_connector_->mu_);
+ if (root_certs.has_value()) {
+ security_connector_->pem_root_certs_ = root_certs;
+ }
+ if (key_cert_pairs.has_value()) {
+ security_connector_->pem_key_cert_pair_list_ = std::move(key_cert_pairs);
+ }
+ bool root_being_watched = security_connector_->options_->watch_root_cert();
+ bool root_has_value = security_connector_->pem_root_certs_.has_value();
+ bool identity_being_watched =
+ security_connector_->options_->watch_identity_pair();
+ bool identity_has_value =
+ security_connector_->pem_key_cert_pair_list_.has_value();
+ if ((root_being_watched && root_has_value && identity_being_watched &&
+ identity_has_value) ||
+ (root_being_watched && root_has_value && !identity_being_watched) ||
+ (!root_being_watched && identity_being_watched && identity_has_value)) {
+ if (security_connector_->UpdateHandshakerFactoryLocked() !=
+ GRPC_SECURITY_OK) {
+ gpr_log(GPR_ERROR, "Update handshaker factory failed.");
+ }
+ }
+}
+
+// TODO(ZhenLian): implement the logic to signal waiting handshakers once
+// BlockOnInitialCredentialHandshaker is implemented.
+void TlsServerSecurityConnector::TlsServerCertificateWatcher::OnError(
+ grpc_error* root_cert_error, grpc_error* identity_cert_error) {
+ if (root_cert_error != GRPC_ERROR_NONE) {
gpr_log(GPR_ERROR,
- "server_creds is nullptr in "
- "TlsServerSecurityConnectorCreate()");
- return nullptr;
+ "TlsServerCertificateWatcher getting root_cert_error: %s",
+ grpc_error_string(root_cert_error));
}
- grpc_core::RefCountedPtr<TlsServerSecurityConnector> c =
- grpc_core::MakeRefCounted<TlsServerSecurityConnector>(
- std::move(server_creds));
- if (c->InitializeHandshakerFactory() != GRPC_SECURITY_OK) {
- gpr_log(GPR_ERROR, "Could not initialize server handshaker factory.");
- return nullptr;
+ if (identity_cert_error != GRPC_ERROR_NONE) {
+ gpr_log(GPR_ERROR,
+ "TlsServerCertificateWatcher getting identity_cert_error: %s",
+ grpc_error_string(identity_cert_error));
}
- return c;
+ GRPC_ERROR_UNREF(root_cert_error);
+ GRPC_ERROR_UNREF(identity_cert_error);
}
-grpc_security_status TlsServerSecurityConnector::ReplaceHandshakerFactory() {
- const TlsServerCredentials* creds =
- static_cast<const TlsServerCredentials*>(server_creds());
+// TODO(ZhenLian): implement the logic to signal waiting handshakers once
+// BlockOnInitialCredentialHandshaker is implemented.
+grpc_security_status
+TlsServerSecurityConnector::UpdateHandshakerFactoryLocked() {
/* Free the server handshaker factory if exists. */
- if (server_handshaker_factory_) {
+ if (server_handshaker_factory_ != nullptr) {
tsi_ssl_server_handshaker_factory_unref(server_handshaker_factory_);
}
- GPR_ASSERT(!key_materials_config_->pem_key_cert_pair_list().empty());
- tsi_ssl_pem_key_cert_pair* pem_key_cert_pairs = ConvertToTsiPemKeyCertPair(
- key_materials_config_->pem_key_cert_pair_list());
- size_t num_key_cert_pairs =
- key_materials_config_->pem_key_cert_pair_list().size();
+ // The identity certs on the server side shouldn't be empty.
+ GPR_ASSERT(pem_key_cert_pair_list_.has_value());
+ GPR_ASSERT(!(*pem_key_cert_pair_list_).empty());
+ std::string pem_root_certs;
+ if (pem_root_certs_.has_value()) {
+ // TODO(ZhenLian): update the underlying TSI layer to use C++ types like
+ // std::string and absl::string_view to avoid making another copy here.
+ pem_root_certs = std::string(*pem_root_certs_);
+ }
+ tsi_ssl_pem_key_cert_pair* pem_key_cert_pairs = nullptr;
+ pem_key_cert_pairs = ConvertToTsiPemKeyCertPair(*pem_key_cert_pair_list_);
+ size_t num_key_cert_pairs = (*pem_key_cert_pair_list_).size();
grpc_security_status status = grpc_ssl_tsi_server_handshaker_factory_init(
pem_key_cert_pairs, num_key_cert_pairs,
- key_materials_config_->pem_root_certs(),
- creds->options().cert_request_type(),
- grpc_get_tsi_tls_version(creds->options().min_tls_version()),
- grpc_get_tsi_tls_version(creds->options().max_tls_version()),
+ pem_root_certs.empty() ? nullptr : pem_root_certs.c_str(),
+ options_->cert_request_type(),
+ grpc_get_tsi_tls_version(options_->min_tls_version()),
+ grpc_get_tsi_tls_version(options_->max_tls_version()),
&server_handshaker_factory_);
/* Free memory. */
grpc_tsi_ssl_pem_key_cert_pairs_destroy(pem_key_cert_pairs,
return status;
}
-grpc_security_status TlsServerSecurityConnector::InitializeHandshakerFactory() {
- grpc_core::MutexLock lock(&mu_);
- const TlsServerCredentials* creds =
- static_cast<const TlsServerCredentials*>(server_creds());
- grpc_tls_key_materials_config* key_materials_config =
- creds->options().key_materials_config();
- if (key_materials_config != nullptr) {
- key_materials_config_->set_key_materials(
- key_materials_config->pem_root_certs(),
- key_materials_config->pem_key_cert_pair_list());
- }
- grpc_ssl_certificate_config_reload_status reload_status =
- GRPC_SSL_CERTIFICATE_CONFIG_RELOAD_UNCHANGED;
- /** If |creds->options()| has a credential reload config, then the call to
- * |TlsFetchKeyMaterials| will use it to update the root cert and
- * pem-key-cert-pair list stored in |key_materials_config_|. Otherwise, it
- * will return |GRPC_STATUS_OK| if |key_materials_config_| already has
- * credentials, and an error code if not. **/
- if (TlsFetchKeyMaterials(key_materials_config_, creds->options(), true,
- &reload_status) != GRPC_STATUS_OK) {
- /* Raise an error if key materials are not populated. */
- return GRPC_SECURITY_ERROR;
- }
- return ReplaceHandshakerFactory();
-}
+namespace internal {
-grpc_security_status TlsServerSecurityConnector::RefreshHandshakerFactory() {
- grpc_core::MutexLock lock(&mu_);
- const TlsServerCredentials* creds =
- static_cast<const TlsServerCredentials*>(server_creds());
- grpc_ssl_certificate_config_reload_status reload_status =
- GRPC_SSL_CERTIFICATE_CONFIG_RELOAD_UNCHANGED;
- /** If |creds->options()| has a credential reload config, then the call to
- * |TlsFetchKeyMaterials| will use it to update the root cert and
- * pem-key-cert-pair list stored in |key_materials_config_|. Otherwise, it
- * will return |GRPC_STATUS_OK| if |key_materials_config_| already has
- * credentials, and an error code if not. **/
- if (TlsFetchKeyMaterials(key_materials_config_, creds->options(), true,
- &reload_status) != GRPC_STATUS_OK) {
- return GRPC_SECURITY_ERROR;
- }
- if (reload_status != GRPC_SSL_CERTIFICATE_CONFIG_RELOAD_NEW) {
- /* At this point, we should have key materials populated. */
- return GRPC_SECURITY_OK;
- } else {
- return ReplaceHandshakerFactory();
+grpc_error* TlsCheckHostName(const char* peer_name, const tsi_peer* peer) {
+ /* Check the peer name if specified. */
+ if (peer_name != nullptr && !grpc_ssl_host_matches_name(peer, peer_name)) {
+ return GRPC_ERROR_CREATE_FROM_COPIED_STRING(
+ absl::StrCat("Peer name ", peer_name, " is not in peer certificate")
+ .c_str());
}
+ return GRPC_ERROR_NONE;
}
+} // namespace internal
+
} // namespace grpc_core
#include "src/core/lib/gprpp/sync.h"
#include "src/core/lib/security/context/security_context.h"
+#include "src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h"
#include "src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h"
#define GRPC_TLS_TRANSPORT_SECURITY_TYPE "tls"
namespace grpc_core {
-// TLS channel security connector.
+// Channel security connector using TLS as transport security protocol.
class TlsChannelSecurityConnector final
: public grpc_channel_security_connector {
public:
static grpc_core::RefCountedPtr<grpc_channel_security_connector>
CreateTlsChannelSecurityConnector(
grpc_core::RefCountedPtr<grpc_channel_credentials> channel_creds,
+ grpc_core::RefCountedPtr<grpc_tls_credentials_options> options,
grpc_core::RefCountedPtr<grpc_call_credentials> request_metadata_creds,
const char* target_name, const char* overridden_target_name,
tsi_ssl_session_cache* ssl_session_cache);
TlsChannelSecurityConnector(
grpc_core::RefCountedPtr<grpc_channel_credentials> channel_creds,
+ grpc_core::RefCountedPtr<grpc_tls_credentials_options> options,
grpc_core::RefCountedPtr<grpc_call_credentials> request_metadata_creds,
- const char* target_name, const char* overridden_target_name);
+ const char* target_name, const char* overridden_target_name,
+ tsi_ssl_session_cache* ssl_session_cache);
+
~TlsChannelSecurityConnector() override;
void add_handshakers(const grpc_channel_args* args,
void cancel_check_call_host(grpc_closure* on_call_host_checked,
grpc_error* error) override;
- private:
- // Initialize SSL TSI client handshaker factory.
- grpc_security_status InitializeHandshakerFactory(
- tsi_ssl_session_cache* ssl_session_cache);
+ tsi_ssl_client_handshaker_factory* ClientHandshakerFactoryForTesting() {
+ grpc_core::MutexLock lock(&mu_);
+ return client_handshaker_factory_;
+ };
- // A util function to create a new client handshaker factory to replace
- // the existing one if exists.
- grpc_security_status ReplaceHandshakerFactory(
- tsi_ssl_session_cache* ssl_session_cache);
+ const absl::optional<absl::string_view>& RootCertsForTesting() {
+ grpc_core::MutexLock lock(&mu_);
+ return pem_root_certs_;
+ }
+
+ const absl::optional<grpc_core::PemKeyCertPairList>&
+ KeyCertPairListForTesting() {
+ grpc_core::MutexLock lock(&mu_);
+ return pem_key_cert_pair_list_;
+ }
+
+ private:
+ // A watcher that watches certificate updates from
+ // grpc_tls_certificate_distributor. It will never outlive
+ // |security_connector_|.
+ class TlsChannelCertificateWatcher : public grpc_tls_certificate_distributor::
+ TlsCertificatesWatcherInterface {
+ public:
+ explicit TlsChannelCertificateWatcher(
+ TlsChannelSecurityConnector* security_connector)
+ : security_connector_(security_connector) {}
+ void OnCertificatesChanged(
+ absl::optional<absl::string_view> root_certs,
+ absl::optional<grpc_core::PemKeyCertPairList> key_cert_pairs) override;
+ void OnError(grpc_error* root_cert_error,
+ grpc_error* identity_cert_error) override;
+
+ private:
+ TlsChannelSecurityConnector* security_connector_ = nullptr;
+ };
+
+ // Updates |client_handshaker_factory_| when the certificates that
+ // |certificate_watcher_| is watching get updated.
+ grpc_security_status UpdateHandshakerFactoryLocked();
// gRPC-provided callback executed by application, which servers to bring the
// control back to gRPC core.
static void ServerAuthorizationCheckArgDestroy(
grpc_tls_server_authorization_check_arg* arg);
- // A util function to refresh SSL TSI client handshaker factory with a valid
- // credential.
- grpc_security_status RefreshHandshakerFactory();
-
grpc_core::Mutex mu_;
- grpc_closure* on_peer_checked_;
+ grpc_core::RefCountedPtr<grpc_tls_credentials_options> options_;
+ grpc_tls_certificate_distributor::TlsCertificatesWatcherInterface*
+ certificate_watcher_ = nullptr;
+ grpc_closure* on_peer_checked_ = nullptr;
std::string target_name_;
std::string overridden_target_name_;
tsi_ssl_client_handshaker_factory* client_handshaker_factory_ = nullptr;
- grpc_tls_server_authorization_check_arg* check_arg_;
- grpc_core::RefCountedPtr<grpc_tls_key_materials_config> key_materials_config_;
+ grpc_tls_server_authorization_check_arg* check_arg_ = nullptr;
+ tsi_ssl_session_cache* ssl_session_cache_ = nullptr;
+ absl::optional<absl::string_view> pem_root_certs_;
+ absl::optional<grpc_core::PemKeyCertPairList> pem_key_cert_pair_list_;
};
-// TLS server security connector.
+// Server security connector using TLS as transport security protocol.
class TlsServerSecurityConnector final : public grpc_server_security_connector {
public:
// static factory method to create a TLS server security connector.
static grpc_core::RefCountedPtr<grpc_server_security_connector>
CreateTlsServerSecurityConnector(
- grpc_core::RefCountedPtr<grpc_server_credentials> server_creds);
+ grpc_core::RefCountedPtr<grpc_server_credentials> server_creds,
+ grpc_core::RefCountedPtr<grpc_tls_credentials_options> options);
- explicit TlsServerSecurityConnector(
- grpc_core::RefCountedPtr<grpc_server_credentials> server_creds);
+ TlsServerSecurityConnector(
+ grpc_core::RefCountedPtr<grpc_server_credentials> server_creds,
+ grpc_core::RefCountedPtr<grpc_tls_credentials_options> options);
~TlsServerSecurityConnector() override;
void add_handshakers(const grpc_channel_args* args,
int cmp(const grpc_security_connector* other) const override;
- private:
- // Initialize SSL TSI server handshaker factory.
- grpc_security_status InitializeHandshakerFactory();
+ tsi_ssl_server_handshaker_factory* ServerHandshakerFactoryForTesting() {
+ grpc_core::MutexLock lock(&mu_);
+ return server_handshaker_factory_;
+ };
- // A util function to create a new server handshaker factory to replace the
- // existing once if exists.
- grpc_security_status ReplaceHandshakerFactory();
+ const absl::optional<absl::string_view>& RootCertsForTesting() {
+ grpc_core::MutexLock lock(&mu_);
+ return pem_root_certs_;
+ }
- // A util function to refresh SSL TSI server handshaker factory with a valid
- // credential.
- grpc_security_status RefreshHandshakerFactory();
+ const absl::optional<grpc_core::PemKeyCertPairList>&
+ KeyCertPairListForTesting() {
+ grpc_core::MutexLock lock(&mu_);
+ return pem_key_cert_pair_list_;
+ }
+
+ private:
+ // A watcher that watches certificate updates from
+ // grpc_tls_certificate_distributor. It will never outlive
+ // |security_connector_|.
+ class TlsServerCertificateWatcher : public grpc_tls_certificate_distributor::
+ TlsCertificatesWatcherInterface {
+ public:
+ explicit TlsServerCertificateWatcher(
+ TlsServerSecurityConnector* security_connector)
+ : security_connector_(security_connector) {}
+ void OnCertificatesChanged(
+ absl::optional<absl::string_view> root_certs,
+ absl::optional<grpc_core::PemKeyCertPairList> key_cert_pairs) override;
+ void OnError(grpc_error* root_cert_error,
+ grpc_error* identity_cert_error) override;
+
+ private:
+ TlsServerSecurityConnector* security_connector_ = nullptr;
+ };
+
+ // Updates |server_handshaker_factory_| when the certificates that
+ // |certificate_watcher_| is watching get updated.
+ grpc_security_status UpdateHandshakerFactoryLocked();
grpc_core::Mutex mu_;
+ grpc_core::RefCountedPtr<grpc_tls_credentials_options> options_;
+ grpc_tls_certificate_distributor::TlsCertificatesWatcherInterface*
+ certificate_watcher_ = nullptr;
+
tsi_ssl_server_handshaker_factory* server_handshaker_factory_ = nullptr;
- grpc_core::RefCountedPtr<grpc_tls_key_materials_config> key_materials_config_;
+ absl::optional<absl::string_view> pem_root_certs_;
+ absl::optional<grpc_core::PemKeyCertPairList> pem_key_cert_pair_list_;
};
// ---- Functions below are exposed for testing only -----------------------
-
-/** The |TlsFetchKeyMaterials| API ensures that |key_materials_config| has a
- * non-empty pem-key-cert pair list. This is done as follows:
- * - if |options| is equipped with a credential reload config, then this
- * methods uses credential reloading to populate |key_materials_config|, and
- * afterwards it populates |reload_status| with the status of this operation.
- * In particular, any data stored in |key_materials_config| is overwritten.
- * - if |options| has no credential reload config, then:
- * - if |key_materials_config| already has a non-empty pem-key-cert pair
- * list or is called by a client, then the method returns |GRPC_STATUS_OK|.
- * - if |key_materials_config| has an empty pem-key-cert pair list and is
- * called by a server, then the method return an error code.
- *
- * The arguments are detailed below:
- * - key_materials_config: a key materials config that will be populated by the
- * method on success; the caller should not pass in nullptr. Any data held by
- * the config will be overwritten.
- * - options: the TLS credentials options whose credential reloading config
- * will be used to populate |key_materials_config|.
- * - is_server: true denotes that this method is called by a server, and
- * false denotes that this method is called by a client.
- * - status: the status of the credential reloading after the method
- * returns; the caller should not pass in nullptr. **/
-grpc_status_code TlsFetchKeyMaterials(
- const grpc_core::RefCountedPtr<grpc_tls_key_materials_config>&
- key_materials_config,
- const grpc_tls_credentials_options& options, bool is_server,
- grpc_ssl_certificate_config_reload_status* status);
+namespace internal {
// TlsCheckHostName checks if |peer_name| matches the identity information
// contained in |peer|. This is AKA hostname check.
grpc_error* TlsCheckHostName(const char* peer_name, const tsi_peer* peer);
+} // namespace internal
+
} // namespace grpc_core
-#endif /* GRPC_CORE_LIB_SECURITY_SECURITY_CONNECTOR_TLS_TLS_SECURITY_CONNECTOR_H \
- */
+#endif // GRPC_CORE_LIB_SECURITY_SECURITY_CONNECTOR_TLS_TLS_SECURITY_CONNECTOR_H
}
private:
- virtual ~FailHandshaker() = default;
+ ~FailHandshaker() override = default;
};
//
for (i = 0; i < calld->num_consumed_md; i++) {
const grpc_metadata* consumed_md = &calld->consumed_md[i];
if (grpc_slice_eq(GRPC_MDKEY(md), consumed_md->key) &&
- grpc_slice_eq(GRPC_MDVALUE(md), consumed_md->value))
+ grpc_slice_eq(GRPC_MDVALUE(md), consumed_md->value)) {
return GRPC_FILTERED_REMOVE();
+ }
}
return GRPC_FILTERED_MDELEM(md);
}
#define GRPC_AUTH_JSON_TYPE_INVALID "invalid"
#define GRPC_AUTH_JSON_TYPE_SERVICE_ACCOUNT "service_account"
#define GRPC_AUTH_JSON_TYPE_AUTHORIZED_USER "authorized_user"
+#define GRPC_AUTH_JSON_TYPE_EXTERNAL_ACCOUNT "external_account"
// Gets a child property from a json node.
const char* grpc_json_get_string_property(const grpc_core::Json& json,
int grpc_slice_rchr(grpc_slice s, char c) {
const char* b = reinterpret_cast<const char*> GRPC_SLICE_START_PTR(s);
int i;
- for (i = static_cast<int> GRPC_SLICE_LENGTH(s) - 1; i != -1 && b[i] != c; i--)
- ;
+ for (i = static_cast<int> GRPC_SLICE_LENGTH(s) - 1; i != -1 && b[i] != c;
+ i--) {
+ }
return i;
}
if (haystack_len == 0 || needle_len == 0) return -1;
if (haystack_len < needle_len) return -1;
- if (haystack_len == needle_len)
+ if (haystack_len == needle_len) {
return grpc_slice_eq(haystack, needle) ? 0 : -1;
- if (needle_len == 1)
+ }
+ if (needle_len == 1) {
return grpc_slice_chr(haystack, static_cast<char>(*needle_bytes));
+ }
const uint8_t* last = haystack_bytes + haystack_len - needle_len;
for (const uint8_t* cur = haystack_bytes; cur != last; ++cur) {
if (sb->count == 0) goto add_first;
back = &sb->slices[sb->count - 1];
if (back->refcount) goto add_new;
- if ((back->data.inlined.length + n) > sizeof(back->data.inlined.bytes))
+ if ((back->data.inlined.length + n) > sizeof(back->data.inlined.bytes)) {
goto add_new;
+ }
out = back->data.inlined.bytes + back->data.inlined.length;
back->data.inlined.length =
static_cast<uint8_t>(back->data.inlined.length + n);
InternedSliceRefcount* cur;
for (prev_next = &shard->strs[TABLE_IDX(this->hash, shard->capacity)],
cur = *prev_next;
- cur != this; prev_next = &cur->bucket_next, cur = cur->bucket_next)
- ;
+ cur != this; prev_next = &cur->bucket_next, cur = cur->bucket_next) {
+ }
*prev_next = cur->bucket_next;
shard->count--;
}
+++ /dev/null
-/*
- *
- * Copyright 2016 gRPC authors.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-#ifndef GRPC_CORE_LIB_SLICE_SLICE_TRAITS_H
-#define GRPC_CORE_LIB_SLICE_SLICE_TRAITS_H
-
-#include <grpc/support/port_platform.h>
-
-#include <grpc/slice.h>
-#include <stdbool.h>
-
-bool grpc_slice_is_legal_header(const grpc_slice& s);
-bool grpc_slice_is_legal_nonbin_header(const grpc_slice& s);
-bool grpc_slice_is_bin_suffixed(const grpc_slice& s);
-
-#endif /* GRPC_CORE_LIB_SLICE_SLICE_TRAITS_H */
static void add_init_error(grpc_error** composite, grpc_error* new_err) {
if (new_err == GRPC_ERROR_NONE) return;
- if (*composite == GRPC_ERROR_NONE)
+ if (*composite == GRPC_ERROR_NONE) {
*composite = GRPC_ERROR_CREATE_FROM_STATIC_STRING("Call creation failed");
+ }
*composite = grpc_error_add_child(*composite, new_err);
}
"without Census tracing propagation"));
}
if (args->propagation_mask & GRPC_PROPAGATE_CANCELLATION) {
- call->cancellation_is_inherited = 1;
+ call->cancellation_is_inherited = true;
if (gpr_atm_acq_load(&args->parent->received_final_op_atm)) {
immediately_cancel = true;
}
}
GPR_ASSERT(!c->destroy_called);
- c->destroy_called = 1;
+ c->destroy_called = true;
bool cancel = gpr_atm_acq_load(&c->any_ops_sent_atm) != 0 &&
gpr_atm_acq_load(&c->received_final_op_atm) == 0;
if (cancel) {
return flags;
}
-static void destroy_encodings_accepted_by_peer(void* /*p*/) { return; }
+static void destroy_encodings_accepted_by_peer(void* /*p*/) {}
static void set_encodings_accepted_by_peer(grpc_call* /*call*/,
grpc_mdelem mdel,
size_t remaining = call->receiving_stream->length() -
(*call->receiving_buffer)->data.raw.slice_buffer.length;
if (remaining == 0) {
- call->receiving_message = 0;
+ call->receiving_message = false;
call->receiving_stream.reset();
finish_batch_step(bctl);
return;
call->receiving_stream.reset();
grpc_byte_buffer_destroy(*call->receiving_buffer);
*call->receiving_buffer = nullptr;
- call->receiving_message = 0;
+ call->receiving_message = false;
finish_batch_step(bctl);
GRPC_ERROR_UNREF(error);
return;
call->receiving_stream.reset();
grpc_byte_buffer_destroy(*call->receiving_buffer);
*call->receiving_buffer = nullptr;
- call->receiving_message = 0;
+ call->receiving_message = false;
finish_batch_step(bctl);
if (release_error) {
GRPC_ERROR_UNREF(error);
grpc_call* call = bctl->call;
if (call->receiving_stream == nullptr) {
*call->receiving_buffer = nullptr;
- call->receiving_message = 0;
+ call->receiving_message = false;
finish_batch_step(bctl);
} else {
call->test_only_last_message_flags = call->receiving_stream->flags();
gpr_timespec deadline_ts =
grpc_millis_to_timespec(deadline, GPR_CLOCK_MONOTONIC);
while (!npp->shutdown && !w.kicked &&
- !gpr_cv_wait(&w.cv, &npp->mu, deadline_ts))
- ;
+ !gpr_cv_wait(&w.cv, &npp->mu, deadline_ts)) {
+ }
grpc_core::ExecCtx::Get()->InvalidateNow();
if (&w == npp->root) {
npp->root = w.next;
grpc_error* non_polling_poller_kick(grpc_pollset* pollset,
grpc_pollset_worker* specific_worker) {
non_polling_poller* p = reinterpret_cast<non_polling_poller*>(pollset);
- if (specific_worker == nullptr)
+ if (specific_worker == nullptr) {
specific_worker = reinterpret_cast<grpc_pollset_worker*>(p->root);
+ }
if (specific_worker != nullptr) {
non_polling_worker* w =
reinterpret_cast<non_polling_worker*>(specific_worker);
cq_end_op_for_callback, nullptr, nullptr},
};
-#define DATA_FROM_CQ(cq) ((void*)(cq + 1))
+#define DATA_FROM_CQ(cq) ((void*)((cq) + 1))
#define POLLSET_FROM_CQ(cq) \
- ((grpc_pollset*)(cq->vtable->data_size + (char*)DATA_FROM_CQ(cq)))
+ ((grpc_pollset*)((cq)->vtable->data_size + (char*)DATA_FROM_CQ(cq)))
grpc_core::TraceFlag grpc_cq_pluck_trace(false, "queue_pluck");
GPR_ASSERT(cqd->shutdown_called);
GPR_ASSERT(!cqd->shutdown.Load(grpc_core::MemoryOrder::RELAXED));
- cqd->shutdown.Store(1, grpc_core::MemoryOrder::RELAXED);
+ cqd->shutdown.Store(true, grpc_core::MemoryOrder::RELAXED);
cq->poller_vtable->shutdown(POLLSET_FROM_CQ(cq), &cq->pollset_shutdown_done);
}
#include <utility>
#include <vector>
+#include "absl/memory/memory.h"
#include "absl/types/optional.h"
#include <grpc/support/alloc.h>
GRPC_CHANNEL_INTERNAL_REF(chand_->channel_, "connectivity");
}
- ~ConnectivityWatcher() {
+ ~ConnectivityWatcher() override {
GRPC_CHANNEL_INTERNAL_UNREF(chand_->channel_, "connectivity");
}
if (num_registered_methods > 0) {
uint32_t max_probes = 0;
size_t slots = 2 * num_registered_methods;
- registered_methods_.reset(new std::vector<ChannelRegisteredMethod>(slots));
+ registered_methods_ =
+ absl::make_unique<std::vector<ChannelRegisteredMethod>>(slots);
for (std::unique_ptr<RegisteredMethod>& rm : server_->registered_methods_) {
ExternallyManagedSlice host;
ExternallyManagedSlice method(rm->method.c_str());
/// listening and initiate destruction of the listener.
class ListenerInterface : public Orphanable {
public:
- virtual ~ListenerInterface() = default;
+ ~ListenerInterface() override = default;
/// Starts listening. This listener may refer to the pollset object beyond
/// this call, so it is a pointer rather than a reference.
};
explicit Server(const grpc_channel_args* args);
- ~Server();
+ ~Server() override;
void Orphan() override;
#include <grpc/support/port_platform.h>
+#include <cstring>
+
#include <grpc/slice.h>
+
#include "src/core/lib/iomgr/error.h"
grpc_error* grpc_validate_header_key_is_legal(const grpc_slice& slice);
#include <grpc/grpc.h>
-const char* grpc_version_string(void) { return "13.0.0"; }
+const char* grpc_version_string(void) { return "14.0.0"; }
-const char* grpc_g_stands_for(void) { return "geeky"; }
+const char* grpc_g_stands_for(void) { return "gauntlet"; }
#include <grpc/support/port_platform.h>
+#include <grpc/grpc.h>
+
namespace grpc_core {
/// Returns a channel argument containing \a authority.
accumulator_(0),
estimate_(65536),
ping_start_time_(gpr_time_0(GPR_CLOCK_MONOTONIC)),
- inter_ping_delay_(100.0), // start at 100ms
+ inter_ping_delay_(100), // start at 100ms
stable_estimate_count_(0),
bw_est_(0),
name_(name) {}
class ByteStream : public Orphanable {
public:
- virtual ~ByteStream() {}
+ ~ByteStream() override {}
// Returns true if the bytes are available immediately (in which case
// on_complete will not be called), or false if the bytes will be available
// Removes all slices in slice_buffer, leaving it empty.
SliceBufferByteStream(grpc_slice_buffer* slice_buffer, uint32_t flags);
- ~SliceBufferByteStream();
+ ~SliceBufferByteStream() override;
void Orphan() override;
public:
explicit CachingByteStream(ByteStreamCache* cache);
- ~CachingByteStream();
+ ~CachingByteStream() override;
void Orphan() override;
class ConnectivityStateWatcherInterface
: public InternallyRefCounted<ConnectivityStateWatcherInterface> {
public:
- virtual ~ConnectivityStateWatcherInterface() = default;
+ ~ConnectivityStateWatcherInterface() override = default;
// Notifies the watcher that the state has changed to new_state.
virtual void Notify(grpc_connectivity_state new_state,
class AsyncConnectivityStateWatcherInterface
: public ConnectivityStateWatcherInterface {
public:
- virtual ~AsyncConnectivityStateWatcherInterface() = default;
+ ~AsyncConnectivityStateWatcherInterface() override = default;
// Schedules a closure on the ExecCtx to invoke
// OnConnectivityStateChange() asynchronously.
void Notify(grpc_connectivity_state new_state,
- const absl::Status& status) override final;
+ const absl::Status& status) final;
protected:
class Notifier;
((grpc_mdelem_data_storage)((md).payload & (uintptr_t)3))
#ifdef __cplusplus
#define GRPC_MAKE_MDELEM(data, storage) \
- (grpc_mdelem{((uintptr_t)(data)) | ((uintptr_t)storage)})
+ (grpc_mdelem{((uintptr_t)(data)) | ((uintptr_t)(storage))})
#else
#define GRPC_MAKE_MDELEM(data, storage) \
- ((grpc_mdelem){((uintptr_t)(data)) | ((uintptr_t)storage)})
+ ((grpc_mdelem){((uintptr_t)(data)) | ((uintptr_t)(storage))})
#endif
#define GRPC_MDELEM_IS_INTERNED(md) \
((grpc_mdelem_data_storage)((md).payload & \
const uint8_t* end = GRPC_SLICE_END_PTR(text);
int have_digit = 0;
/* skip whitespace */
- for (; p != end && *p == ' '; p++)
- ;
+ for (; p != end && *p == ' '; p++) {
+ }
/* decode numeric part */
for (; p != end && *p >= '0' && *p <= '9'; p++) {
int32_t digit = static_cast<int32_t>(*p - static_cast<uint8_t>('0'));
}
if (!have_digit) return 0;
/* skip whitespace */
- for (; p != end && *p == ' '; p++)
- ;
+ for (; p != end && *p == ' '; p++) {
+ }
if (p == end) return 0;
/* decode unit specifier */
switch (*p) {
grpc_stream_destroy(static_cast<grpc_stream_refcount*>(arg));
}
-#define STREAM_REF_FROM_SLICE_REF(p) \
- ((grpc_stream_refcount*)(((uint8_t*)p) - \
+#define STREAM_REF_FROM_SLICE_REF(p) \
+ ((grpc_stream_refcount*)(((uint8_t*)(p)) - \
offsetof(grpc_stream_refcount, slice_refcount)))
grpc_slice grpc_slice_from_stream_owned_buffer(grpc_stream_refcount* refcount,
#endif
GRPC_CLOSURE_INIT(&refcount->destroy, cb, cb_arg, grpc_schedule_on_exec_ctx);
- new (&refcount->refs) grpc_core::RefCount(1, &grpc_trace_stream_refcount);
+ new (&refcount->refs) grpc_core::RefCount(
+ 1, GRPC_TRACE_FLAG_ENABLED(grpc_trace_stream_refcount) ? "stream_refcount"
+ : nullptr);
new (&refcount->slice_refcount) grpc_slice_refcount(
grpc_slice_refcount::Type::REGULAR, &refcount->refs, slice_stream_destroy,
refcount, &refcount->slice_refcount);
~grpc_transport_stream_op_batch_payload() {
// We don't really own `send_message`, so release ownership and let the
// owner clean the data.
- send_message.send_message.release();
+ (void)send_message.send_message.release();
}
struct {
void grpc_lb_policy_cds_shutdown(void);
void grpc_lb_policy_eds_init(void);
void grpc_lb_policy_eds_shutdown(void);
-void grpc_lb_policy_eds_drop_init(void);
-void grpc_lb_policy_eds_drop_shutdown(void);
+void grpc_lb_policy_xds_cluster_impl_init(void);
+void grpc_lb_policy_xds_cluster_impl_shutdown(void);
void grpc_lb_policy_xds_cluster_manager_init(void);
void grpc_lb_policy_xds_cluster_manager_shutdown(void);
void grpc_resolver_xds_init(void);
grpc_lb_policy_cds_shutdown);
grpc_register_plugin(grpc_lb_policy_eds_init,
grpc_lb_policy_eds_shutdown);
- grpc_register_plugin(grpc_lb_policy_eds_drop_init,
- grpc_lb_policy_eds_drop_shutdown);
+ grpc_register_plugin(grpc_lb_policy_xds_cluster_impl_init,
+ grpc_lb_policy_xds_cluster_impl_shutdown);
grpc_register_plugin(grpc_lb_policy_xds_cluster_manager_init,
grpc_lb_policy_xds_cluster_manager_shutdown);
grpc_register_plugin(grpc_resolver_xds_init,
grpc_error* /*error*/) {
alts_shared_resource_dedicated* resource =
grpc_alts_get_shared_resource_dedicated();
- grpc_cq_end_op(resource->cq, arg, GRPC_ERROR_NONE,
- [](void* /*done_arg*/, grpc_cq_completion* /*storage*/) {},
- nullptr, &resource->storage);
+ grpc_cq_end_op(
+ resource->cq, arg, GRPC_ERROR_NONE,
+ [](void* /*done_arg*/, grpc_cq_completion* /*storage*/) {}, nullptr,
+ &resource->storage);
}
/* Returns TSI_OK if and only if no error is encountered. */
}
if (!impl->outgoing_frame.needs_draining) {
tsi_fake_handshake_message next_message_to_send =
+ // NOLINTNEXTLINE(bugprone-misplaced-widening-cast)
static_cast<tsi_fake_handshake_message>(impl->next_message_to_send + 2);
const char* msg_string =
tsi_fake_handshake_message_to_string(impl->next_message_to_send);
#include "src/core/lib/iomgr/exec_ctx.h"
#include "src/core/tsi/transport_security_grpc.h"
+namespace {
+
/* Main struct for local TSI zero-copy frame protector. */
typedef struct local_zero_copy_grpc_protector {
tsi_zero_copy_grpc_protector base;
nullptr, /* shutdown */
};
-tsi_result local_tsi_handshaker_create(bool is_client, tsi_handshaker** self) {
+} // namespace
+
+tsi_result tsi_local_handshaker_create(bool is_client, tsi_handshaker** self) {
if (self == nullptr) {
gpr_log(GPR_ERROR, "Invalid arguments to local_tsi_handshaker_create()");
return TSI_INVALID_ARGUMENT;
#define TSI_LOCAL_PROCESS_ID_PEER_PROPERTY "process_id"
/**
- * Main struct for local TSI handshaker. All APIs in the header are
- * thread-comptabile.
- */
-typedef struct local_tsi_handshaker local_tsi_handshaker;
-
-/**
* This method creates a local TSI handshaker instance.
*
* - is_client: boolean value indicating if the handshaker is used at the client
* method.
*
* It returns TSI_OK on success and an error status code on failure.
+ *
+ * This handshaker is also being used as a minimalist handshaker for insecure
+ * security connector. If this handshaker ever needs to do anything more that
+ * does not fit with an insecure connector, we would need to add a separate
+ * handshaker for insecure connectors.
*/
-tsi_result local_tsi_handshaker_create(bool is_client, tsi_handshaker** self);
+tsi_result tsi_local_handshaker_create(bool is_client, tsi_handshaker** self);
#endif /* GRPC_CORE_TSI_LOCAL_TRANSPORT_SECURITY_H */
#include <grpc/slice.h>
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wmodule-import-in-extern-c"
extern "C" {
#include <openssl/ssl.h>
}
+#pragma clang diagnostic pop
#include "src/core/lib/gprpp/ref_counted.h"
#include <grpc/slice.h>
#include <grpc/support/sync.h>
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wmodule-import-in-extern-c"
extern "C" {
#include <openssl/ssl.h>
}
+#pragma clang diagnostic pop
#include "src/core/lib/avl/avl.h"
#include "src/core/lib/gprpp/memory.h"
// Use Create function instead of using this directly.
explicit SslSessionLRUCache(size_t capacity);
- ~SslSessionLRUCache();
+ ~SslSessionLRUCache() override;
// Not copyable nor movable.
SslSessionLRUCache(const SslSessionLRUCache&) = delete;
#include "absl/strings/match.h"
#include "absl/strings/string_view.h"
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wmodule-import-in-extern-c"
extern "C" {
#include <openssl/bio.h>
#include <openssl/crypto.h> /* For OPENSSL_free */
#include <openssl/x509.h>
#include <openssl/x509v3.h>
}
+#pragma clang diagnostic pop
#include "src/core/lib/gpr/useful.h"
#include "src/core/tsi/ssl/session_cache/ssl_session_cache.h"
result = tsi_construct_string_peer_property_from_cstring(
TSI_X509_SUBJECT_ALTERNATIVE_NAME_PEER_PROPERTY, name,
&peer->properties[(*current_insert_index)++]);
+ } else {
+ result = tsi_construct_string_peer_property_from_cstring(
+ TSI_X509_SUBJECT_ALTERNATIVE_NAME_PEER_PROPERTY, "other types of SAN",
+ &peer->properties[(*current_insert_index)++]);
}
if (result != TSI_OK) break;
}
¤t_insert_index);
if (result != TSI_OK) break;
}
- } while (0);
+ } while (false);
if (subject_alt_names != nullptr) {
sk_GENERAL_NAME_pop_free(subject_alt_names, GENERAL_NAME_free);
result = TSI_INVALID_ARGUMENT;
break;
}
- while (1) {
+ while (true) {
X509* certificate_authority =
PEM_read_bio_X509(pem, nullptr, nullptr, (void*)"");
if (certificate_authority == nullptr) {
though.
*/
}
- } while (0);
+ } while (false);
if (certificate != nullptr) X509_free(certificate);
BIO_free(pem);
result = TSI_INVALID_ARGUMENT;
break;
}
- } while (0);
+ } while (false);
if (private_key != nullptr) EVP_PKEY_free(private_key);
BIO_free(pem);
return result;
if (*root_names == nullptr) return TSI_OUT_OF_RESOURCES;
}
- while (1) {
+ while (true) {
root = PEM_read_bio_X509_AUX(pem, nullptr, nullptr, (void*)"");
if (root == nullptr) {
ERR_clear_error();
SSL_CTX_set_next_proto_select_cb(
ssl_context, client_handshaker_factory_npn_callback, impl);
}
- } while (0);
+ } while (false);
if (result != TSI_OK) {
tsi_ssl_handshaker_factory_unref(&impl->base);
return result;
SSL_CTX_set_next_protos_advertised_cb(
impl->ssl_contexts[i],
server_handshaker_factory_npn_advertised_callback, impl);
- } while (0);
+ } while (false);
if (result != TSI_OK) {
tsi_ssl_handshaker_factory_unref(&impl->base);
#include "absl/strings/string_view.h"
#include "src/core/tsi/transport_security_interface.h"
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wmodule-import-in-extern-c"
extern "C" {
#include <openssl/x509.h>
}
+#pragma clang diagnostic pop
/* Value for the TSI_CERTIFICATE_TYPE_PEER_PROPERTY property for X509 certs. */
#define TSI_X509_CERTIFICATE_TYPE "X509"
}
if (self->frame_protector_created) return TSI_FAILED_PRECONDITION;
if (self->handshake_shutdown) return TSI_HANDSHAKE_SHUTDOWN;
- if (self->vtable->get_bytes_to_send_to_peer == nullptr)
+ if (self->vtable->get_bytes_to_send_to_peer == nullptr) {
return TSI_UNIMPLEMENTED;
+ }
return self->vtable->get_bytes_to_send_to_peer(self, bytes, bytes_size);
}
}
if (self->frame_protector_created) return TSI_FAILED_PRECONDITION;
if (self->handshake_shutdown) return TSI_HANDSHAKE_SHUTDOWN;
- if (self->vtable->process_bytes_from_peer == nullptr)
+ if (self->vtable->process_bytes_from_peer == nullptr) {
return TSI_UNIMPLEMENTED;
+ }
return self->vtable->process_bytes_from_peer(self, bytes, bytes_size);
}
s.header_mappings_dir = 'src'
- s.ios.deployment_target = '7.0'
- s.osx.deployment_target = '10.9'
+ s.ios.deployment_target = '9.0'
+ s.osx.deployment_target = '10.10'
s.tvos.deployment_target = '9.0'
s.watchos.deployment_target = '2.0'
const grpc::Status status;
ClosureWithArg(ClientReactor* reactor_arg, grpc::Status s)
: reactor(reactor_arg), status(std::move(s)) {
- GRPC_CLOSURE_INIT(&closure,
- [](void* void_arg, grpc_error*) {
- ClosureWithArg* arg =
- static_cast<ClosureWithArg*>(void_arg);
- arg->reactor->OnDone(arg->status);
- delete arg;
- },
- this, grpc_schedule_on_exec_ctx);
+ GRPC_CLOSURE_INIT(
+ &closure,
+ [](void* void_arg, grpc_error*) {
+ ClosureWithArg* arg = static_cast<ClosureWithArg*>(void_arg);
+ arg->reactor->OnDone(arg->status);
+ delete arg;
+ },
+ this, grpc_schedule_on_exec_ctx);
}
};
ClosureWithArg* arg = new ClosureWithArg(this, std::move(s));
}
SecureChannelCredentials* AsSecureCredentials() override { return nullptr; }
+
+ private:
+ bool IsInsecure() const override { return true; }
};
} // namespace
#include <grpcpp/impl/grpc_library.h>
#include <grpcpp/support/channel_arguments.h>
+// TODO(yashykt): We shouldn't be including "src/core" headers.
#include "src/core/lib/gpr/env.h"
#include "src/core/lib/iomgr/error.h"
#include "src/core/lib/iomgr/executor.h"
return grpc_call_set_credentials(call, c_creds_) == GRPC_CALL_OK;
}
-namespace {
+namespace internal {
+
std::shared_ptr<ChannelCredentials> WrapChannelCredentials(
grpc_channel_credentials* creds) {
return creds == nullptr ? nullptr
new SecureChannelCredentials(creds));
}
+} // namespace internal
+
+namespace {
+
std::shared_ptr<CallCredentials> WrapCallCredentials(
grpc_call_credentials* creds) {
return creds == nullptr ? nullptr
std::shared_ptr<ChannelCredentials> GoogleDefaultCredentials() {
grpc::GrpcLibraryCodegen init; // To call grpc_init().
- return WrapChannelCredentials(
+ return internal::WrapChannelCredentials(
grpc_google_default_credentials_create(nullptr));
}
options.pem_root_certs.empty() ? nullptr : options.pem_root_certs.c_str(),
options.pem_private_key.empty() ? nullptr : &pem_key_cert_pair, nullptr,
nullptr);
- return WrapChannelCredentials(c_creds);
+ return internal::WrapChannelCredentials(c_creds);
}
namespace experimental {
}
grpc_channel_credentials* c_creds = grpc_alts_credentials_create(c_options);
grpc_alts_credentials_options_destroy(c_options);
- return WrapChannelCredentials(c_creds);
+ return internal::WrapChannelCredentials(c_creds);
}
// Builds Local Credentials
std::shared_ptr<ChannelCredentials> LocalCredentials(
grpc_local_connect_type type) {
grpc::GrpcLibraryCodegen init; // To call grpc_init().
- return WrapChannelCredentials(grpc_local_credentials_create(type));
+ return internal::WrapChannelCredentials(grpc_local_credentials_create(type));
}
// Builds TLS Credentials given TLS options.
std::shared_ptr<ChannelCredentials> TlsCredentials(
- const TlsCredentialsOptions& options) {
- return WrapChannelCredentials(
+ const TlsChannelCredentialsOptions& options) {
+ return internal::WrapChannelCredentials(
grpc_tls_credentials_create(options.c_credentials_options()));
}
channel_creds->AsSecureCredentials();
SecureCallCredentials* s_call_creds = call_creds->AsSecureCredentials();
if (s_channel_creds && s_call_creds) {
- return WrapChannelCredentials(grpc_composite_channel_credentials_create(
- s_channel_creds->GetRawCreds(), s_call_creds->GetRawCreds(), nullptr));
+ return internal::WrapChannelCredentials(
+ grpc_composite_channel_credentials_create(
+ s_channel_creds->GetRawCreds(), s_call_creds->GetRawCreds(),
+ nullptr));
}
return nullptr;
}
#include <grpcpp/support/config.h>
#include "absl/strings/str_cat.h"
+// TODO(yashykt): We shouldn't be including "src/core" headers.
#include "src/core/lib/security/credentials/credentials.h"
#include "src/cpp/server/thread_pool_interface.h"
class SecureChannelCredentials final : public ChannelCredentials {
public:
explicit SecureChannelCredentials(grpc_channel_credentials* c_creds);
- ~SecureChannelCredentials() {
+ ~SecureChannelCredentials() override {
if (c_creds_ != nullptr) c_creds_->Unref();
}
grpc_channel_credentials* GetRawCreds() { return c_creds_; }
class SecureCallCredentials final : public CallCredentials {
public:
explicit SecureCallCredentials(grpc_call_credentials* c_creds);
- ~SecureCallCredentials() {
+ ~SecureCallCredentials() override {
if (c_creds_ != nullptr) c_creds_->Unref();
}
grpc_call_credentials* GetRawCreds() { return c_creds_; }
grpc_call_credentials* const c_creds_;
};
+namespace internal {
+
+std::shared_ptr<ChannelCredentials> WrapChannelCredentials(
+ grpc_channel_credentials* creds);
+
+} // namespace internal
+
namespace experimental {
// Transforms C++ STS Credentials options to core options. The pointers of the
--- /dev/null
+//
+//
+// Copyright 2020 gRPC authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+//
+
+#include "src/cpp/client/secure_credentials.h"
+
+namespace grpc {
+namespace experimental {
+
+std::shared_ptr<ChannelCredentials> XdsCredentials(
+ const std::shared_ptr<ChannelCredentials>& fallback_creds) {
+ if (fallback_creds->IsInsecure()) {
+ grpc_channel_credentials* insecure_creds =
+ grpc_insecure_credentials_create();
+ auto xds_creds = internal::WrapChannelCredentials(
+ grpc_xds_credentials_create(insecure_creds));
+ grpc_channel_credentials_release(insecure_creds);
+ return xds_creds;
+ } else {
+ return internal::WrapChannelCredentials(grpc_xds_credentials_create(
+ fallback_creds->AsSecureCredentials()->GetRawCreds()));
+ }
+}
+
+} // namespace experimental
+} // namespace grpc
gpr_ref_init(&refs_, 1);
grpc_timer_init_unset(&timer_);
}
- ~AlarmImpl() {}
+ ~AlarmImpl() override {}
bool FinalizeResult(void** tag, bool* /*status*/) override {
*tag = tag_;
Unref();
// Don't use any CQ at all. Instead just use the timer to fire the function
callback_ = std::move(f);
Ref();
- GRPC_CLOSURE_INIT(&on_alarm_,
- [](void* arg, grpc_error* error) {
- grpc_core::Executor::Run(
- GRPC_CLOSURE_CREATE(
- [](void* arg, grpc_error* error) {
- AlarmImpl* alarm =
- static_cast<AlarmImpl*>(arg);
- alarm->callback_(error == GRPC_ERROR_NONE);
- alarm->Unref();
- },
- arg, nullptr),
- error);
- },
- this, grpc_schedule_on_exec_ctx);
+ GRPC_CLOSURE_INIT(
+ &on_alarm_,
+ [](void* arg, grpc_error* error) {
+ grpc_core::Executor::Run(
+ GRPC_CLOSURE_CREATE(
+ [](void* arg, grpc_error* error) {
+ AlarmImpl* alarm = static_cast<AlarmImpl*>(arg);
+ alarm->callback_(error == GRPC_ERROR_NONE);
+ alarm->Unref();
+ },
+ arg, nullptr),
+ error);
+ },
+ this, grpc_schedule_on_exec_ctx);
grpc_timer_init(&timer_, grpc_timespec_to_millis_round_up(deadline),
&on_alarm_);
}
void AddProperty(const std::string& key,
const grpc::string_ref& value) override;
- virtual bool SetPeerIdentityPropertyName(const std::string& name) override;
+ bool SetPeerIdentityPropertyName(const std::string& name) override;
private:
grpc_core::RefCountedPtr<grpc_auth_context> ctx_;
--- /dev/null
+//
+// Copyright 2020 gRPC authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+#include <grpc/grpc_security.h>
+#include <grpc/support/alloc.h>
+#include <grpcpp/security/tls_certificate_provider.h>
+
+#include "absl/container/inlined_vector.h"
+
+namespace grpc {
+namespace experimental {
+
+StaticDataCertificateProvider::StaticDataCertificateProvider(
+ const std::string& root_certificate,
+ const std::vector<IdentityKeyCertPair>& identity_key_cert_pairs) {
+ GPR_ASSERT(!root_certificate.empty() || !identity_key_cert_pairs.empty());
+ grpc_tls_identity_pairs* pairs_core = grpc_tls_identity_pairs_create();
+ for (const IdentityKeyCertPair& pair : identity_key_cert_pairs) {
+ grpc_tls_identity_pairs_add_pair(pairs_core, pair.private_key.c_str(),
+ pair.certificate_chain.c_str());
+ }
+ c_provider_ = grpc_tls_certificate_provider_static_data_create(
+ root_certificate.c_str(), pairs_core);
+ GPR_ASSERT(c_provider_ != nullptr);
+};
+
+StaticDataCertificateProvider::~StaticDataCertificateProvider() {
+ grpc_tls_certificate_provider_release(c_provider_);
+};
+
+} // namespace experimental
+} // namespace grpc
*
*/
+#include <grpc/grpc_security.h>
#include <grpc/support/alloc.h>
#include <grpcpp/security/tls_credentials_options.h>
#include "absl/container/inlined_vector.h"
-#include "src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h"
#include "src/cpp/common/tls_credentials_options_util.h"
namespace grpc {
namespace experimental {
-/** TLS key materials config API implementation **/
-void TlsKeyMaterialsConfig::set_pem_root_certs(
- const std::string& pem_root_certs) {
- pem_root_certs_ = pem_root_certs;
-}
-
-void TlsKeyMaterialsConfig::add_pem_key_cert_pair(
- const PemKeyCertPair& pem_key_cert_pair) {
- pem_key_cert_pair_list_.push_back(pem_key_cert_pair);
-}
-
-void TlsKeyMaterialsConfig::set_key_materials(
- const std::string& pem_root_certs,
- const std::vector<PemKeyCertPair>& pem_key_cert_pair_list) {
- pem_key_cert_pair_list_ = pem_key_cert_pair_list;
- pem_root_certs_ = pem_root_certs;
-}
-
-/** TLS credential reload arg API implementation **/
-TlsCredentialReloadArg::TlsCredentialReloadArg(
- grpc_tls_credential_reload_arg* arg)
- : c_arg_(arg) {
- if (c_arg_ != nullptr && c_arg_->context != nullptr) {
- gpr_log(GPR_ERROR, "c_arg context has already been set");
- }
- c_arg_->context = static_cast<void*>(this);
- c_arg_->destroy_context = &TlsCredentialReloadArgDestroyContext;
-}
-
-TlsCredentialReloadArg::~TlsCredentialReloadArg() {}
-
-void* TlsCredentialReloadArg::cb_user_data() const {
- return c_arg_->cb_user_data;
-}
-bool TlsCredentialReloadArg::is_pem_key_cert_pair_list_empty() const {
- return c_arg_->key_materials_config->pem_key_cert_pair_list().empty();
-}
-
-grpc_ssl_certificate_config_reload_status TlsCredentialReloadArg::status()
- const {
- return c_arg_->status;
-}
-
-std::string TlsCredentialReloadArg::error_details() const {
- return c_arg_->error_details->error_details();
-}
-
-void TlsCredentialReloadArg::set_cb_user_data(void* cb_user_data) {
- c_arg_->cb_user_data = cb_user_data;
-}
-
-void TlsCredentialReloadArg::set_pem_root_certs(
- const std::string& pem_root_certs) {
- ::grpc_core::UniquePtr<char> c_pem_root_certs(
- gpr_strdup(pem_root_certs.c_str()));
- c_arg_->key_materials_config->set_pem_root_certs(std::move(c_pem_root_certs));
-}
-
-namespace {
-
-::grpc_core::PemKeyCertPair ConvertToCorePemKeyCertPair(
- const TlsKeyMaterialsConfig::PemKeyCertPair& pem_key_cert_pair) {
- grpc_ssl_pem_key_cert_pair* ssl_pair =
- (grpc_ssl_pem_key_cert_pair*)gpr_malloc(
- sizeof(grpc_ssl_pem_key_cert_pair));
- ssl_pair->private_key = gpr_strdup(pem_key_cert_pair.private_key.c_str());
- ssl_pair->cert_chain = gpr_strdup(pem_key_cert_pair.cert_chain.c_str());
- return ::grpc_core::PemKeyCertPair(ssl_pair);
-}
-
-} // namespace
-
-void TlsCredentialReloadArg::add_pem_key_cert_pair(
- const TlsKeyMaterialsConfig::PemKeyCertPair& pem_key_cert_pair) {
- c_arg_->key_materials_config->add_pem_key_cert_pair(
- ConvertToCorePemKeyCertPair(pem_key_cert_pair));
-}
-
-void TlsCredentialReloadArg::set_key_materials(
- const std::string& pem_root_certs,
- std::vector<TlsKeyMaterialsConfig::PemKeyCertPair> pem_key_cert_pair_list) {
- /** Initialize the |key_materials_config| field of |c_arg_|, if it has not
- * already been done. **/
- if (c_arg_->key_materials_config == nullptr) {
- c_arg_->key_materials_config = grpc_tls_key_materials_config_create();
- }
- /** Convert |pem_key_cert_pair_list| to an inlined vector of ssl pairs. **/
- ::absl::InlinedVector<::grpc_core::PemKeyCertPair, 1>
- c_pem_key_cert_pair_list;
- for (const auto& key_cert_pair : pem_key_cert_pair_list) {
- c_pem_key_cert_pair_list.emplace_back(
- ConvertToCorePemKeyCertPair(key_cert_pair));
- }
- /** Populate the key materials config field of |c_arg_|. **/
- c_arg_->key_materials_config->set_key_materials(pem_root_certs.c_str(),
- c_pem_key_cert_pair_list);
-}
-
-void TlsCredentialReloadArg::set_key_materials_config(
- const std::shared_ptr<TlsKeyMaterialsConfig>& key_materials_config) {
- if (key_materials_config == nullptr) {
- c_arg_->key_materials_config = nullptr;
- return;
- }
- ::absl::InlinedVector<::grpc_core::PemKeyCertPair, 1>
- c_pem_key_cert_pair_list;
- for (const auto& key_cert_pair :
- key_materials_config->pem_key_cert_pair_list()) {
- grpc_ssl_pem_key_cert_pair* ssl_pair =
- (grpc_ssl_pem_key_cert_pair*)gpr_malloc(
- sizeof(grpc_ssl_pem_key_cert_pair));
- ssl_pair->private_key = gpr_strdup(key_cert_pair.private_key.c_str());
- ssl_pair->cert_chain = gpr_strdup(key_cert_pair.cert_chain.c_str());
- ::grpc_core::PemKeyCertPair c_pem_key_cert_pair =
- ::grpc_core::PemKeyCertPair(ssl_pair);
- c_pem_key_cert_pair_list.emplace_back(std::move(c_pem_key_cert_pair));
- }
- ::grpc_core::UniquePtr<char> c_pem_root_certs(
- gpr_strdup(key_materials_config->pem_root_certs().c_str()));
- if (c_arg_->key_materials_config == nullptr) {
- c_arg_->key_materials_config = grpc_tls_key_materials_config_create();
- }
- c_arg_->key_materials_config->set_key_materials(
- key_materials_config->pem_root_certs().c_str(), c_pem_key_cert_pair_list);
- c_arg_->key_materials_config->set_version(key_materials_config->version());
-}
-
-void TlsCredentialReloadArg::set_status(
- grpc_ssl_certificate_config_reload_status status) {
- c_arg_->status = status;
-}
-
-void TlsCredentialReloadArg::set_error_details(
- const std::string& error_details) {
- c_arg_->error_details->set_error_details(error_details.c_str());
-}
-
-void TlsCredentialReloadArg::OnCredentialReloadDoneCallback() {
- if (c_arg_->cb == nullptr) {
- gpr_log(GPR_ERROR, "credential reload arg callback API is nullptr");
- return;
- }
- c_arg_->cb(c_arg_);
-}
-
-/** gRPC TLS credential reload config API implementation **/
-TlsCredentialReloadConfig::TlsCredentialReloadConfig(
- std::shared_ptr<TlsCredentialReloadInterface> credential_reload_interface)
- : credential_reload_interface_(std::move(credential_reload_interface)) {
- c_config_ = grpc_tls_credential_reload_config_create(
- nullptr, &TlsCredentialReloadConfigCSchedule,
- &TlsCredentialReloadConfigCCancel, nullptr);
- c_config_->set_context(static_cast<void*>(this));
-}
-
-TlsCredentialReloadConfig::~TlsCredentialReloadConfig() {}
-
/** gRPC TLS server authorization check arg API implementation **/
TlsServerAuthorizationCheckArg::TlsServerAuthorizationCheckArg(
grpc_tls_server_authorization_check_arg* arg)
: c_arg_(arg) {
- if (c_arg_ != nullptr && c_arg_->context != nullptr) {
+ GPR_ASSERT(c_arg_ != nullptr);
+ if (c_arg_->context != nullptr) {
gpr_log(GPR_ERROR, "c_arg context has already been set");
}
c_arg_->context = static_cast<void*>(this);
c_arg_->cb(c_arg_);
}
-/** gRPC TLS server authorization check config API implementation. **/
TlsServerAuthorizationCheckConfig::TlsServerAuthorizationCheckConfig(
std::shared_ptr<TlsServerAuthorizationCheckInterface>
server_authorization_check_interface)
c_config_->set_context(static_cast<void*>(this));
}
-TlsServerAuthorizationCheckConfig::~TlsServerAuthorizationCheckConfig() {}
-
-/** gRPC TLS credential options API implementation **/
-TlsCredentialsOptions::TlsCredentialsOptions(
- grpc_tls_server_verification_option server_verification_option,
- std::shared_ptr<TlsKeyMaterialsConfig> key_materials_config,
- std::shared_ptr<TlsCredentialReloadConfig> credential_reload_config,
- std::shared_ptr<TlsServerAuthorizationCheckConfig>
- server_authorization_check_config)
- : TlsCredentialsOptions(
- GRPC_SSL_DONT_REQUEST_CLIENT_CERTIFICATE, server_verification_option,
- std::move(key_materials_config), std::move(credential_reload_config),
- std::move(server_authorization_check_config)) {}
-
-TlsCredentialsOptions::TlsCredentialsOptions(
- grpc_ssl_client_certificate_request_type cert_request_type,
- std::shared_ptr<TlsKeyMaterialsConfig> key_materials_config,
- std::shared_ptr<TlsCredentialReloadConfig> credential_reload_config)
- : TlsCredentialsOptions(cert_request_type, GRPC_TLS_SERVER_VERIFICATION,
- std::move(key_materials_config),
- std::move(credential_reload_config), nullptr) {}
+TlsServerAuthorizationCheckConfig::~TlsServerAuthorizationCheckConfig() {
+ grpc_tls_server_authorization_check_config_release(c_config_);
+}
TlsCredentialsOptions::TlsCredentialsOptions(
- grpc_ssl_client_certificate_request_type cert_request_type,
- grpc_tls_server_verification_option server_verification_option,
- std::shared_ptr<TlsKeyMaterialsConfig> key_materials_config,
- std::shared_ptr<TlsCredentialReloadConfig> credential_reload_config,
- std::shared_ptr<TlsServerAuthorizationCheckConfig>
- server_authorization_check_config)
- : cert_request_type_(cert_request_type),
- server_verification_option_(server_verification_option),
- key_materials_config_(std::move(key_materials_config)),
- credential_reload_config_(std::move(credential_reload_config)),
- server_authorization_check_config_(
- std::move(server_authorization_check_config)) {
+ std::shared_ptr<CertificateProviderInterface> certificate_provider)
+ : certificate_provider_(std::move(certificate_provider)) {
c_credentials_options_ = grpc_tls_credentials_options_create();
- grpc_tls_credentials_options_set_cert_request_type(c_credentials_options_,
- cert_request_type_);
- if (key_materials_config_ != nullptr) {
- grpc_tls_credentials_options_set_key_materials_config(
- c_credentials_options_,
- ConvertToCKeyMaterialsConfig(key_materials_config_));
- }
- if (credential_reload_config_ != nullptr) {
- grpc_tls_credentials_options_set_credential_reload_config(
- c_credentials_options_, credential_reload_config_->c_config());
+ if (certificate_provider_ != nullptr) {
+ grpc_tls_credentials_options_set_certificate_provider(
+ c_credentials_options_, certificate_provider_->c_provider());
}
- if (server_authorization_check_config_ != nullptr) {
+}
+
+void TlsCredentialsOptions::watch_root_certs() {
+ grpc_tls_credentials_options_watch_root_certs(c_credentials_options_);
+}
+
+void TlsCredentialsOptions::set_root_cert_name(
+ const std::string& root_cert_name) {
+ grpc_tls_credentials_options_set_root_cert_name(c_credentials_options_,
+ root_cert_name.c_str());
+}
+
+void TlsCredentialsOptions::watch_identity_key_cert_pairs() {
+ grpc_tls_credentials_options_watch_identity_key_cert_pairs(
+ c_credentials_options_);
+}
+
+void TlsCredentialsOptions::set_identity_cert_name(
+ const std::string& identity_cert_name) {
+ grpc_tls_credentials_options_set_identity_cert_name(
+ c_credentials_options_, identity_cert_name.c_str());
+}
+
+void TlsChannelCredentialsOptions::set_server_verification_option(
+ grpc_tls_server_verification_option server_verification_option) {
+ grpc_tls_credentials_options* options = c_credentials_options();
+ GPR_ASSERT(options != nullptr);
+ grpc_tls_credentials_options_set_server_verification_option(
+ options, server_verification_option);
+}
+
+void TlsChannelCredentialsOptions::set_server_authorization_check_config(
+ std::shared_ptr<TlsServerAuthorizationCheckConfig> config) {
+ grpc_tls_credentials_options* options = c_credentials_options();
+ GPR_ASSERT(options != nullptr);
+ if (config != nullptr) {
grpc_tls_credentials_options_set_server_authorization_check_config(
- c_credentials_options_, server_authorization_check_config_->c_config());
+ options, config->c_config());
}
- grpc_tls_credentials_options_set_server_verification_option(
- c_credentials_options_, server_verification_option);
}
-/** Whenever a TlsCredentialsOptions instance is created, the caller takes
- * ownership of the c_credentials_options_ pointer (see e.g. the implementation
- * of the TlsCredentials API in secure_credentials.cc). For this reason, the
- * TlsCredentialsOptions destructor is not responsible for freeing
- * c_credentials_options_. **/
-TlsCredentialsOptions::~TlsCredentialsOptions() {}
+void TlsServerCredentialsOptions::set_cert_request_type(
+ grpc_ssl_client_certificate_request_type cert_request_type) {
+ grpc_tls_credentials_options* options = c_credentials_options();
+ GPR_ASSERT(options != nullptr);
+ grpc_tls_credentials_options_set_cert_request_type(options,
+ cert_request_type);
+}
} // namespace experimental
} // namespace grpc
#include "absl/container/inlined_vector.h"
#include <grpcpp/security/tls_credentials_options.h>
+
#include "src/cpp/common/tls_credentials_options_util.h"
namespace grpc {
namespace experimental {
-/** Converts the Cpp key materials to C key materials; this allocates memory for
- * the C key materials. Note that the user must free
- * the underlying pointer to private key and cert chain duplicates; they are not
- * freed when the grpc_core::UniquePtr<char> member variables of PemKeyCertPair
- * are unused. Similarly, the user must free the underlying pointer to
- * c_pem_root_certs. **/
-grpc_tls_key_materials_config* ConvertToCKeyMaterialsConfig(
- const std::shared_ptr<TlsKeyMaterialsConfig>& config) {
- if (config == nullptr) {
- return nullptr;
- }
- grpc_tls_key_materials_config* c_config =
- grpc_tls_key_materials_config_create();
- ::absl::InlinedVector<::grpc_core::PemKeyCertPair, 1>
- c_pem_key_cert_pair_list;
- for (const auto& key_cert_pair : config->pem_key_cert_pair_list()) {
- grpc_ssl_pem_key_cert_pair* ssl_pair =
- (grpc_ssl_pem_key_cert_pair*)gpr_malloc(
- sizeof(grpc_ssl_pem_key_cert_pair));
- ssl_pair->private_key = gpr_strdup(key_cert_pair.private_key.c_str());
- ssl_pair->cert_chain = gpr_strdup(key_cert_pair.cert_chain.c_str());
- ::grpc_core::PemKeyCertPair c_pem_key_cert_pair =
- ::grpc_core::PemKeyCertPair(ssl_pair);
- c_pem_key_cert_pair_list.push_back(::std::move(c_pem_key_cert_pair));
- }
- c_config->set_key_materials(config->pem_root_certs().c_str(),
- c_pem_key_cert_pair_list);
- c_config->set_version(config->version());
- return c_config;
-}
-
-/** The C schedule and cancel functions for the credential reload config.
- * They populate a C credential reload arg with the result of a C++ credential
- * reload schedule/cancel API. **/
-int TlsCredentialReloadConfigCSchedule(void* /*config_user_data*/,
- grpc_tls_credential_reload_arg* arg) {
- if (arg == nullptr || arg->config == nullptr ||
- arg->config->context() == nullptr) {
- gpr_log(GPR_ERROR, "credential reload arg was not properly initialized");
- return 1;
- }
- TlsCredentialReloadConfig* cpp_config =
- static_cast<TlsCredentialReloadConfig*>(arg->config->context());
- TlsCredentialReloadArg* cpp_arg = new TlsCredentialReloadArg(arg);
- int schedule_result = cpp_config->Schedule(cpp_arg);
- return schedule_result;
-}
-
-void TlsCredentialReloadConfigCCancel(void* /*config_user_data*/,
- grpc_tls_credential_reload_arg* arg) {
- if (arg == nullptr || arg->config == nullptr ||
- arg->config->context() == nullptr) {
- gpr_log(GPR_ERROR, "credential reload arg was not properly initialized");
- return;
- }
- if (arg->context == nullptr) {
- gpr_log(GPR_ERROR, "credential reload arg schedule has already completed");
- return;
- }
- TlsCredentialReloadConfig* cpp_config =
- static_cast<TlsCredentialReloadConfig*>(arg->config->context());
- TlsCredentialReloadArg* cpp_arg =
- static_cast<TlsCredentialReloadArg*>(arg->context);
- cpp_config->Cancel(cpp_arg);
-}
-
-void TlsCredentialReloadArgDestroyContext(void* context) {
- if (context != nullptr) {
- TlsCredentialReloadArg* cpp_arg =
- static_cast<TlsCredentialReloadArg*>(context);
- delete cpp_arg;
- }
-}
-
/** The C schedule and cancel functions for the server authorization check
* config. They populate a C server authorization check arg with the result
* of a C++ server authorization check schedule/cancel API. **/
namespace grpc {
namespace experimental {
-/** The following function is exposed for testing purposes. **/
-grpc_tls_key_materials_config* ConvertToCKeyMaterialsConfig(
- const std::shared_ptr<TlsKeyMaterialsConfig>& config);
-
-/** The following 4 functions convert the user-provided schedule or cancel
+/** The following 2 functions convert the user-provided schedule or cancel
* functions into C style schedule or cancel functions. These are internal
* functions, not meant to be accessed by the user. **/
-int TlsCredentialReloadConfigCSchedule(void* config_user_data,
- grpc_tls_credential_reload_arg* arg);
-
-void TlsCredentialReloadConfigCCancel(void* config_user_data,
- grpc_tls_credential_reload_arg* arg);
-
int TlsServerAuthorizationCheckConfigCSchedule(
void* config_user_data, grpc_tls_server_authorization_check_arg* arg);
void TlsServerAuthorizationCheckConfigCCancel(
void* config_user_data, grpc_tls_server_authorization_check_arg* arg);
-/** The following 2 functions cleanup data created in the above C schedule
- * functions. **/
-void TlsCredentialReloadArgDestroyContext(void* context);
-
void TlsServerAuthorizationCheckArgDestroyContext(void* context);
} // namespace experimental
#include <grpcpp/grpcpp.h>
namespace grpc {
-std::string Version() { return "1.33.2"; }
+std::string Version() { return "1.34.0"; }
} // namespace grpc
#include <grpc/support/port_platform.h>
#include <grpc/status.h>
+
#include "absl/memory/memory.h"
#include "absl/strings/string_view.h"
#include "absl/strings/strip.h"
+
#include "opencensus/context/context.h"
#include "opencensus/tags/tag_map.h"
#include "opencensus/trace/context_util.h"
#include "opencensus/trace/span.h"
#include "opencensus/trace/span_context.h"
#include "opencensus/trace/trace_params.h"
+
#include "src/core/lib/slice/slice_internal.h"
#include "src/cpp/common/channel_filter.h"
#include "src/cpp/ext/filters/census/rpc_encoding.h"
#include "opencensus/stats/stats.h"
#include "opencensus/tags/tag_key.h"
-namespace grpc_impl {
-class ServerContext;
-}
-
namespace grpc {
// The tag keys set when recording RPC stats.
using grpc::reflection::v1alpha::ErrorResponse;
using grpc::reflection::v1alpha::ExtensionNumberResponse;
using grpc::reflection::v1alpha::ExtensionRequest;
-using grpc::reflection::v1alpha::FileDescriptorResponse;
using grpc::reflection::v1alpha::ListServiceResponse;
using grpc::reflection::v1alpha::ServerReflectionRequest;
using grpc::reflection::v1alpha::ServerReflectionResponse;
StringOption(const std::string& name, const std::string& value)
: name_(name), value_(value) {}
- virtual void UpdateArguments(ChannelArguments* args) override {
+ void UpdateArguments(ChannelArguments* args) override {
args->SetString(name_, value_);
}
- virtual void UpdatePlugins(
+ void UpdatePlugins(
std::vector<std::unique_ptr<ServerBuilderPlugin>>* /*plugins*/)
override {}
IntOption(const std::string& name, int value)
: name_(name), value_(value) {}
- virtual void UpdateArguments(ChannelArguments* args) override {
+ void UpdateArguments(ChannelArguments* args) override {
args->SetInt(name_, value_);
}
- virtual void UpdatePlugins(
+ void UpdatePlugins(
std::vector<std::unique_ptr<ServerBuilderPlugin>>* /*plugins*/)
override {}
new ChannelzServicePlugin());
}
-} // namespace experimental
-} // namespace channelz
-} // namespace grpc
-namespace grpc_impl {
-namespace channelz {
-namespace experimental {
-
void InitChannelzService() {
static struct Initializer {
Initializer() {
} // namespace experimental
} // namespace channelz
-} // namespace grpc_impl
+} // namespace grpc
DynamicThreadPool::DynamicThread::DynamicThread(DynamicThreadPool* pool)
: pool_(pool),
- thd_("grpcpp_dynamic_pool",
- [](void* th) {
- static_cast<DynamicThreadPool::DynamicThread*>(th)->ThreadFunc();
- },
- this) {
+ thd_(
+ "grpcpp_dynamic_pool",
+ [](void* th) {
+ static_cast<DynamicThreadPool::DynamicThread*>(th)->ThreadFunc();
+ },
+ this) {
thd_.Start();
}
DynamicThreadPool::DynamicThread::~DynamicThread() { thd_.Join(); }
class DynamicThreadPool final : public ThreadPoolInterface {
public:
explicit DynamicThreadPool(int reserve_threads);
- ~DynamicThreadPool();
+ ~DynamicThreadPool() override;
void Add(const std::function<void()>& callback) override;
#include <memory>
+#include "absl/memory/memory.h"
#include "upb/upb.hpp"
#include <grpc/slice.h>
DefaultHealthCheckService::GetHealthCheckService(
std::unique_ptr<ServerCompletionQueue> cq) {
GPR_ASSERT(impl_ == nullptr);
- impl_.reset(new HealthCheckServiceImpl(this, std::move(cq)));
+ impl_ = absl::make_unique<HealthCheckServiceImpl>(this, std::move(cq));
return impl_.get();
}
AddMethod(new internal::RpcServiceMethod(
kHealthWatchMethodName, internal::RpcMethod::SERVER_STREAMING, nullptr));
// Create serving thread.
- thread_ = std::unique_ptr<::grpc_core::Thread>(
- new ::grpc_core::Thread("grpc_health_check_service", Serve, this));
+ thread_ = absl::make_unique<::grpc_core::Thread>("grpc_health_check_service",
+ Serve, this);
}
DefaultHealthCheckService::HealthCheckServiceImpl::~HealthCheckServiceImpl() {
HealthCheckServiceImpl(DefaultHealthCheckService* database,
std::unique_ptr<ServerCompletionQueue> cq);
- ~HealthCheckServiceImpl();
+ ~HealthCheckServiceImpl() override;
void StartServingThread();
#include <grpc/impl/codegen/port_platform.h>
+#include <stddef.h>
+
namespace grpc {
namespace load_reporter {
auto it = map.find(key);
if (it != map.end()) {
size_t erased = it->second.erase(value);
- if (it->second.size() == 0) {
+ if (it->second.empty()) {
map.erase(it);
}
return erased;
// This is due to a bug reported internally of Java server load reporting
// implementation.
// TODO(juanlishen): Check whether this situation happens in OSS C++.
- if (client_ip_and_token.size() == 0) {
+ if (client_ip_and_token.empty()) {
gpr_log(GPR_DEBUG,
"Skipping processing Opencensus record with empty "
"client_ip_and_token tag.");
#include <grpc/support/port_platform.h>
+#include "absl/memory/memory.h"
+
#include "src/cpp/server/load_reporter/load_reporter_async_service_impl.h"
namespace grpc {
LoadReporterAsyncServiceImpl::LoadReporterAsyncServiceImpl(
std::unique_ptr<ServerCompletionQueue> cq)
: cq_(std::move(cq)) {
- thread_ = std::unique_ptr<::grpc_core::Thread>(
- new ::grpc_core::Thread("server_load_reporting", Work, this));
+ thread_ = absl::make_unique<::grpc_core::Thread>("server_load_reporting",
+ Work, this);
std::unique_ptr<CpuStatsProvider> cpu_stats_provider = nullptr;
#if defined(GPR_LINUX) || defined(GPR_WINDOWS) || defined(GPR_APPLE)
- cpu_stats_provider.reset(new CpuStatsProviderDefaultImpl());
+ cpu_stats_provider = absl::make_unique<CpuStatsProviderDefaultImpl>();
#endif
- load_reporter_ = std::unique_ptr<LoadReporter>(new LoadReporter(
+ load_reporter_ = absl::make_unique<LoadReporter>(
kFeedbackSampleWindowSeconds,
std::unique_ptr<CensusViewProvider>(new CensusViewProviderDefaultImpl()),
- std::move(cpu_stats_provider)));
+ std::move(cpu_stats_provider));
}
LoadReporterAsyncServiceImpl::~LoadReporterAsyncServiceImpl() {
grpc_core::MutexLock lock(&cq_shutdown_mu_);
cq_->Shutdown();
}
- if (next_fetch_and_sample_alarm_ != nullptr)
+ if (next_fetch_and_sample_alarm_ != nullptr) {
next_fetch_and_sample_alarm_->Cancel();
+ }
thread_->Join();
}
if (shutdown_) return;
// TODO(juanlishen): Improve the Alarm implementation to reuse a single
// instance for multiple events.
- next_fetch_and_sample_alarm_.reset(new Alarm);
+ next_fetch_and_sample_alarm_ = absl::make_unique<Alarm>();
next_fetch_and_sample_alarm_->Set(cq_.get(), next_fetch_and_sample_time,
this);
}
std::move(self));
// TODO(juanlishen): Improve the Alarm implementation to reuse a single
// instance for multiple events.
- next_report_alarm_.reset(new Alarm);
+ next_report_alarm_ = absl::make_unique<Alarm>();
next_report_alarm_->Set(cq_, next_report_time, &next_outbound_);
}
gpr_log(GPR_DEBUG,
}
void LoadReporterAsyncServiceImpl::ReportLoadHandler::OnFinishDone(
+ // NOLINTNEXTLINE(performance-unnecessary-value-param)
std::shared_ptr<ReportLoadHandler> self, bool ok) {
if (ok) {
gpr_log(GPR_INFO,
public:
explicit LoadReporterAsyncServiceImpl(
std::unique_ptr<ServerCompletionQueue> cq);
- ~LoadReporterAsyncServiceImpl();
+ ~LoadReporterAsyncServiceImpl() override;
// Starts the working thread.
void StartThread();
}
std::shared_ptr<ServerCredentials> TlsServerCredentials(
- const grpc::experimental::TlsCredentialsOptions& options) {
- grpc::GrpcLibraryCodegen init;
+ const grpc::experimental::TlsServerCredentialsOptions& options) {
return std::shared_ptr<ServerCredentials>(new SecureServerCredentials(
grpc_tls_server_credentials_create(options.c_credentials_options())));
}
grpc_closure closure;
ServerCallbackCall* call;
explicit ClosureWithArg(ServerCallbackCall* call_arg) : call(call_arg) {
- GRPC_CLOSURE_INIT(&closure,
- [](void* void_arg, grpc_error*) {
- ClosureWithArg* arg =
- static_cast<ClosureWithArg*>(void_arg);
- arg->call->CallOnDone();
- delete arg;
- },
- this, grpc_schedule_on_exec_ctx);
+ GRPC_CLOSURE_INIT(
+ &closure,
+ [](void* void_arg, grpc_error*) {
+ ClosureWithArg* arg = static_cast<ClosureWithArg*>(void_arg);
+ arg->call->CallOnDone();
+ delete arg;
+ },
+ this, grpc_schedule_on_exec_ctx);
}
};
ClosureWithArg* arg = new ClosureWithArg(this);
ServerReactor* reactor;
ClosureWithArg(ServerCallbackCall* call_arg, ServerReactor* reactor_arg)
: call(call_arg), reactor(reactor_arg) {
- GRPC_CLOSURE_INIT(&closure,
- [](void* void_arg, grpc_error*) {
- ClosureWithArg* arg =
- static_cast<ClosureWithArg*>(void_arg);
- arg->reactor->OnCancel();
- arg->call->MaybeDone();
- delete arg;
- },
- this, grpc_schedule_on_exec_ctx);
+ GRPC_CLOSURE_INIT(
+ &closure,
+ [](void* void_arg, grpc_error*) {
+ ClosureWithArg* arg = static_cast<ClosureWithArg*>(void_arg);
+ arg->reactor->OnCancel();
+ arg->call->MaybeDone();
+ delete arg;
+ },
+ this, grpc_schedule_on_exec_ctx);
}
};
ClosureWithArg* arg = new ClosureWithArg(this, reactor);
#include <grpcpp/server_context.h>
#include <grpcpp/support/time.h>
+#include "absl/memory/memory.h"
+
#include "src/core/ext/transport/inproc/inproc_transport.h"
#include "src/core/lib/iomgr/exec_ctx.h"
#include "src/core/lib/profiling/timers.h"
class ShutdownTag : public internal::CompletionQueueTag {
public:
- bool FinalizeResult(void** /*tag*/, bool* /*status*/) { return false; }
+ bool FinalizeResult(void** /*tag*/, bool* /*status*/) override {
+ return false;
+ }
};
class DummyTag : public internal::CompletionQueueTag {
public:
- bool FinalizeResult(void** /*tag*/, bool* /*status*/) { return true; }
+ bool FinalizeResult(void** /*tag*/, bool* /*status*/) override {
+ return true;
+ }
};
class UnimplementedAsyncRequestContext {
grpc::internal::CallOpServerSendStatus> {
public:
UnimplementedAsyncResponse(UnimplementedAsyncRequest* request);
- ~UnimplementedAsyncResponse() { delete request_; }
+ ~UnimplementedAsyncResponse() override { delete request_; }
bool FinalizeResult(void** tag, bool* status) override {
if (grpc::internal::CallOpSet<
grpc_metadata_array_init(&request_metadata_);
}
- ~SyncRequest() {
+ ~SyncRequest() override {
if (call_details_) {
delete call_details_;
}
data->details = call_details_;
}
- ~CallbackRequest() {
+ ~CallbackRequest() override {
delete call_details_;
grpc_metadata_array_destroy(&request_metadata_);
if (has_request_payload_ && request_payload_) {
void AddUnknownSyncMethod() {
if (!sync_requests_.empty()) {
- unknown_method_.reset(new grpc::internal::RpcServiceMethod(
+ unknown_method_ = absl::make_unique<grpc::internal::RpcServiceMethod>(
"unknown", grpc::internal::RpcMethod::BIDI_STREAMING,
- new grpc::internal::UnknownMethodHandler));
+ new grpc::internal::UnknownMethodHandler);
sync_requests_.emplace_back(
new SyncRequest(unknown_method_.get(), nullptr));
}
const char* method_name = nullptr;
for (const auto& method : service->methods_) {
- if (method.get() == nullptr) { // Handled by generic service if any.
+ if (method == nullptr) { // Handled by generic service if any.
continue;
}
// service to handle any unimplemented methods using the default reactor
// creator
if (has_callback_methods_ && !has_callback_generic_service_) {
- unimplemented_service_.reset(new grpc::CallbackGenericService);
+ unimplemented_service_ = absl::make_unique<grpc::CallbackGenericService>();
RegisterCallbackGenericService(unimplemented_service_.get());
}
// server CQs), make sure that we have a ResourceExhausted handler
// to deal with the case of thread exhaustion
if (sync_server_cqs_ != nullptr && !sync_server_cqs_->empty()) {
- resource_exhausted_handler_.reset(
- new grpc::internal::ResourceExhaustedHandler);
+ resource_exhausted_handler_ =
+ absl::make_unique<grpc::internal::ResourceExhaustedHandler>();
}
for (const auto& value : sync_req_mgrs_) {
CompletionOp(CompletionOp&&) = delete;
CompletionOp& operator=(CompletionOp&&) = delete;
- ~CompletionOp() {
+ ~CompletionOp() override {
if (call_.server_rpc_info()) {
call_.server_rpc_info()->Unref();
}
<Project>
<Import Project="build\dependencies.props" />
+ <Import Project="build\common.props" />
</Project>
\ No newline at end of file
--- /dev/null
+<Project>
+ <!-- Needed for the net45 build to work on Unix. See https://github.com/dotnet/designs/pull/33 -->
+ <ItemGroup>
+ <PackageReference Include="Microsoft.NETFramework.ReferenceAssemblies" Version="1.0.0">
+ <PrivateAssets>all</PrivateAssets>
+ <IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
+ </PackageReference>
+ </ItemGroup>
+</Project>
\ No newline at end of file
/// </summary>
private static Task GetCompletedTask()
{
-#if NETSTANDARD1_5 || NETSTANDARD2_0
+#if NETSTANDARD
return Task.CompletedTask;
#else
return Task.FromResult<object>(null); // for .NET45, emulate the functionality
<Project Sdk="Microsoft.NET.Sdk">
-
- <Import Project="..\Grpc.Core\Common.csproj.include" />
-
<PropertyGroup>
<Authors>The gRPC Authors</Authors>
<Copyright>Copyright 2015 The gRPC Authors</Copyright>
<Project Sdk="Microsoft.NET.Sdk">
-
- <Import Project="..\Grpc.Core\Common.csproj.include" />
-
<PropertyGroup>
<Authors>The gRPC Authors</Authors>
<Copyright>Copyright 2019 The gRPC Authors</Copyright>
/// <summary>
/// Current <c>AssemblyFileVersion</c> of gRPC C# assemblies
/// </summary>
- public const string CurrentAssemblyFileVersion = "2.33.2.0";
+ public const string CurrentAssemblyFileVersion = "2.34.0.0";
/// <summary>
/// Current version of gRPC C#
/// </summary>
- public const string CurrentVersion = "2.33.2";
+ public const string CurrentVersion = "2.34.0";
}
}
<Project Sdk="Microsoft.NET.Sdk">
-
- <Import Project="..\Grpc.Core\Common.csproj.include" />
-
<PropertyGroup>
<Authors>The gRPC Authors</Authors>
<Copyright>Copyright 2015 The gRPC Authors</Copyright>
<ItemGroup>
<None Include="..\nativelibs\csharp_ext_windows_x86\grpc_csharp_ext.dll">
- <PackagePath>runtimes/win/native/grpc_csharp_ext.x86.dll</PackagePath>
+ <PackagePath>runtimes/win-x86/native/grpc_csharp_ext.x86.dll</PackagePath>
<Pack>true</Pack>
</None>
<None Include="..\nativelibs\csharp_ext_windows_x86\grpc_csharp_ext.pdb">
- <PackagePath>runtimes/win/native/grpc_csharp_ext.x86.pdb</PackagePath>
+ <PackagePath>runtimes/win-x86/native/grpc_csharp_ext.x86.pdb</PackagePath>
<Pack>true</Pack>
</None>
<None Include="..\nativelibs\csharp_ext_windows_x64\grpc_csharp_ext.dll">
- <PackagePath>runtimes/win/native/grpc_csharp_ext.x64.dll</PackagePath>
+ <PackagePath>runtimes/win-x64/native/grpc_csharp_ext.x64.dll</PackagePath>
<Pack>true</Pack>
</None>
<None Include="..\nativelibs\csharp_ext_windows_x64\grpc_csharp_ext.pdb">
- <PackagePath>runtimes/win/native/grpc_csharp_ext.x64.pdb</PackagePath>
+ <PackagePath>runtimes/win-x64/native/grpc_csharp_ext.x64.pdb</PackagePath>
<Pack>true</Pack>
</None>
</ItemGroup>
<Project Sdk="Microsoft.NET.Sdk">
-
- <Import Project="..\Grpc.Core\Common.csproj.include" />
-
<PropertyGroup>
<Authors>The gRPC Authors</Authors>
<Description>Miscellaneous code for testing Grpc.Core</Description>
<Project Sdk="Microsoft.NET.Sdk">
-
- <Import Project="..\Grpc.Core\Common.csproj.include" />
-
<PropertyGroup>
<TargetFrameworks>net45;netcoreapp2.1</TargetFrameworks>
<OutputType>Exe</OutputType>
--- /dev/null
+<Project Sdk="Microsoft.NET.Sdk">
+ <PropertyGroup>
+ <Authors>The gRPC Authors</Authors>
+ <Copyright>Copyright 2015 The gRPC Authors</Copyright>
+ <Description>Xamarin support for gRPC C#. Note that the gRPC C# support for the Xamarin platform is considered experimental.
+ This package contains the native grpc_csharp_ext libraries that are needed to run gRPC C# on mobile platforms (Android, iOS).
+ WARNING: Versions of Grpc.Core.Xamarin and Grpc.Core dependencies being used in your project must always match exactly, otherwise
+ things will be badly broken.</Description>
+ <PackageIconUrl>https://github.com/grpc/grpc.github.io/raw/master/img/grpc_square_reverse_4x.png</PackageIconUrl>
+ <PackageLicenseExpression>Apache-2.0</PackageLicenseExpression>
+ <PackageProjectUrl>https://github.com/grpc/grpc</PackageProjectUrl>
+ <PackageTags>gRPC RPC HTTP/2</PackageTags>
+ <VersionPrefix>$(GrpcCsharpVersion)</VersionPrefix>
+ </PropertyGroup>
+
+ <PropertyGroup>
+ <TargetFrameworks>net45;netstandard1.5;netstandard2.0</TargetFrameworks>
+ <GenerateDocumentationFile>true</GenerateDocumentationFile>
+ <TreatWarningsAsErrors>true</TreatWarningsAsErrors>
+ </PropertyGroup>
+
+ <Import Project="..\Grpc.Core\SourceLink.csproj.include" />
+
+ <ItemGroup>
+ <Content Include="..\nativelibs\csharp_ext_linux_android_armeabi-v7a\libgrpc_csharp_ext.so">
+ <PackagePath>native/android/armeabi-v7a/libgrpc_csharp_ext.so</PackagePath>
+ <Pack>true</Pack>
+ </Content>
+ <Content Include="..\nativelibs\csharp_ext_linux_android_arm64-v8a\libgrpc_csharp_ext.so">
+ <PackagePath>native/android/arm64-v8a/libgrpc_csharp_ext.so</PackagePath>
+ <Pack>true</Pack>
+ </Content>
+ <Content Include="..\nativelibs\csharp_ext_linux_android_x86\libgrpc_csharp_ext.so">
+ <PackagePath>native/android/x86/libgrpc_csharp_ext.so</PackagePath>
+ <Pack>true</Pack>
+ </Content>
+ <Content Include="..\nativelibs\csharp_ext_macos_ios\libgrpc_csharp_ext.a">
+ <PackagePath>native/ios/universal/libgrpc_csharp_ext.a</PackagePath>
+ <Pack>true</Pack>
+ </Content>
+ <Content Include="..\nativelibs\csharp_ext_macos_ios\libgrpc.a">
+ <PackagePath>native/ios/universal/libgrpc.a</PackagePath>
+ <Pack>true</Pack>
+ </Content>
+ <Content Include="build\MonoAndroid10\Grpc.Core.Xamarin.targets">
+ <PackagePath>build/MonoAndroid10/</PackagePath>
+ <Pack>true</Pack>
+ </Content>
+ <Content Include="build\Xamarin.iOS10\Grpc.Core.Xamarin.targets">
+ <PackagePath>build/Xamarin.iOS10/</PackagePath>
+ <Pack>true</Pack>
+ </Content>
+ </ItemGroup>
+
+ <ItemGroup>
+ <ProjectReference Include="../Grpc.Core/Grpc.Core.csproj" />
+ </ItemGroup>
+</Project>
--- /dev/null
+#region Copyright notice and license
+// Copyright 2020 The gRPC Authors
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+#endregion
+
+namespace Grpc.Core
+{
+
+ // Generate an empty assembly
+ internal static class UnusedClass
+ {
+ }
+}
<Project Sdk="Microsoft.NET.Sdk">
-
- <Import Project="Common.csproj.include" />
-
<PropertyGroup>
<Authors>The gRPC Authors</Authors>
<Copyright>Copyright 2015 The gRPC Authors</Copyright>
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
</PropertyGroup>
- <PropertyGroup>
- <LangVersion>7.2</LangVersion>
- </PropertyGroup>
-
<ItemGroup>
<Compile Include="..\Grpc.Core.Api\Version.cs" />
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="..\..\..\etc\roots.pem" />
<Content Include="..\nativelibs\csharp_ext_macos_x64\libgrpc_csharp_ext.dylib">
- <PackagePath>runtimes/osx/native/libgrpc_csharp_ext.x64.dylib</PackagePath>
- <Pack>true</Pack>
- </Content>
- <Content Include="..\nativelibs\csharp_ext_macos_x86\libgrpc_csharp_ext.dylib">
- <PackagePath>runtimes/osx/native/libgrpc_csharp_ext.x86.dylib</PackagePath>
+ <PackagePath>runtimes/osx-x64/native/libgrpc_csharp_ext.x64.dylib</PackagePath>
<Pack>true</Pack>
</Content>
<Content Include="..\nativelibs\csharp_ext_linux_x64\libgrpc_csharp_ext.so">
- <PackagePath>runtimes/linux/native/libgrpc_csharp_ext.x64.so</PackagePath>
- <Pack>true</Pack>
- </Content>
- <Content Include="..\nativelibs\csharp_ext_linux_x86\libgrpc_csharp_ext.so">
- <PackagePath>runtimes/linux/native/libgrpc_csharp_ext.x86.so</PackagePath>
+ <PackagePath>runtimes/linux-x64/native/libgrpc_csharp_ext.x64.so</PackagePath>
<Pack>true</Pack>
</Content>
<Content Include="..\nativelibs\csharp_ext_windows_x64\grpc_csharp_ext.dll">
- <PackagePath>runtimes/win/native/grpc_csharp_ext.x64.dll</PackagePath>
+ <PackagePath>runtimes/win-x64/native/grpc_csharp_ext.x64.dll</PackagePath>
<Pack>true</Pack>
</Content>
<Content Include="..\nativelibs\csharp_ext_windows_x86\grpc_csharp_ext.dll">
- <PackagePath>runtimes/win/native/grpc_csharp_ext.x86.dll</PackagePath>
- <Pack>true</Pack>
- </Content>
- <Content Include="..\nativelibs\csharp_ext_linux_android_armeabi-v7a\libgrpc_csharp_ext.so">
- <PackagePath>native/android/armeabi-v7a/libgrpc_csharp_ext.so</PackagePath>
- <Pack>true</Pack>
- </Content>
- <Content Include="..\nativelibs\csharp_ext_linux_android_arm64-v8a\libgrpc_csharp_ext.so">
- <PackagePath>native/android/arm64-v8a/libgrpc_csharp_ext.so</PackagePath>
- <Pack>true</Pack>
- </Content>
- <Content Include="..\nativelibs\csharp_ext_linux_android_x86\libgrpc_csharp_ext.so">
- <PackagePath>native/android/x86/libgrpc_csharp_ext.so</PackagePath>
- <Pack>true</Pack>
- </Content>
- <Content Include="..\nativelibs\csharp_ext_macos_ios\libgrpc_csharp_ext.a">
- <PackagePath>native/ios/universal/libgrpc_csharp_ext.a</PackagePath>
- <Pack>true</Pack>
- </Content>
- <Content Include="..\nativelibs\csharp_ext_macos_ios\libgrpc.a">
- <PackagePath>native/ios/universal/libgrpc.a</PackagePath>
+ <PackagePath>runtimes/win-x86/native/grpc_csharp_ext.x86.dll</PackagePath>
<Pack>true</Pack>
</Content>
<Content Include="build\net45\Grpc.Core.targets">
<PackagePath>build/net45/</PackagePath>
<Pack>true</Pack>
</Content>
- <Content Include="build\MonoAndroid10\Grpc.Core.targets">
- <PackagePath>build/MonoAndroid10/</PackagePath>
- <Pack>true</Pack>
- </Content>
- <Content Include="build\Xamarin.iOS10\Grpc.Core.targets">
- <PackagePath>build/Xamarin.iOS10/</PackagePath>
- <Pack>true</Pack>
- </Content>
</ItemGroup>
<ItemGroup>
// the gRPC channels and servers before the application exits. The following
// hooks provide some extra handling for cases when this is not the case,
// in the effort to achieve a reasonable behavior on shutdown.
-#if NETSTANDARD1_5 || NETSTANDARD2_0
+#if NETSTANDARD
// No action required at shutdown on .NET Core
// - In-progress P/Invoke calls (such as grpc_completion_queue_next) don't seem
// to prevent a .NET core application from terminating, so no special handling
/// <summary>
/// Detects which configuration of native extension to load and load it.
/// </summary>
- private static UnmanagedLibrary LoadUnmanagedLibrary()
+ private static NativeMethods LoadNativeMethodsLegacyNetFramework()
{
// TODO: allow customizing path to native extension (possibly through exposing a GrpcEnvironment property).
// See https://github.com/grpc/grpc/pull/7303 for one option.
- var assemblyDirectory = Path.GetDirectoryName(GetAssemblyPath());
+ var assemblyDirectory = GetAssemblyDirectory();
// With "classic" VS projects, the native libraries get copied using a .targets rule to the build output folder
// alongside the compiled assembly.
- // With dotnet cli projects targeting net45 framework, the native libraries (just the required ones)
- // are similarly copied to the built output folder, through the magic of Microsoft.NETCore.Platforms.
var classicPath = Path.Combine(assemblyDirectory, GetNativeLibraryFilename());
- // With dotnet cli project targeting netcoreappX.Y, projects will use Grpc.Core assembly directly in the location where it got restored
- // by nuget. We locate the native libraries based on known structure of Grpc.Core nuget package.
- // When "dotnet publish" is used, the runtimes directory is copied next to the published assemblies.
- string runtimesDirectory = string.Format("runtimes/{0}/native", GetPlatformString());
- var netCorePublishedAppStylePath = Path.Combine(assemblyDirectory, runtimesDirectory, GetNativeLibraryFilename());
- var netCoreAppStylePath = Path.Combine(assemblyDirectory, "../..", runtimesDirectory, GetNativeLibraryFilename());
-
// Look for the native library in all possible locations in given order.
- string[] paths = new[] { classicPath, netCorePublishedAppStylePath, netCoreAppStylePath};
- return new UnmanagedLibrary(paths);
+ string[] paths = new[] { classicPath };
+
+ // TODO(jtattermusch): the UnmanagedLibrary mechanism for loading the native extension while avoiding
+ // direct use of DllImport is quite complicated and is currently only needed to cover some niche scenarios
+ // (such legacy .NET Framework projects that use assembly shadowing) - everything else can be covered
+ // by using the [DllImport]. We should investigate the possibility of eliminating UnmanagedLibrary completely
+ // in the future.
+ return new NativeMethods(new UnmanagedLibrary(paths));
}
/// <summary>
{
return LoadNativeMethodsXamarin();
}
- return new NativeMethods(LoadUnmanagedLibrary());
+ if (PlatformApis.IsNetCore)
+ {
+ // On .NET Core, native libraries are a supported feature and the SDK makes
+ // sure that the native library is made available in the right location and that
+ // they will be discoverable by the [DllImport] default loading mechanism,
+ // even in some of the more exotic situations such as single file apps.
+ //
+ // While in theory, we could just [DllImport("grpc_csharp_ext")] for all the platforms
+ // and operating systems, the native libraries in the nuget package
+ // need to be laid out in a way that still allows things to work well under
+ // the legacy .NET Framework (where native libraries are a concept unknown to the runtime).
+ // Therefore, we use several flavors of the DllImport attribute
+ // (e.g. the ".x86" vs ".x64" suffix) and we choose the one we want at runtime.
+ // The classes with the list of DllImport'd methods are code generated,
+ // so having more than just one doesn't really bother us.
+
+ // on Windows, the DllImport("grpc_csharp_ext.x64") doesn't work for some reason,
+ // but DllImport("grpc_csharp_ext.x64.dll") does, so we need a special case for that.
+ bool useDllSuffix = PlatformApis.IsWindows;
+ if (PlatformApis.Is64Bit)
+ {
+ if (useDllSuffix)
+ {
+ return new NativeMethods(new NativeMethods.DllImportsFromSharedLib_x64_dll());
+ }
+ return new NativeMethods(new NativeMethods.DllImportsFromSharedLib_x64());
+ }
+ else
+ {
+ if (useDllSuffix)
+ {
+ return new NativeMethods(new NativeMethods.DllImportsFromSharedLib_x86_dll());
+ }
+ return new NativeMethods(new NativeMethods.DllImportsFromSharedLib_x86());
+ }
+ }
+ return LoadNativeMethodsLegacyNetFramework();
}
/// <summary>
/// </summary>
private static NativeMethods LoadNativeMethodsUnity()
{
- switch (PlatformApis.GetUnityRuntimePlatform())
+ if (PlatformApis.IsUnityIOS)
{
- case "IPhonePlayer":
- return new NativeMethods(new NativeMethods.DllImportsFromStaticLib());
- default:
- // most other platforms load unity plugins as a shared library
- return new NativeMethods(new NativeMethods.DllImportsFromSharedLib());
+ return new NativeMethods(new NativeMethods.DllImportsFromStaticLib());
}
+ // most other platforms load unity plugins as a shared library
+ return new NativeMethods(new NativeMethods.DllImportsFromSharedLib());
}
/// <summary>
/// Return native method delegates when running on the Xamarin platform.
+ /// On Xamarin, the standard <c>[DllImport]</c> loading logic just works
+ /// as the native library metadata is provided by the <c>AndroidNativeLibrary</c> or
+ /// <c>NativeReference</c> items in the Xamarin projects (injected automatically
+ /// by the Grpc.Core.Xamarin nuget).
/// WARNING: Xamarin support is experimental and work-in-progress. Don't expect it to work.
/// </summary>
private static NativeMethods LoadNativeMethodsXamarin()
{
return new NativeMethods(new NativeMethods.DllImportsFromSharedLib());
}
- // not tested yet
return new NativeMethods(new NativeMethods.DllImportsFromStaticLib());
}
- private static string GetAssemblyPath()
+ private static string GetAssemblyDirectory()
{
var assembly = typeof(NativeExtension).GetTypeInfo().Assembly;
-#if NETSTANDARD1_5 || NETSTANDARD2_0
+#if NETSTANDARD
// Assembly.EscapedCodeBase does not exist under CoreCLR, but assemblies imported from a nuget package
// don't seem to be shadowed by DNX-based projects at all.
- return assembly.Location;
+ var assemblyLocation = assembly.Location;
+ if (!string.IsNullOrEmpty(assemblyLocation))
+ {
+ return Path.GetDirectoryName(assemblyLocation);
+ }
+ // In .NET5 single-file deployments, assembly.Location won't be available
+ // Also see https://docs.microsoft.com/en-us/dotnet/core/deploying/single-file#other-considerations
+ return AppContext.BaseDirectory;
#else
// If assembly is shadowed (e.g. in a webapp), EscapedCodeBase is pointing
// to the original location of the assembly, and Location is pointing
var escapedCodeBase = assembly.EscapedCodeBase;
if (IsFileUri(escapedCodeBase))
{
- return new Uri(escapedCodeBase).LocalPath;
+ return Path.GetDirectoryName(new Uri(escapedCodeBase).LocalPath);
}
- return assembly.Location;
+ return Path.GetDirectoryName(assembly.Location);
#endif
}
-#if !NETSTANDARD1_5 && !NETSTANDARD2_0
+#if !NETSTANDARD
private static bool IsFileUri(string uri)
{
return uri.ToLowerInvariant().StartsWith(Uri.UriSchemeFile);
}
#endif
- private static string GetPlatformString()
+ private static string GetRuntimeIdString()
{
+ string architecture = GetArchitectureString();
if (PlatformApis.IsWindows)
{
- return "win";
+ return string.Format("win-{0}", architecture);
}
if (PlatformApis.IsLinux)
{
- return "linux";
+ return string.Format("linux-{0}", architecture);
}
if (PlatformApis.IsMacOSX)
{
- return "osx";
+ return string.Format("osx-{0}", architecture);
}
throw new InvalidOperationException("Unsupported platform.");
}
this.grpcsharp_test_call_start_unary_echo = DllImportsFromSharedLib.grpcsharp_test_call_start_unary_echo;
}
+ public NativeMethods(DllImportsFromSharedLib_x86 unusedInstance)
+ {
+ this.grpcsharp_init = DllImportsFromSharedLib_x86.grpcsharp_init;
+ this.grpcsharp_shutdown = DllImportsFromSharedLib_x86.grpcsharp_shutdown;
+ this.grpcsharp_version_string = DllImportsFromSharedLib_x86.grpcsharp_version_string;
+ this.grpcsharp_batch_context_create = DllImportsFromSharedLib_x86.grpcsharp_batch_context_create;
+ this.grpcsharp_batch_context_recv_initial_metadata = DllImportsFromSharedLib_x86.grpcsharp_batch_context_recv_initial_metadata;
+ this.grpcsharp_batch_context_recv_message_length = DllImportsFromSharedLib_x86.grpcsharp_batch_context_recv_message_length;
+ this.grpcsharp_batch_context_recv_message_next_slice_peek = DllImportsFromSharedLib_x86.grpcsharp_batch_context_recv_message_next_slice_peek;
+ this.grpcsharp_batch_context_recv_status_on_client_status = DllImportsFromSharedLib_x86.grpcsharp_batch_context_recv_status_on_client_status;
+ this.grpcsharp_batch_context_recv_status_on_client_details = DllImportsFromSharedLib_x86.grpcsharp_batch_context_recv_status_on_client_details;
+ this.grpcsharp_batch_context_recv_status_on_client_error_string = DllImportsFromSharedLib_x86.grpcsharp_batch_context_recv_status_on_client_error_string;
+ this.grpcsharp_batch_context_recv_status_on_client_trailing_metadata = DllImportsFromSharedLib_x86.grpcsharp_batch_context_recv_status_on_client_trailing_metadata;
+ this.grpcsharp_batch_context_recv_close_on_server_cancelled = DllImportsFromSharedLib_x86.grpcsharp_batch_context_recv_close_on_server_cancelled;
+ this.grpcsharp_batch_context_reset = DllImportsFromSharedLib_x86.grpcsharp_batch_context_reset;
+ this.grpcsharp_batch_context_destroy = DllImportsFromSharedLib_x86.grpcsharp_batch_context_destroy;
+ this.grpcsharp_request_call_context_create = DllImportsFromSharedLib_x86.grpcsharp_request_call_context_create;
+ this.grpcsharp_request_call_context_call = DllImportsFromSharedLib_x86.grpcsharp_request_call_context_call;
+ this.grpcsharp_request_call_context_method = DllImportsFromSharedLib_x86.grpcsharp_request_call_context_method;
+ this.grpcsharp_request_call_context_host = DllImportsFromSharedLib_x86.grpcsharp_request_call_context_host;
+ this.grpcsharp_request_call_context_deadline = DllImportsFromSharedLib_x86.grpcsharp_request_call_context_deadline;
+ this.grpcsharp_request_call_context_request_metadata = DllImportsFromSharedLib_x86.grpcsharp_request_call_context_request_metadata;
+ this.grpcsharp_request_call_context_reset = DllImportsFromSharedLib_x86.grpcsharp_request_call_context_reset;
+ this.grpcsharp_request_call_context_destroy = DllImportsFromSharedLib_x86.grpcsharp_request_call_context_destroy;
+ this.grpcsharp_composite_call_credentials_create = DllImportsFromSharedLib_x86.grpcsharp_composite_call_credentials_create;
+ this.grpcsharp_call_credentials_release = DllImportsFromSharedLib_x86.grpcsharp_call_credentials_release;
+ this.grpcsharp_call_cancel = DllImportsFromSharedLib_x86.grpcsharp_call_cancel;
+ this.grpcsharp_call_cancel_with_status = DllImportsFromSharedLib_x86.grpcsharp_call_cancel_with_status;
+ this.grpcsharp_call_start_unary = DllImportsFromSharedLib_x86.grpcsharp_call_start_unary;
+ this.grpcsharp_call_start_client_streaming = DllImportsFromSharedLib_x86.grpcsharp_call_start_client_streaming;
+ this.grpcsharp_call_start_server_streaming = DllImportsFromSharedLib_x86.grpcsharp_call_start_server_streaming;
+ this.grpcsharp_call_start_duplex_streaming = DllImportsFromSharedLib_x86.grpcsharp_call_start_duplex_streaming;
+ this.grpcsharp_call_send_message = DllImportsFromSharedLib_x86.grpcsharp_call_send_message;
+ this.grpcsharp_call_send_close_from_client = DllImportsFromSharedLib_x86.grpcsharp_call_send_close_from_client;
+ this.grpcsharp_call_send_status_from_server = DllImportsFromSharedLib_x86.grpcsharp_call_send_status_from_server;
+ this.grpcsharp_call_recv_message = DllImportsFromSharedLib_x86.grpcsharp_call_recv_message;
+ this.grpcsharp_call_recv_initial_metadata = DllImportsFromSharedLib_x86.grpcsharp_call_recv_initial_metadata;
+ this.grpcsharp_call_start_serverside = DllImportsFromSharedLib_x86.grpcsharp_call_start_serverside;
+ this.grpcsharp_call_send_initial_metadata = DllImportsFromSharedLib_x86.grpcsharp_call_send_initial_metadata;
+ this.grpcsharp_call_set_credentials = DllImportsFromSharedLib_x86.grpcsharp_call_set_credentials;
+ this.grpcsharp_call_get_peer = DllImportsFromSharedLib_x86.grpcsharp_call_get_peer;
+ this.grpcsharp_call_destroy = DllImportsFromSharedLib_x86.grpcsharp_call_destroy;
+ this.grpcsharp_channel_args_create = DllImportsFromSharedLib_x86.grpcsharp_channel_args_create;
+ this.grpcsharp_channel_args_set_string = DllImportsFromSharedLib_x86.grpcsharp_channel_args_set_string;
+ this.grpcsharp_channel_args_set_integer = DllImportsFromSharedLib_x86.grpcsharp_channel_args_set_integer;
+ this.grpcsharp_channel_args_destroy = DllImportsFromSharedLib_x86.grpcsharp_channel_args_destroy;
+ this.grpcsharp_override_default_ssl_roots = DllImportsFromSharedLib_x86.grpcsharp_override_default_ssl_roots;
+ this.grpcsharp_ssl_credentials_create = DllImportsFromSharedLib_x86.grpcsharp_ssl_credentials_create;
+ this.grpcsharp_composite_channel_credentials_create = DllImportsFromSharedLib_x86.grpcsharp_composite_channel_credentials_create;
+ this.grpcsharp_channel_credentials_release = DllImportsFromSharedLib_x86.grpcsharp_channel_credentials_release;
+ this.grpcsharp_insecure_channel_create = DllImportsFromSharedLib_x86.grpcsharp_insecure_channel_create;
+ this.grpcsharp_secure_channel_create = DllImportsFromSharedLib_x86.grpcsharp_secure_channel_create;
+ this.grpcsharp_channel_create_call = DllImportsFromSharedLib_x86.grpcsharp_channel_create_call;
+ this.grpcsharp_channel_check_connectivity_state = DllImportsFromSharedLib_x86.grpcsharp_channel_check_connectivity_state;
+ this.grpcsharp_channel_watch_connectivity_state = DllImportsFromSharedLib_x86.grpcsharp_channel_watch_connectivity_state;
+ this.grpcsharp_channel_get_target = DllImportsFromSharedLib_x86.grpcsharp_channel_get_target;
+ this.grpcsharp_channel_destroy = DllImportsFromSharedLib_x86.grpcsharp_channel_destroy;
+ this.grpcsharp_sizeof_grpc_event = DllImportsFromSharedLib_x86.grpcsharp_sizeof_grpc_event;
+ this.grpcsharp_completion_queue_create_async = DllImportsFromSharedLib_x86.grpcsharp_completion_queue_create_async;
+ this.grpcsharp_completion_queue_create_sync = DllImportsFromSharedLib_x86.grpcsharp_completion_queue_create_sync;
+ this.grpcsharp_completion_queue_shutdown = DllImportsFromSharedLib_x86.grpcsharp_completion_queue_shutdown;
+ this.grpcsharp_completion_queue_next = DllImportsFromSharedLib_x86.grpcsharp_completion_queue_next;
+ this.grpcsharp_completion_queue_pluck = DllImportsFromSharedLib_x86.grpcsharp_completion_queue_pluck;
+ this.grpcsharp_completion_queue_destroy = DllImportsFromSharedLib_x86.grpcsharp_completion_queue_destroy;
+ this.gprsharp_free = DllImportsFromSharedLib_x86.gprsharp_free;
+ this.grpcsharp_metadata_array_create = DllImportsFromSharedLib_x86.grpcsharp_metadata_array_create;
+ this.grpcsharp_metadata_array_add = DllImportsFromSharedLib_x86.grpcsharp_metadata_array_add;
+ this.grpcsharp_metadata_array_count = DllImportsFromSharedLib_x86.grpcsharp_metadata_array_count;
+ this.grpcsharp_metadata_array_get_key = DllImportsFromSharedLib_x86.grpcsharp_metadata_array_get_key;
+ this.grpcsharp_metadata_array_get_value = DllImportsFromSharedLib_x86.grpcsharp_metadata_array_get_value;
+ this.grpcsharp_metadata_array_destroy_full = DllImportsFromSharedLib_x86.grpcsharp_metadata_array_destroy_full;
+ this.grpcsharp_redirect_log = DllImportsFromSharedLib_x86.grpcsharp_redirect_log;
+ this.grpcsharp_native_callback_dispatcher_init = DllImportsFromSharedLib_x86.grpcsharp_native_callback_dispatcher_init;
+ this.grpcsharp_metadata_credentials_create_from_plugin = DllImportsFromSharedLib_x86.grpcsharp_metadata_credentials_create_from_plugin;
+ this.grpcsharp_metadata_credentials_notify_from_plugin = DllImportsFromSharedLib_x86.grpcsharp_metadata_credentials_notify_from_plugin;
+ this.grpcsharp_ssl_server_credentials_create = DllImportsFromSharedLib_x86.grpcsharp_ssl_server_credentials_create;
+ this.grpcsharp_server_credentials_release = DllImportsFromSharedLib_x86.grpcsharp_server_credentials_release;
+ this.grpcsharp_server_create = DllImportsFromSharedLib_x86.grpcsharp_server_create;
+ this.grpcsharp_server_register_completion_queue = DllImportsFromSharedLib_x86.grpcsharp_server_register_completion_queue;
+ this.grpcsharp_server_add_insecure_http2_port = DllImportsFromSharedLib_x86.grpcsharp_server_add_insecure_http2_port;
+ this.grpcsharp_server_add_secure_http2_port = DllImportsFromSharedLib_x86.grpcsharp_server_add_secure_http2_port;
+ this.grpcsharp_server_start = DllImportsFromSharedLib_x86.grpcsharp_server_start;
+ this.grpcsharp_server_request_call = DllImportsFromSharedLib_x86.grpcsharp_server_request_call;
+ this.grpcsharp_server_cancel_all_calls = DllImportsFromSharedLib_x86.grpcsharp_server_cancel_all_calls;
+ this.grpcsharp_server_shutdown_and_notify_callback = DllImportsFromSharedLib_x86.grpcsharp_server_shutdown_and_notify_callback;
+ this.grpcsharp_server_destroy = DllImportsFromSharedLib_x86.grpcsharp_server_destroy;
+ this.grpcsharp_call_auth_context = DllImportsFromSharedLib_x86.grpcsharp_call_auth_context;
+ this.grpcsharp_auth_context_peer_identity_property_name = DllImportsFromSharedLib_x86.grpcsharp_auth_context_peer_identity_property_name;
+ this.grpcsharp_auth_context_property_iterator = DllImportsFromSharedLib_x86.grpcsharp_auth_context_property_iterator;
+ this.grpcsharp_auth_property_iterator_next = DllImportsFromSharedLib_x86.grpcsharp_auth_property_iterator_next;
+ this.grpcsharp_auth_context_release = DllImportsFromSharedLib_x86.grpcsharp_auth_context_release;
+ this.grpcsharp_slice_buffer_create = DllImportsFromSharedLib_x86.grpcsharp_slice_buffer_create;
+ this.grpcsharp_slice_buffer_adjust_tail_space = DllImportsFromSharedLib_x86.grpcsharp_slice_buffer_adjust_tail_space;
+ this.grpcsharp_slice_buffer_slice_count = DllImportsFromSharedLib_x86.grpcsharp_slice_buffer_slice_count;
+ this.grpcsharp_slice_buffer_slice_peek = DllImportsFromSharedLib_x86.grpcsharp_slice_buffer_slice_peek;
+ this.grpcsharp_slice_buffer_reset_and_unref = DllImportsFromSharedLib_x86.grpcsharp_slice_buffer_reset_and_unref;
+ this.grpcsharp_slice_buffer_destroy = DllImportsFromSharedLib_x86.grpcsharp_slice_buffer_destroy;
+ this.gprsharp_now = DllImportsFromSharedLib_x86.gprsharp_now;
+ this.gprsharp_inf_future = DllImportsFromSharedLib_x86.gprsharp_inf_future;
+ this.gprsharp_inf_past = DllImportsFromSharedLib_x86.gprsharp_inf_past;
+ this.gprsharp_convert_clock_type = DllImportsFromSharedLib_x86.gprsharp_convert_clock_type;
+ this.gprsharp_sizeof_timespec = DllImportsFromSharedLib_x86.gprsharp_sizeof_timespec;
+ this.grpcsharp_test_callback = DllImportsFromSharedLib_x86.grpcsharp_test_callback;
+ this.grpcsharp_test_nop = DllImportsFromSharedLib_x86.grpcsharp_test_nop;
+ this.grpcsharp_test_override_method = DllImportsFromSharedLib_x86.grpcsharp_test_override_method;
+ this.grpcsharp_test_call_start_unary_echo = DllImportsFromSharedLib_x86.grpcsharp_test_call_start_unary_echo;
+ }
+
+ public NativeMethods(DllImportsFromSharedLib_x64 unusedInstance)
+ {
+ this.grpcsharp_init = DllImportsFromSharedLib_x64.grpcsharp_init;
+ this.grpcsharp_shutdown = DllImportsFromSharedLib_x64.grpcsharp_shutdown;
+ this.grpcsharp_version_string = DllImportsFromSharedLib_x64.grpcsharp_version_string;
+ this.grpcsharp_batch_context_create = DllImportsFromSharedLib_x64.grpcsharp_batch_context_create;
+ this.grpcsharp_batch_context_recv_initial_metadata = DllImportsFromSharedLib_x64.grpcsharp_batch_context_recv_initial_metadata;
+ this.grpcsharp_batch_context_recv_message_length = DllImportsFromSharedLib_x64.grpcsharp_batch_context_recv_message_length;
+ this.grpcsharp_batch_context_recv_message_next_slice_peek = DllImportsFromSharedLib_x64.grpcsharp_batch_context_recv_message_next_slice_peek;
+ this.grpcsharp_batch_context_recv_status_on_client_status = DllImportsFromSharedLib_x64.grpcsharp_batch_context_recv_status_on_client_status;
+ this.grpcsharp_batch_context_recv_status_on_client_details = DllImportsFromSharedLib_x64.grpcsharp_batch_context_recv_status_on_client_details;
+ this.grpcsharp_batch_context_recv_status_on_client_error_string = DllImportsFromSharedLib_x64.grpcsharp_batch_context_recv_status_on_client_error_string;
+ this.grpcsharp_batch_context_recv_status_on_client_trailing_metadata = DllImportsFromSharedLib_x64.grpcsharp_batch_context_recv_status_on_client_trailing_metadata;
+ this.grpcsharp_batch_context_recv_close_on_server_cancelled = DllImportsFromSharedLib_x64.grpcsharp_batch_context_recv_close_on_server_cancelled;
+ this.grpcsharp_batch_context_reset = DllImportsFromSharedLib_x64.grpcsharp_batch_context_reset;
+ this.grpcsharp_batch_context_destroy = DllImportsFromSharedLib_x64.grpcsharp_batch_context_destroy;
+ this.grpcsharp_request_call_context_create = DllImportsFromSharedLib_x64.grpcsharp_request_call_context_create;
+ this.grpcsharp_request_call_context_call = DllImportsFromSharedLib_x64.grpcsharp_request_call_context_call;
+ this.grpcsharp_request_call_context_method = DllImportsFromSharedLib_x64.grpcsharp_request_call_context_method;
+ this.grpcsharp_request_call_context_host = DllImportsFromSharedLib_x64.grpcsharp_request_call_context_host;
+ this.grpcsharp_request_call_context_deadline = DllImportsFromSharedLib_x64.grpcsharp_request_call_context_deadline;
+ this.grpcsharp_request_call_context_request_metadata = DllImportsFromSharedLib_x64.grpcsharp_request_call_context_request_metadata;
+ this.grpcsharp_request_call_context_reset = DllImportsFromSharedLib_x64.grpcsharp_request_call_context_reset;
+ this.grpcsharp_request_call_context_destroy = DllImportsFromSharedLib_x64.grpcsharp_request_call_context_destroy;
+ this.grpcsharp_composite_call_credentials_create = DllImportsFromSharedLib_x64.grpcsharp_composite_call_credentials_create;
+ this.grpcsharp_call_credentials_release = DllImportsFromSharedLib_x64.grpcsharp_call_credentials_release;
+ this.grpcsharp_call_cancel = DllImportsFromSharedLib_x64.grpcsharp_call_cancel;
+ this.grpcsharp_call_cancel_with_status = DllImportsFromSharedLib_x64.grpcsharp_call_cancel_with_status;
+ this.grpcsharp_call_start_unary = DllImportsFromSharedLib_x64.grpcsharp_call_start_unary;
+ this.grpcsharp_call_start_client_streaming = DllImportsFromSharedLib_x64.grpcsharp_call_start_client_streaming;
+ this.grpcsharp_call_start_server_streaming = DllImportsFromSharedLib_x64.grpcsharp_call_start_server_streaming;
+ this.grpcsharp_call_start_duplex_streaming = DllImportsFromSharedLib_x64.grpcsharp_call_start_duplex_streaming;
+ this.grpcsharp_call_send_message = DllImportsFromSharedLib_x64.grpcsharp_call_send_message;
+ this.grpcsharp_call_send_close_from_client = DllImportsFromSharedLib_x64.grpcsharp_call_send_close_from_client;
+ this.grpcsharp_call_send_status_from_server = DllImportsFromSharedLib_x64.grpcsharp_call_send_status_from_server;
+ this.grpcsharp_call_recv_message = DllImportsFromSharedLib_x64.grpcsharp_call_recv_message;
+ this.grpcsharp_call_recv_initial_metadata = DllImportsFromSharedLib_x64.grpcsharp_call_recv_initial_metadata;
+ this.grpcsharp_call_start_serverside = DllImportsFromSharedLib_x64.grpcsharp_call_start_serverside;
+ this.grpcsharp_call_send_initial_metadata = DllImportsFromSharedLib_x64.grpcsharp_call_send_initial_metadata;
+ this.grpcsharp_call_set_credentials = DllImportsFromSharedLib_x64.grpcsharp_call_set_credentials;
+ this.grpcsharp_call_get_peer = DllImportsFromSharedLib_x64.grpcsharp_call_get_peer;
+ this.grpcsharp_call_destroy = DllImportsFromSharedLib_x64.grpcsharp_call_destroy;
+ this.grpcsharp_channel_args_create = DllImportsFromSharedLib_x64.grpcsharp_channel_args_create;
+ this.grpcsharp_channel_args_set_string = DllImportsFromSharedLib_x64.grpcsharp_channel_args_set_string;
+ this.grpcsharp_channel_args_set_integer = DllImportsFromSharedLib_x64.grpcsharp_channel_args_set_integer;
+ this.grpcsharp_channel_args_destroy = DllImportsFromSharedLib_x64.grpcsharp_channel_args_destroy;
+ this.grpcsharp_override_default_ssl_roots = DllImportsFromSharedLib_x64.grpcsharp_override_default_ssl_roots;
+ this.grpcsharp_ssl_credentials_create = DllImportsFromSharedLib_x64.grpcsharp_ssl_credentials_create;
+ this.grpcsharp_composite_channel_credentials_create = DllImportsFromSharedLib_x64.grpcsharp_composite_channel_credentials_create;
+ this.grpcsharp_channel_credentials_release = DllImportsFromSharedLib_x64.grpcsharp_channel_credentials_release;
+ this.grpcsharp_insecure_channel_create = DllImportsFromSharedLib_x64.grpcsharp_insecure_channel_create;
+ this.grpcsharp_secure_channel_create = DllImportsFromSharedLib_x64.grpcsharp_secure_channel_create;
+ this.grpcsharp_channel_create_call = DllImportsFromSharedLib_x64.grpcsharp_channel_create_call;
+ this.grpcsharp_channel_check_connectivity_state = DllImportsFromSharedLib_x64.grpcsharp_channel_check_connectivity_state;
+ this.grpcsharp_channel_watch_connectivity_state = DllImportsFromSharedLib_x64.grpcsharp_channel_watch_connectivity_state;
+ this.grpcsharp_channel_get_target = DllImportsFromSharedLib_x64.grpcsharp_channel_get_target;
+ this.grpcsharp_channel_destroy = DllImportsFromSharedLib_x64.grpcsharp_channel_destroy;
+ this.grpcsharp_sizeof_grpc_event = DllImportsFromSharedLib_x64.grpcsharp_sizeof_grpc_event;
+ this.grpcsharp_completion_queue_create_async = DllImportsFromSharedLib_x64.grpcsharp_completion_queue_create_async;
+ this.grpcsharp_completion_queue_create_sync = DllImportsFromSharedLib_x64.grpcsharp_completion_queue_create_sync;
+ this.grpcsharp_completion_queue_shutdown = DllImportsFromSharedLib_x64.grpcsharp_completion_queue_shutdown;
+ this.grpcsharp_completion_queue_next = DllImportsFromSharedLib_x64.grpcsharp_completion_queue_next;
+ this.grpcsharp_completion_queue_pluck = DllImportsFromSharedLib_x64.grpcsharp_completion_queue_pluck;
+ this.grpcsharp_completion_queue_destroy = DllImportsFromSharedLib_x64.grpcsharp_completion_queue_destroy;
+ this.gprsharp_free = DllImportsFromSharedLib_x64.gprsharp_free;
+ this.grpcsharp_metadata_array_create = DllImportsFromSharedLib_x64.grpcsharp_metadata_array_create;
+ this.grpcsharp_metadata_array_add = DllImportsFromSharedLib_x64.grpcsharp_metadata_array_add;
+ this.grpcsharp_metadata_array_count = DllImportsFromSharedLib_x64.grpcsharp_metadata_array_count;
+ this.grpcsharp_metadata_array_get_key = DllImportsFromSharedLib_x64.grpcsharp_metadata_array_get_key;
+ this.grpcsharp_metadata_array_get_value = DllImportsFromSharedLib_x64.grpcsharp_metadata_array_get_value;
+ this.grpcsharp_metadata_array_destroy_full = DllImportsFromSharedLib_x64.grpcsharp_metadata_array_destroy_full;
+ this.grpcsharp_redirect_log = DllImportsFromSharedLib_x64.grpcsharp_redirect_log;
+ this.grpcsharp_native_callback_dispatcher_init = DllImportsFromSharedLib_x64.grpcsharp_native_callback_dispatcher_init;
+ this.grpcsharp_metadata_credentials_create_from_plugin = DllImportsFromSharedLib_x64.grpcsharp_metadata_credentials_create_from_plugin;
+ this.grpcsharp_metadata_credentials_notify_from_plugin = DllImportsFromSharedLib_x64.grpcsharp_metadata_credentials_notify_from_plugin;
+ this.grpcsharp_ssl_server_credentials_create = DllImportsFromSharedLib_x64.grpcsharp_ssl_server_credentials_create;
+ this.grpcsharp_server_credentials_release = DllImportsFromSharedLib_x64.grpcsharp_server_credentials_release;
+ this.grpcsharp_server_create = DllImportsFromSharedLib_x64.grpcsharp_server_create;
+ this.grpcsharp_server_register_completion_queue = DllImportsFromSharedLib_x64.grpcsharp_server_register_completion_queue;
+ this.grpcsharp_server_add_insecure_http2_port = DllImportsFromSharedLib_x64.grpcsharp_server_add_insecure_http2_port;
+ this.grpcsharp_server_add_secure_http2_port = DllImportsFromSharedLib_x64.grpcsharp_server_add_secure_http2_port;
+ this.grpcsharp_server_start = DllImportsFromSharedLib_x64.grpcsharp_server_start;
+ this.grpcsharp_server_request_call = DllImportsFromSharedLib_x64.grpcsharp_server_request_call;
+ this.grpcsharp_server_cancel_all_calls = DllImportsFromSharedLib_x64.grpcsharp_server_cancel_all_calls;
+ this.grpcsharp_server_shutdown_and_notify_callback = DllImportsFromSharedLib_x64.grpcsharp_server_shutdown_and_notify_callback;
+ this.grpcsharp_server_destroy = DllImportsFromSharedLib_x64.grpcsharp_server_destroy;
+ this.grpcsharp_call_auth_context = DllImportsFromSharedLib_x64.grpcsharp_call_auth_context;
+ this.grpcsharp_auth_context_peer_identity_property_name = DllImportsFromSharedLib_x64.grpcsharp_auth_context_peer_identity_property_name;
+ this.grpcsharp_auth_context_property_iterator = DllImportsFromSharedLib_x64.grpcsharp_auth_context_property_iterator;
+ this.grpcsharp_auth_property_iterator_next = DllImportsFromSharedLib_x64.grpcsharp_auth_property_iterator_next;
+ this.grpcsharp_auth_context_release = DllImportsFromSharedLib_x64.grpcsharp_auth_context_release;
+ this.grpcsharp_slice_buffer_create = DllImportsFromSharedLib_x64.grpcsharp_slice_buffer_create;
+ this.grpcsharp_slice_buffer_adjust_tail_space = DllImportsFromSharedLib_x64.grpcsharp_slice_buffer_adjust_tail_space;
+ this.grpcsharp_slice_buffer_slice_count = DllImportsFromSharedLib_x64.grpcsharp_slice_buffer_slice_count;
+ this.grpcsharp_slice_buffer_slice_peek = DllImportsFromSharedLib_x64.grpcsharp_slice_buffer_slice_peek;
+ this.grpcsharp_slice_buffer_reset_and_unref = DllImportsFromSharedLib_x64.grpcsharp_slice_buffer_reset_and_unref;
+ this.grpcsharp_slice_buffer_destroy = DllImportsFromSharedLib_x64.grpcsharp_slice_buffer_destroy;
+ this.gprsharp_now = DllImportsFromSharedLib_x64.gprsharp_now;
+ this.gprsharp_inf_future = DllImportsFromSharedLib_x64.gprsharp_inf_future;
+ this.gprsharp_inf_past = DllImportsFromSharedLib_x64.gprsharp_inf_past;
+ this.gprsharp_convert_clock_type = DllImportsFromSharedLib_x64.gprsharp_convert_clock_type;
+ this.gprsharp_sizeof_timespec = DllImportsFromSharedLib_x64.gprsharp_sizeof_timespec;
+ this.grpcsharp_test_callback = DllImportsFromSharedLib_x64.grpcsharp_test_callback;
+ this.grpcsharp_test_nop = DllImportsFromSharedLib_x64.grpcsharp_test_nop;
+ this.grpcsharp_test_override_method = DllImportsFromSharedLib_x64.grpcsharp_test_override_method;
+ this.grpcsharp_test_call_start_unary_echo = DllImportsFromSharedLib_x64.grpcsharp_test_call_start_unary_echo;
+ }
+
+ public NativeMethods(DllImportsFromSharedLib_x86_dll unusedInstance)
+ {
+ this.grpcsharp_init = DllImportsFromSharedLib_x86_dll.grpcsharp_init;
+ this.grpcsharp_shutdown = DllImportsFromSharedLib_x86_dll.grpcsharp_shutdown;
+ this.grpcsharp_version_string = DllImportsFromSharedLib_x86_dll.grpcsharp_version_string;
+ this.grpcsharp_batch_context_create = DllImportsFromSharedLib_x86_dll.grpcsharp_batch_context_create;
+ this.grpcsharp_batch_context_recv_initial_metadata = DllImportsFromSharedLib_x86_dll.grpcsharp_batch_context_recv_initial_metadata;
+ this.grpcsharp_batch_context_recv_message_length = DllImportsFromSharedLib_x86_dll.grpcsharp_batch_context_recv_message_length;
+ this.grpcsharp_batch_context_recv_message_next_slice_peek = DllImportsFromSharedLib_x86_dll.grpcsharp_batch_context_recv_message_next_slice_peek;
+ this.grpcsharp_batch_context_recv_status_on_client_status = DllImportsFromSharedLib_x86_dll.grpcsharp_batch_context_recv_status_on_client_status;
+ this.grpcsharp_batch_context_recv_status_on_client_details = DllImportsFromSharedLib_x86_dll.grpcsharp_batch_context_recv_status_on_client_details;
+ this.grpcsharp_batch_context_recv_status_on_client_error_string = DllImportsFromSharedLib_x86_dll.grpcsharp_batch_context_recv_status_on_client_error_string;
+ this.grpcsharp_batch_context_recv_status_on_client_trailing_metadata = DllImportsFromSharedLib_x86_dll.grpcsharp_batch_context_recv_status_on_client_trailing_metadata;
+ this.grpcsharp_batch_context_recv_close_on_server_cancelled = DllImportsFromSharedLib_x86_dll.grpcsharp_batch_context_recv_close_on_server_cancelled;
+ this.grpcsharp_batch_context_reset = DllImportsFromSharedLib_x86_dll.grpcsharp_batch_context_reset;
+ this.grpcsharp_batch_context_destroy = DllImportsFromSharedLib_x86_dll.grpcsharp_batch_context_destroy;
+ this.grpcsharp_request_call_context_create = DllImportsFromSharedLib_x86_dll.grpcsharp_request_call_context_create;
+ this.grpcsharp_request_call_context_call = DllImportsFromSharedLib_x86_dll.grpcsharp_request_call_context_call;
+ this.grpcsharp_request_call_context_method = DllImportsFromSharedLib_x86_dll.grpcsharp_request_call_context_method;
+ this.grpcsharp_request_call_context_host = DllImportsFromSharedLib_x86_dll.grpcsharp_request_call_context_host;
+ this.grpcsharp_request_call_context_deadline = DllImportsFromSharedLib_x86_dll.grpcsharp_request_call_context_deadline;
+ this.grpcsharp_request_call_context_request_metadata = DllImportsFromSharedLib_x86_dll.grpcsharp_request_call_context_request_metadata;
+ this.grpcsharp_request_call_context_reset = DllImportsFromSharedLib_x86_dll.grpcsharp_request_call_context_reset;
+ this.grpcsharp_request_call_context_destroy = DllImportsFromSharedLib_x86_dll.grpcsharp_request_call_context_destroy;
+ this.grpcsharp_composite_call_credentials_create = DllImportsFromSharedLib_x86_dll.grpcsharp_composite_call_credentials_create;
+ this.grpcsharp_call_credentials_release = DllImportsFromSharedLib_x86_dll.grpcsharp_call_credentials_release;
+ this.grpcsharp_call_cancel = DllImportsFromSharedLib_x86_dll.grpcsharp_call_cancel;
+ this.grpcsharp_call_cancel_with_status = DllImportsFromSharedLib_x86_dll.grpcsharp_call_cancel_with_status;
+ this.grpcsharp_call_start_unary = DllImportsFromSharedLib_x86_dll.grpcsharp_call_start_unary;
+ this.grpcsharp_call_start_client_streaming = DllImportsFromSharedLib_x86_dll.grpcsharp_call_start_client_streaming;
+ this.grpcsharp_call_start_server_streaming = DllImportsFromSharedLib_x86_dll.grpcsharp_call_start_server_streaming;
+ this.grpcsharp_call_start_duplex_streaming = DllImportsFromSharedLib_x86_dll.grpcsharp_call_start_duplex_streaming;
+ this.grpcsharp_call_send_message = DllImportsFromSharedLib_x86_dll.grpcsharp_call_send_message;
+ this.grpcsharp_call_send_close_from_client = DllImportsFromSharedLib_x86_dll.grpcsharp_call_send_close_from_client;
+ this.grpcsharp_call_send_status_from_server = DllImportsFromSharedLib_x86_dll.grpcsharp_call_send_status_from_server;
+ this.grpcsharp_call_recv_message = DllImportsFromSharedLib_x86_dll.grpcsharp_call_recv_message;
+ this.grpcsharp_call_recv_initial_metadata = DllImportsFromSharedLib_x86_dll.grpcsharp_call_recv_initial_metadata;
+ this.grpcsharp_call_start_serverside = DllImportsFromSharedLib_x86_dll.grpcsharp_call_start_serverside;
+ this.grpcsharp_call_send_initial_metadata = DllImportsFromSharedLib_x86_dll.grpcsharp_call_send_initial_metadata;
+ this.grpcsharp_call_set_credentials = DllImportsFromSharedLib_x86_dll.grpcsharp_call_set_credentials;
+ this.grpcsharp_call_get_peer = DllImportsFromSharedLib_x86_dll.grpcsharp_call_get_peer;
+ this.grpcsharp_call_destroy = DllImportsFromSharedLib_x86_dll.grpcsharp_call_destroy;
+ this.grpcsharp_channel_args_create = DllImportsFromSharedLib_x86_dll.grpcsharp_channel_args_create;
+ this.grpcsharp_channel_args_set_string = DllImportsFromSharedLib_x86_dll.grpcsharp_channel_args_set_string;
+ this.grpcsharp_channel_args_set_integer = DllImportsFromSharedLib_x86_dll.grpcsharp_channel_args_set_integer;
+ this.grpcsharp_channel_args_destroy = DllImportsFromSharedLib_x86_dll.grpcsharp_channel_args_destroy;
+ this.grpcsharp_override_default_ssl_roots = DllImportsFromSharedLib_x86_dll.grpcsharp_override_default_ssl_roots;
+ this.grpcsharp_ssl_credentials_create = DllImportsFromSharedLib_x86_dll.grpcsharp_ssl_credentials_create;
+ this.grpcsharp_composite_channel_credentials_create = DllImportsFromSharedLib_x86_dll.grpcsharp_composite_channel_credentials_create;
+ this.grpcsharp_channel_credentials_release = DllImportsFromSharedLib_x86_dll.grpcsharp_channel_credentials_release;
+ this.grpcsharp_insecure_channel_create = DllImportsFromSharedLib_x86_dll.grpcsharp_insecure_channel_create;
+ this.grpcsharp_secure_channel_create = DllImportsFromSharedLib_x86_dll.grpcsharp_secure_channel_create;
+ this.grpcsharp_channel_create_call = DllImportsFromSharedLib_x86_dll.grpcsharp_channel_create_call;
+ this.grpcsharp_channel_check_connectivity_state = DllImportsFromSharedLib_x86_dll.grpcsharp_channel_check_connectivity_state;
+ this.grpcsharp_channel_watch_connectivity_state = DllImportsFromSharedLib_x86_dll.grpcsharp_channel_watch_connectivity_state;
+ this.grpcsharp_channel_get_target = DllImportsFromSharedLib_x86_dll.grpcsharp_channel_get_target;
+ this.grpcsharp_channel_destroy = DllImportsFromSharedLib_x86_dll.grpcsharp_channel_destroy;
+ this.grpcsharp_sizeof_grpc_event = DllImportsFromSharedLib_x86_dll.grpcsharp_sizeof_grpc_event;
+ this.grpcsharp_completion_queue_create_async = DllImportsFromSharedLib_x86_dll.grpcsharp_completion_queue_create_async;
+ this.grpcsharp_completion_queue_create_sync = DllImportsFromSharedLib_x86_dll.grpcsharp_completion_queue_create_sync;
+ this.grpcsharp_completion_queue_shutdown = DllImportsFromSharedLib_x86_dll.grpcsharp_completion_queue_shutdown;
+ this.grpcsharp_completion_queue_next = DllImportsFromSharedLib_x86_dll.grpcsharp_completion_queue_next;
+ this.grpcsharp_completion_queue_pluck = DllImportsFromSharedLib_x86_dll.grpcsharp_completion_queue_pluck;
+ this.grpcsharp_completion_queue_destroy = DllImportsFromSharedLib_x86_dll.grpcsharp_completion_queue_destroy;
+ this.gprsharp_free = DllImportsFromSharedLib_x86_dll.gprsharp_free;
+ this.grpcsharp_metadata_array_create = DllImportsFromSharedLib_x86_dll.grpcsharp_metadata_array_create;
+ this.grpcsharp_metadata_array_add = DllImportsFromSharedLib_x86_dll.grpcsharp_metadata_array_add;
+ this.grpcsharp_metadata_array_count = DllImportsFromSharedLib_x86_dll.grpcsharp_metadata_array_count;
+ this.grpcsharp_metadata_array_get_key = DllImportsFromSharedLib_x86_dll.grpcsharp_metadata_array_get_key;
+ this.grpcsharp_metadata_array_get_value = DllImportsFromSharedLib_x86_dll.grpcsharp_metadata_array_get_value;
+ this.grpcsharp_metadata_array_destroy_full = DllImportsFromSharedLib_x86_dll.grpcsharp_metadata_array_destroy_full;
+ this.grpcsharp_redirect_log = DllImportsFromSharedLib_x86_dll.grpcsharp_redirect_log;
+ this.grpcsharp_native_callback_dispatcher_init = DllImportsFromSharedLib_x86_dll.grpcsharp_native_callback_dispatcher_init;
+ this.grpcsharp_metadata_credentials_create_from_plugin = DllImportsFromSharedLib_x86_dll.grpcsharp_metadata_credentials_create_from_plugin;
+ this.grpcsharp_metadata_credentials_notify_from_plugin = DllImportsFromSharedLib_x86_dll.grpcsharp_metadata_credentials_notify_from_plugin;
+ this.grpcsharp_ssl_server_credentials_create = DllImportsFromSharedLib_x86_dll.grpcsharp_ssl_server_credentials_create;
+ this.grpcsharp_server_credentials_release = DllImportsFromSharedLib_x86_dll.grpcsharp_server_credentials_release;
+ this.grpcsharp_server_create = DllImportsFromSharedLib_x86_dll.grpcsharp_server_create;
+ this.grpcsharp_server_register_completion_queue = DllImportsFromSharedLib_x86_dll.grpcsharp_server_register_completion_queue;
+ this.grpcsharp_server_add_insecure_http2_port = DllImportsFromSharedLib_x86_dll.grpcsharp_server_add_insecure_http2_port;
+ this.grpcsharp_server_add_secure_http2_port = DllImportsFromSharedLib_x86_dll.grpcsharp_server_add_secure_http2_port;
+ this.grpcsharp_server_start = DllImportsFromSharedLib_x86_dll.grpcsharp_server_start;
+ this.grpcsharp_server_request_call = DllImportsFromSharedLib_x86_dll.grpcsharp_server_request_call;
+ this.grpcsharp_server_cancel_all_calls = DllImportsFromSharedLib_x86_dll.grpcsharp_server_cancel_all_calls;
+ this.grpcsharp_server_shutdown_and_notify_callback = DllImportsFromSharedLib_x86_dll.grpcsharp_server_shutdown_and_notify_callback;
+ this.grpcsharp_server_destroy = DllImportsFromSharedLib_x86_dll.grpcsharp_server_destroy;
+ this.grpcsharp_call_auth_context = DllImportsFromSharedLib_x86_dll.grpcsharp_call_auth_context;
+ this.grpcsharp_auth_context_peer_identity_property_name = DllImportsFromSharedLib_x86_dll.grpcsharp_auth_context_peer_identity_property_name;
+ this.grpcsharp_auth_context_property_iterator = DllImportsFromSharedLib_x86_dll.grpcsharp_auth_context_property_iterator;
+ this.grpcsharp_auth_property_iterator_next = DllImportsFromSharedLib_x86_dll.grpcsharp_auth_property_iterator_next;
+ this.grpcsharp_auth_context_release = DllImportsFromSharedLib_x86_dll.grpcsharp_auth_context_release;
+ this.grpcsharp_slice_buffer_create = DllImportsFromSharedLib_x86_dll.grpcsharp_slice_buffer_create;
+ this.grpcsharp_slice_buffer_adjust_tail_space = DllImportsFromSharedLib_x86_dll.grpcsharp_slice_buffer_adjust_tail_space;
+ this.grpcsharp_slice_buffer_slice_count = DllImportsFromSharedLib_x86_dll.grpcsharp_slice_buffer_slice_count;
+ this.grpcsharp_slice_buffer_slice_peek = DllImportsFromSharedLib_x86_dll.grpcsharp_slice_buffer_slice_peek;
+ this.grpcsharp_slice_buffer_reset_and_unref = DllImportsFromSharedLib_x86_dll.grpcsharp_slice_buffer_reset_and_unref;
+ this.grpcsharp_slice_buffer_destroy = DllImportsFromSharedLib_x86_dll.grpcsharp_slice_buffer_destroy;
+ this.gprsharp_now = DllImportsFromSharedLib_x86_dll.gprsharp_now;
+ this.gprsharp_inf_future = DllImportsFromSharedLib_x86_dll.gprsharp_inf_future;
+ this.gprsharp_inf_past = DllImportsFromSharedLib_x86_dll.gprsharp_inf_past;
+ this.gprsharp_convert_clock_type = DllImportsFromSharedLib_x86_dll.gprsharp_convert_clock_type;
+ this.gprsharp_sizeof_timespec = DllImportsFromSharedLib_x86_dll.gprsharp_sizeof_timespec;
+ this.grpcsharp_test_callback = DllImportsFromSharedLib_x86_dll.grpcsharp_test_callback;
+ this.grpcsharp_test_nop = DllImportsFromSharedLib_x86_dll.grpcsharp_test_nop;
+ this.grpcsharp_test_override_method = DllImportsFromSharedLib_x86_dll.grpcsharp_test_override_method;
+ this.grpcsharp_test_call_start_unary_echo = DllImportsFromSharedLib_x86_dll.grpcsharp_test_call_start_unary_echo;
+ }
+
+ public NativeMethods(DllImportsFromSharedLib_x64_dll unusedInstance)
+ {
+ this.grpcsharp_init = DllImportsFromSharedLib_x64_dll.grpcsharp_init;
+ this.grpcsharp_shutdown = DllImportsFromSharedLib_x64_dll.grpcsharp_shutdown;
+ this.grpcsharp_version_string = DllImportsFromSharedLib_x64_dll.grpcsharp_version_string;
+ this.grpcsharp_batch_context_create = DllImportsFromSharedLib_x64_dll.grpcsharp_batch_context_create;
+ this.grpcsharp_batch_context_recv_initial_metadata = DllImportsFromSharedLib_x64_dll.grpcsharp_batch_context_recv_initial_metadata;
+ this.grpcsharp_batch_context_recv_message_length = DllImportsFromSharedLib_x64_dll.grpcsharp_batch_context_recv_message_length;
+ this.grpcsharp_batch_context_recv_message_next_slice_peek = DllImportsFromSharedLib_x64_dll.grpcsharp_batch_context_recv_message_next_slice_peek;
+ this.grpcsharp_batch_context_recv_status_on_client_status = DllImportsFromSharedLib_x64_dll.grpcsharp_batch_context_recv_status_on_client_status;
+ this.grpcsharp_batch_context_recv_status_on_client_details = DllImportsFromSharedLib_x64_dll.grpcsharp_batch_context_recv_status_on_client_details;
+ this.grpcsharp_batch_context_recv_status_on_client_error_string = DllImportsFromSharedLib_x64_dll.grpcsharp_batch_context_recv_status_on_client_error_string;
+ this.grpcsharp_batch_context_recv_status_on_client_trailing_metadata = DllImportsFromSharedLib_x64_dll.grpcsharp_batch_context_recv_status_on_client_trailing_metadata;
+ this.grpcsharp_batch_context_recv_close_on_server_cancelled = DllImportsFromSharedLib_x64_dll.grpcsharp_batch_context_recv_close_on_server_cancelled;
+ this.grpcsharp_batch_context_reset = DllImportsFromSharedLib_x64_dll.grpcsharp_batch_context_reset;
+ this.grpcsharp_batch_context_destroy = DllImportsFromSharedLib_x64_dll.grpcsharp_batch_context_destroy;
+ this.grpcsharp_request_call_context_create = DllImportsFromSharedLib_x64_dll.grpcsharp_request_call_context_create;
+ this.grpcsharp_request_call_context_call = DllImportsFromSharedLib_x64_dll.grpcsharp_request_call_context_call;
+ this.grpcsharp_request_call_context_method = DllImportsFromSharedLib_x64_dll.grpcsharp_request_call_context_method;
+ this.grpcsharp_request_call_context_host = DllImportsFromSharedLib_x64_dll.grpcsharp_request_call_context_host;
+ this.grpcsharp_request_call_context_deadline = DllImportsFromSharedLib_x64_dll.grpcsharp_request_call_context_deadline;
+ this.grpcsharp_request_call_context_request_metadata = DllImportsFromSharedLib_x64_dll.grpcsharp_request_call_context_request_metadata;
+ this.grpcsharp_request_call_context_reset = DllImportsFromSharedLib_x64_dll.grpcsharp_request_call_context_reset;
+ this.grpcsharp_request_call_context_destroy = DllImportsFromSharedLib_x64_dll.grpcsharp_request_call_context_destroy;
+ this.grpcsharp_composite_call_credentials_create = DllImportsFromSharedLib_x64_dll.grpcsharp_composite_call_credentials_create;
+ this.grpcsharp_call_credentials_release = DllImportsFromSharedLib_x64_dll.grpcsharp_call_credentials_release;
+ this.grpcsharp_call_cancel = DllImportsFromSharedLib_x64_dll.grpcsharp_call_cancel;
+ this.grpcsharp_call_cancel_with_status = DllImportsFromSharedLib_x64_dll.grpcsharp_call_cancel_with_status;
+ this.grpcsharp_call_start_unary = DllImportsFromSharedLib_x64_dll.grpcsharp_call_start_unary;
+ this.grpcsharp_call_start_client_streaming = DllImportsFromSharedLib_x64_dll.grpcsharp_call_start_client_streaming;
+ this.grpcsharp_call_start_server_streaming = DllImportsFromSharedLib_x64_dll.grpcsharp_call_start_server_streaming;
+ this.grpcsharp_call_start_duplex_streaming = DllImportsFromSharedLib_x64_dll.grpcsharp_call_start_duplex_streaming;
+ this.grpcsharp_call_send_message = DllImportsFromSharedLib_x64_dll.grpcsharp_call_send_message;
+ this.grpcsharp_call_send_close_from_client = DllImportsFromSharedLib_x64_dll.grpcsharp_call_send_close_from_client;
+ this.grpcsharp_call_send_status_from_server = DllImportsFromSharedLib_x64_dll.grpcsharp_call_send_status_from_server;
+ this.grpcsharp_call_recv_message = DllImportsFromSharedLib_x64_dll.grpcsharp_call_recv_message;
+ this.grpcsharp_call_recv_initial_metadata = DllImportsFromSharedLib_x64_dll.grpcsharp_call_recv_initial_metadata;
+ this.grpcsharp_call_start_serverside = DllImportsFromSharedLib_x64_dll.grpcsharp_call_start_serverside;
+ this.grpcsharp_call_send_initial_metadata = DllImportsFromSharedLib_x64_dll.grpcsharp_call_send_initial_metadata;
+ this.grpcsharp_call_set_credentials = DllImportsFromSharedLib_x64_dll.grpcsharp_call_set_credentials;
+ this.grpcsharp_call_get_peer = DllImportsFromSharedLib_x64_dll.grpcsharp_call_get_peer;
+ this.grpcsharp_call_destroy = DllImportsFromSharedLib_x64_dll.grpcsharp_call_destroy;
+ this.grpcsharp_channel_args_create = DllImportsFromSharedLib_x64_dll.grpcsharp_channel_args_create;
+ this.grpcsharp_channel_args_set_string = DllImportsFromSharedLib_x64_dll.grpcsharp_channel_args_set_string;
+ this.grpcsharp_channel_args_set_integer = DllImportsFromSharedLib_x64_dll.grpcsharp_channel_args_set_integer;
+ this.grpcsharp_channel_args_destroy = DllImportsFromSharedLib_x64_dll.grpcsharp_channel_args_destroy;
+ this.grpcsharp_override_default_ssl_roots = DllImportsFromSharedLib_x64_dll.grpcsharp_override_default_ssl_roots;
+ this.grpcsharp_ssl_credentials_create = DllImportsFromSharedLib_x64_dll.grpcsharp_ssl_credentials_create;
+ this.grpcsharp_composite_channel_credentials_create = DllImportsFromSharedLib_x64_dll.grpcsharp_composite_channel_credentials_create;
+ this.grpcsharp_channel_credentials_release = DllImportsFromSharedLib_x64_dll.grpcsharp_channel_credentials_release;
+ this.grpcsharp_insecure_channel_create = DllImportsFromSharedLib_x64_dll.grpcsharp_insecure_channel_create;
+ this.grpcsharp_secure_channel_create = DllImportsFromSharedLib_x64_dll.grpcsharp_secure_channel_create;
+ this.grpcsharp_channel_create_call = DllImportsFromSharedLib_x64_dll.grpcsharp_channel_create_call;
+ this.grpcsharp_channel_check_connectivity_state = DllImportsFromSharedLib_x64_dll.grpcsharp_channel_check_connectivity_state;
+ this.grpcsharp_channel_watch_connectivity_state = DllImportsFromSharedLib_x64_dll.grpcsharp_channel_watch_connectivity_state;
+ this.grpcsharp_channel_get_target = DllImportsFromSharedLib_x64_dll.grpcsharp_channel_get_target;
+ this.grpcsharp_channel_destroy = DllImportsFromSharedLib_x64_dll.grpcsharp_channel_destroy;
+ this.grpcsharp_sizeof_grpc_event = DllImportsFromSharedLib_x64_dll.grpcsharp_sizeof_grpc_event;
+ this.grpcsharp_completion_queue_create_async = DllImportsFromSharedLib_x64_dll.grpcsharp_completion_queue_create_async;
+ this.grpcsharp_completion_queue_create_sync = DllImportsFromSharedLib_x64_dll.grpcsharp_completion_queue_create_sync;
+ this.grpcsharp_completion_queue_shutdown = DllImportsFromSharedLib_x64_dll.grpcsharp_completion_queue_shutdown;
+ this.grpcsharp_completion_queue_next = DllImportsFromSharedLib_x64_dll.grpcsharp_completion_queue_next;
+ this.grpcsharp_completion_queue_pluck = DllImportsFromSharedLib_x64_dll.grpcsharp_completion_queue_pluck;
+ this.grpcsharp_completion_queue_destroy = DllImportsFromSharedLib_x64_dll.grpcsharp_completion_queue_destroy;
+ this.gprsharp_free = DllImportsFromSharedLib_x64_dll.gprsharp_free;
+ this.grpcsharp_metadata_array_create = DllImportsFromSharedLib_x64_dll.grpcsharp_metadata_array_create;
+ this.grpcsharp_metadata_array_add = DllImportsFromSharedLib_x64_dll.grpcsharp_metadata_array_add;
+ this.grpcsharp_metadata_array_count = DllImportsFromSharedLib_x64_dll.grpcsharp_metadata_array_count;
+ this.grpcsharp_metadata_array_get_key = DllImportsFromSharedLib_x64_dll.grpcsharp_metadata_array_get_key;
+ this.grpcsharp_metadata_array_get_value = DllImportsFromSharedLib_x64_dll.grpcsharp_metadata_array_get_value;
+ this.grpcsharp_metadata_array_destroy_full = DllImportsFromSharedLib_x64_dll.grpcsharp_metadata_array_destroy_full;
+ this.grpcsharp_redirect_log = DllImportsFromSharedLib_x64_dll.grpcsharp_redirect_log;
+ this.grpcsharp_native_callback_dispatcher_init = DllImportsFromSharedLib_x64_dll.grpcsharp_native_callback_dispatcher_init;
+ this.grpcsharp_metadata_credentials_create_from_plugin = DllImportsFromSharedLib_x64_dll.grpcsharp_metadata_credentials_create_from_plugin;
+ this.grpcsharp_metadata_credentials_notify_from_plugin = DllImportsFromSharedLib_x64_dll.grpcsharp_metadata_credentials_notify_from_plugin;
+ this.grpcsharp_ssl_server_credentials_create = DllImportsFromSharedLib_x64_dll.grpcsharp_ssl_server_credentials_create;
+ this.grpcsharp_server_credentials_release = DllImportsFromSharedLib_x64_dll.grpcsharp_server_credentials_release;
+ this.grpcsharp_server_create = DllImportsFromSharedLib_x64_dll.grpcsharp_server_create;
+ this.grpcsharp_server_register_completion_queue = DllImportsFromSharedLib_x64_dll.grpcsharp_server_register_completion_queue;
+ this.grpcsharp_server_add_insecure_http2_port = DllImportsFromSharedLib_x64_dll.grpcsharp_server_add_insecure_http2_port;
+ this.grpcsharp_server_add_secure_http2_port = DllImportsFromSharedLib_x64_dll.grpcsharp_server_add_secure_http2_port;
+ this.grpcsharp_server_start = DllImportsFromSharedLib_x64_dll.grpcsharp_server_start;
+ this.grpcsharp_server_request_call = DllImportsFromSharedLib_x64_dll.grpcsharp_server_request_call;
+ this.grpcsharp_server_cancel_all_calls = DllImportsFromSharedLib_x64_dll.grpcsharp_server_cancel_all_calls;
+ this.grpcsharp_server_shutdown_and_notify_callback = DllImportsFromSharedLib_x64_dll.grpcsharp_server_shutdown_and_notify_callback;
+ this.grpcsharp_server_destroy = DllImportsFromSharedLib_x64_dll.grpcsharp_server_destroy;
+ this.grpcsharp_call_auth_context = DllImportsFromSharedLib_x64_dll.grpcsharp_call_auth_context;
+ this.grpcsharp_auth_context_peer_identity_property_name = DllImportsFromSharedLib_x64_dll.grpcsharp_auth_context_peer_identity_property_name;
+ this.grpcsharp_auth_context_property_iterator = DllImportsFromSharedLib_x64_dll.grpcsharp_auth_context_property_iterator;
+ this.grpcsharp_auth_property_iterator_next = DllImportsFromSharedLib_x64_dll.grpcsharp_auth_property_iterator_next;
+ this.grpcsharp_auth_context_release = DllImportsFromSharedLib_x64_dll.grpcsharp_auth_context_release;
+ this.grpcsharp_slice_buffer_create = DllImportsFromSharedLib_x64_dll.grpcsharp_slice_buffer_create;
+ this.grpcsharp_slice_buffer_adjust_tail_space = DllImportsFromSharedLib_x64_dll.grpcsharp_slice_buffer_adjust_tail_space;
+ this.grpcsharp_slice_buffer_slice_count = DllImportsFromSharedLib_x64_dll.grpcsharp_slice_buffer_slice_count;
+ this.grpcsharp_slice_buffer_slice_peek = DllImportsFromSharedLib_x64_dll.grpcsharp_slice_buffer_slice_peek;
+ this.grpcsharp_slice_buffer_reset_and_unref = DllImportsFromSharedLib_x64_dll.grpcsharp_slice_buffer_reset_and_unref;
+ this.grpcsharp_slice_buffer_destroy = DllImportsFromSharedLib_x64_dll.grpcsharp_slice_buffer_destroy;
+ this.gprsharp_now = DllImportsFromSharedLib_x64_dll.gprsharp_now;
+ this.gprsharp_inf_future = DllImportsFromSharedLib_x64_dll.gprsharp_inf_future;
+ this.gprsharp_inf_past = DllImportsFromSharedLib_x64_dll.gprsharp_inf_past;
+ this.gprsharp_convert_clock_type = DllImportsFromSharedLib_x64_dll.gprsharp_convert_clock_type;
+ this.gprsharp_sizeof_timespec = DllImportsFromSharedLib_x64_dll.gprsharp_sizeof_timespec;
+ this.grpcsharp_test_callback = DllImportsFromSharedLib_x64_dll.grpcsharp_test_callback;
+ this.grpcsharp_test_nop = DllImportsFromSharedLib_x64_dll.grpcsharp_test_nop;
+ this.grpcsharp_test_override_method = DllImportsFromSharedLib_x64_dll.grpcsharp_test_override_method;
+ this.grpcsharp_test_call_start_unary_echo = DllImportsFromSharedLib_x64_dll.grpcsharp_test_call_start_unary_echo;
+ }
+
/// <summary>
/// Delegate types for all published native methods. Declared under inner class to prevent scope pollution.
/// </summary>
}
/// <summary>
- /// grpc_csharp_ext used a shared library (e.g on Unity Standalone and Android).
+ /// grpc_csharp_ext used as a shared library (e.g on Unity Standalone and Android).
/// </summary>
internal class DllImportsFromSharedLib
{
[DllImport(ImportName)]
public static extern CallError grpcsharp_test_call_start_unary_echo(CallSafeHandle call, BatchContextSafeHandle ctx, SliceBufferSafeHandle sendBuffer, WriteFlags writeFlags, MetadataArraySafeHandle metadataArray, CallFlags metadataFlags);
}
+
+ /// <summary>
+ /// grpc_csharp_ext used as a shared library (with x86 suffix)
+ /// </summary>
+ internal class DllImportsFromSharedLib_x86
+ {
+ private const string ImportName = "grpc_csharp_ext.x86";
+
+ [DllImport(ImportName)]
+ public static extern void grpcsharp_init();
+
+ [DllImport(ImportName)]
+ public static extern void grpcsharp_shutdown();
+
+ [DllImport(ImportName)]
+ public static extern IntPtr grpcsharp_version_string();
+
+ [DllImport(ImportName)]
+ public static extern BatchContextSafeHandle grpcsharp_batch_context_create();
+
+ [DllImport(ImportName)]
+ public static extern IntPtr grpcsharp_batch_context_recv_initial_metadata(BatchContextSafeHandle ctx);
+
+ [DllImport(ImportName)]
+ public static extern IntPtr grpcsharp_batch_context_recv_message_length(BatchContextSafeHandle ctx);
+
+ [DllImport(ImportName)]
+ public static extern int grpcsharp_batch_context_recv_message_next_slice_peek(BatchContextSafeHandle ctx, out UIntPtr sliceLen, out IntPtr sliceDataPtr);
+
+ [DllImport(ImportName)]
+ public static extern StatusCode grpcsharp_batch_context_recv_status_on_client_status(BatchContextSafeHandle ctx);
+
+ [DllImport(ImportName)]
+ public static extern IntPtr grpcsharp_batch_context_recv_status_on_client_details(BatchContextSafeHandle ctx, out UIntPtr detailsLength);
+
+ [DllImport(ImportName)]
+ public static extern IntPtr grpcsharp_batch_context_recv_status_on_client_error_string(BatchContextSafeHandle ctx);
+
+ [DllImport(ImportName)]
+ public static extern IntPtr grpcsharp_batch_context_recv_status_on_client_trailing_metadata(BatchContextSafeHandle ctx);
+
+ [DllImport(ImportName)]
+ public static extern int grpcsharp_batch_context_recv_close_on_server_cancelled(BatchContextSafeHandle ctx);
+
+ [DllImport(ImportName)]
+ public static extern void grpcsharp_batch_context_reset(BatchContextSafeHandle ctx);
+
+ [DllImport(ImportName)]
+ public static extern void grpcsharp_batch_context_destroy(IntPtr ctx);
+
+ [DllImport(ImportName)]
+ public static extern RequestCallContextSafeHandle grpcsharp_request_call_context_create();
+
+ [DllImport(ImportName)]
+ public static extern CallSafeHandle grpcsharp_request_call_context_call(RequestCallContextSafeHandle ctx);
+
+ [DllImport(ImportName)]
+ public static extern IntPtr grpcsharp_request_call_context_method(RequestCallContextSafeHandle ctx, out UIntPtr methodLength);
+
+ [DllImport(ImportName)]
+ public static extern IntPtr grpcsharp_request_call_context_host(RequestCallContextSafeHandle ctx, out UIntPtr hostLength);
+
+ [DllImport(ImportName)]
+ public static extern Timespec grpcsharp_request_call_context_deadline(RequestCallContextSafeHandle ctx);
+
+ [DllImport(ImportName)]
+ public static extern IntPtr grpcsharp_request_call_context_request_metadata(RequestCallContextSafeHandle ctx);
+
+ [DllImport(ImportName)]
+ public static extern void grpcsharp_request_call_context_reset(RequestCallContextSafeHandle ctx);
+
+ [DllImport(ImportName)]
+ public static extern void grpcsharp_request_call_context_destroy(IntPtr ctx);
+
+ [DllImport(ImportName)]
+ public static extern CallCredentialsSafeHandle grpcsharp_composite_call_credentials_create(CallCredentialsSafeHandle creds1, CallCredentialsSafeHandle creds2);
+
+ [DllImport(ImportName)]
+ public static extern void grpcsharp_call_credentials_release(IntPtr credentials);
+
+ [DllImport(ImportName)]
+ public static extern CallError grpcsharp_call_cancel(CallSafeHandle call);
+
+ [DllImport(ImportName)]
+ public static extern CallError grpcsharp_call_cancel_with_status(CallSafeHandle call, StatusCode status, string description);
+
+ [DllImport(ImportName)]
+ public static extern CallError grpcsharp_call_start_unary(CallSafeHandle call, BatchContextSafeHandle ctx, SliceBufferSafeHandle sendBuffer, WriteFlags writeFlags, MetadataArraySafeHandle metadataArray, CallFlags metadataFlags);
+
+ [DllImport(ImportName)]
+ public static extern CallError grpcsharp_call_start_client_streaming(CallSafeHandle call, BatchContextSafeHandle ctx, MetadataArraySafeHandle metadataArray, CallFlags metadataFlags);
+
+ [DllImport(ImportName)]
+ public static extern CallError grpcsharp_call_start_server_streaming(CallSafeHandle call, BatchContextSafeHandle ctx, SliceBufferSafeHandle sendBuffer, WriteFlags writeFlags, MetadataArraySafeHandle metadataArray, CallFlags metadataFlags);
+
+ [DllImport(ImportName)]
+ public static extern CallError grpcsharp_call_start_duplex_streaming(CallSafeHandle call, BatchContextSafeHandle ctx, MetadataArraySafeHandle metadataArray, CallFlags metadataFlags);
+
+ [DllImport(ImportName)]
+ public static extern CallError grpcsharp_call_send_message(CallSafeHandle call, BatchContextSafeHandle ctx, SliceBufferSafeHandle sendBuffer, WriteFlags writeFlags, int sendEmptyInitialMetadata);
+
+ [DllImport(ImportName)]
+ public static extern CallError grpcsharp_call_send_close_from_client(CallSafeHandle call, BatchContextSafeHandle ctx);
+
+ [DllImport(ImportName)]
+ public static extern CallError grpcsharp_call_send_status_from_server(CallSafeHandle call, BatchContextSafeHandle ctx, StatusCode statusCode, IntPtr statusMessage, UIntPtr statusMessageLen, MetadataArraySafeHandle metadataArray, int sendEmptyInitialMetadata, SliceBufferSafeHandle optionalSendBuffer, WriteFlags writeFlags);
+
+ [DllImport(ImportName)]
+ public static extern CallError grpcsharp_call_recv_message(CallSafeHandle call, BatchContextSafeHandle ctx);
+
+ [DllImport(ImportName)]
+ public static extern CallError grpcsharp_call_recv_initial_metadata(CallSafeHandle call, BatchContextSafeHandle ctx);
+
+ [DllImport(ImportName)]
+ public static extern CallError grpcsharp_call_start_serverside(CallSafeHandle call, BatchContextSafeHandle ctx);
+
+ [DllImport(ImportName)]
+ public static extern CallError grpcsharp_call_send_initial_metadata(CallSafeHandle call, BatchContextSafeHandle ctx, MetadataArraySafeHandle metadataArray);
+
+ [DllImport(ImportName)]
+ public static extern CallError grpcsharp_call_set_credentials(CallSafeHandle call, CallCredentialsSafeHandle credentials);
+
+ [DllImport(ImportName)]
+ public static extern CStringSafeHandle grpcsharp_call_get_peer(CallSafeHandle call);
+
+ [DllImport(ImportName)]
+ public static extern void grpcsharp_call_destroy(IntPtr call);
+
+ [DllImport(ImportName)]
+ public static extern ChannelArgsSafeHandle grpcsharp_channel_args_create(UIntPtr numArgs);
+
+ [DllImport(ImportName)]
+ public static extern void grpcsharp_channel_args_set_string(ChannelArgsSafeHandle args, UIntPtr index, string key, string value);
+
+ [DllImport(ImportName)]
+ public static extern void grpcsharp_channel_args_set_integer(ChannelArgsSafeHandle args, UIntPtr index, string key, int value);
+
+ [DllImport(ImportName)]
+ public static extern void grpcsharp_channel_args_destroy(IntPtr args);
+
+ [DllImport(ImportName)]
+ public static extern void grpcsharp_override_default_ssl_roots(string pemRootCerts);
+
+ [DllImport(ImportName)]
+ public static extern ChannelCredentialsSafeHandle grpcsharp_ssl_credentials_create(string pemRootCerts, string keyCertPairCertChain, string keyCertPairPrivateKey, IntPtr verifyPeerCallbackTag);
+
+ [DllImport(ImportName)]
+ public static extern ChannelCredentialsSafeHandle grpcsharp_composite_channel_credentials_create(ChannelCredentialsSafeHandle channelCreds, CallCredentialsSafeHandle callCreds);
+
+ [DllImport(ImportName)]
+ public static extern void grpcsharp_channel_credentials_release(IntPtr credentials);
+
+ [DllImport(ImportName)]
+ public static extern ChannelSafeHandle grpcsharp_insecure_channel_create(string target, ChannelArgsSafeHandle channelArgs);
+
+ [DllImport(ImportName)]
+ public static extern ChannelSafeHandle grpcsharp_secure_channel_create(ChannelCredentialsSafeHandle credentials, string target, ChannelArgsSafeHandle channelArgs);
+
+ [DllImport(ImportName)]
+ public static extern CallSafeHandle grpcsharp_channel_create_call(ChannelSafeHandle channel, CallSafeHandle parentCall, ContextPropagationFlags propagationMask, CompletionQueueSafeHandle cq, string method, string host, Timespec deadline);
+
+ [DllImport(ImportName)]
+ public static extern ChannelState grpcsharp_channel_check_connectivity_state(ChannelSafeHandle channel, int tryToConnect);
+
+ [DllImport(ImportName)]
+ public static extern void grpcsharp_channel_watch_connectivity_state(ChannelSafeHandle channel, ChannelState lastObservedState, Timespec deadline, CompletionQueueSafeHandle cq, BatchContextSafeHandle ctx);
+
+ [DllImport(ImportName)]
+ public static extern CStringSafeHandle grpcsharp_channel_get_target(ChannelSafeHandle call);
+
+ [DllImport(ImportName)]
+ public static extern void grpcsharp_channel_destroy(IntPtr channel);
+
+ [DllImport(ImportName)]
+ public static extern int grpcsharp_sizeof_grpc_event();
+
+ [DllImport(ImportName)]
+ public static extern CompletionQueueSafeHandle grpcsharp_completion_queue_create_async();
+
+ [DllImport(ImportName)]
+ public static extern CompletionQueueSafeHandle grpcsharp_completion_queue_create_sync();
+
+ [DllImport(ImportName)]
+ public static extern void grpcsharp_completion_queue_shutdown(CompletionQueueSafeHandle cq);
+
+ [DllImport(ImportName)]
+ public static extern CompletionQueueEvent grpcsharp_completion_queue_next(CompletionQueueSafeHandle cq);
+
+ [DllImport(ImportName)]
+ public static extern CompletionQueueEvent grpcsharp_completion_queue_pluck(CompletionQueueSafeHandle cq, IntPtr tag);
+
+ [DllImport(ImportName)]
+ public static extern void grpcsharp_completion_queue_destroy(IntPtr cq);
+
+ [DllImport(ImportName)]
+ public static extern void gprsharp_free(IntPtr ptr);
+
+ [DllImport(ImportName)]
+ public static extern MetadataArraySafeHandle grpcsharp_metadata_array_create(UIntPtr capacity);
+
+ [DllImport(ImportName)]
+ public static extern void grpcsharp_metadata_array_add(MetadataArraySafeHandle array, string key, byte[] value, UIntPtr valueLength);
+
+ [DllImport(ImportName)]
+ public static extern UIntPtr grpcsharp_metadata_array_count(IntPtr metadataArray);
+
+ [DllImport(ImportName)]
+ public static extern IntPtr grpcsharp_metadata_array_get_key(IntPtr metadataArray, UIntPtr index, out UIntPtr keyLength);
+
+ [DllImport(ImportName)]
+ public static extern IntPtr grpcsharp_metadata_array_get_value(IntPtr metadataArray, UIntPtr index, out UIntPtr valueLength);
+
+ [DllImport(ImportName)]
+ public static extern void grpcsharp_metadata_array_destroy_full(IntPtr array);
+
+ [DllImport(ImportName)]
+ public static extern void grpcsharp_redirect_log(GprLogDelegate callback);
+
+ [DllImport(ImportName)]
+ public static extern void grpcsharp_native_callback_dispatcher_init(NativeCallbackDispatcherCallback dispatcher);
+
+ [DllImport(ImportName)]
+ public static extern CallCredentialsSafeHandle grpcsharp_metadata_credentials_create_from_plugin(IntPtr nativeCallbackTag);
+
+ [DllImport(ImportName)]
+ public static extern void grpcsharp_metadata_credentials_notify_from_plugin(IntPtr callbackPtr, IntPtr userData, MetadataArraySafeHandle metadataArray, StatusCode statusCode, string errorDetails);
+
+ [DllImport(ImportName)]
+ public static extern ServerCredentialsSafeHandle grpcsharp_ssl_server_credentials_create(string pemRootCerts, string[] keyCertPairCertChainArray, string[] keyCertPairPrivateKeyArray, UIntPtr numKeyCertPairs, SslClientCertificateRequestType clientCertificateRequest);
+
+ [DllImport(ImportName)]
+ public static extern void grpcsharp_server_credentials_release(IntPtr credentials);
+
+ [DllImport(ImportName)]
+ public static extern ServerSafeHandle grpcsharp_server_create(ChannelArgsSafeHandle args);
+
+ [DllImport(ImportName)]
+ public static extern void grpcsharp_server_register_completion_queue(ServerSafeHandle server, CompletionQueueSafeHandle cq);
+
+ [DllImport(ImportName)]
+ public static extern int grpcsharp_server_add_insecure_http2_port(ServerSafeHandle server, string addr);
+
+ [DllImport(ImportName)]
+ public static extern int grpcsharp_server_add_secure_http2_port(ServerSafeHandle server, string addr, ServerCredentialsSafeHandle creds);
+
+ [DllImport(ImportName)]
+ public static extern void grpcsharp_server_start(ServerSafeHandle server);
+
+ [DllImport(ImportName)]
+ public static extern CallError grpcsharp_server_request_call(ServerSafeHandle server, CompletionQueueSafeHandle cq, RequestCallContextSafeHandle ctx);
+
+ [DllImport(ImportName)]
+ public static extern void grpcsharp_server_cancel_all_calls(ServerSafeHandle server);
+
+ [DllImport(ImportName)]
+ public static extern void grpcsharp_server_shutdown_and_notify_callback(ServerSafeHandle server, CompletionQueueSafeHandle cq, BatchContextSafeHandle ctx);
+
+ [DllImport(ImportName)]
+ public static extern void grpcsharp_server_destroy(IntPtr server);
+
+ [DllImport(ImportName)]
+ public static extern AuthContextSafeHandle grpcsharp_call_auth_context(CallSafeHandle call);
+
+ [DllImport(ImportName)]
+ public static extern IntPtr grpcsharp_auth_context_peer_identity_property_name(AuthContextSafeHandle authContext);
+
+ [DllImport(ImportName)]
+ public static extern AuthContextSafeHandle.NativeAuthPropertyIterator grpcsharp_auth_context_property_iterator(AuthContextSafeHandle authContext);
+
+ [DllImport(ImportName)]
+ public static extern IntPtr grpcsharp_auth_property_iterator_next(ref AuthContextSafeHandle.NativeAuthPropertyIterator iterator);
+
+ [DllImport(ImportName)]
+ public static extern void grpcsharp_auth_context_release(IntPtr authContext);
+
+ [DllImport(ImportName)]
+ public static extern SliceBufferSafeHandle grpcsharp_slice_buffer_create();
+
+ [DllImport(ImportName)]
+ public static extern IntPtr grpcsharp_slice_buffer_adjust_tail_space(SliceBufferSafeHandle sliceBuffer, UIntPtr availableTailSpace, UIntPtr requestedTailSpace);
+
+ [DllImport(ImportName)]
+ public static extern UIntPtr grpcsharp_slice_buffer_slice_count(SliceBufferSafeHandle sliceBuffer);
+
+ [DllImport(ImportName)]
+ public static extern void grpcsharp_slice_buffer_slice_peek(SliceBufferSafeHandle sliceBuffer, UIntPtr index, out UIntPtr sliceLen, out IntPtr sliceDataPtr);
+
+ [DllImport(ImportName)]
+ public static extern void grpcsharp_slice_buffer_reset_and_unref(SliceBufferSafeHandle sliceBuffer);
+
+ [DllImport(ImportName)]
+ public static extern void grpcsharp_slice_buffer_destroy(IntPtr sliceBuffer);
+
+ [DllImport(ImportName)]
+ public static extern Timespec gprsharp_now(ClockType clockType);
+
+ [DllImport(ImportName)]
+ public static extern Timespec gprsharp_inf_future(ClockType clockType);
+
+ [DllImport(ImportName)]
+ public static extern Timespec gprsharp_inf_past(ClockType clockType);
+
+ [DllImport(ImportName)]
+ public static extern Timespec gprsharp_convert_clock_type(Timespec t, ClockType targetClock);
+
+ [DllImport(ImportName)]
+ public static extern int gprsharp_sizeof_timespec();
+
+ [DllImport(ImportName)]
+ public static extern CallError grpcsharp_test_callback([MarshalAs(UnmanagedType.FunctionPtr)] NativeCallbackTestDelegate callback);
+
+ [DllImport(ImportName)]
+ public static extern IntPtr grpcsharp_test_nop(IntPtr ptr);
+
+ [DllImport(ImportName)]
+ public static extern void grpcsharp_test_override_method(string methodName, string variant);
+
+ [DllImport(ImportName)]
+ public static extern CallError grpcsharp_test_call_start_unary_echo(CallSafeHandle call, BatchContextSafeHandle ctx, SliceBufferSafeHandle sendBuffer, WriteFlags writeFlags, MetadataArraySafeHandle metadataArray, CallFlags metadataFlags);
+ }
+
+ /// <summary>
+ /// grpc_csharp_ext used as a shared library (with x64 suffix)
+ /// </summary>
+ internal class DllImportsFromSharedLib_x64
+ {
+ private const string ImportName = "grpc_csharp_ext.x64";
+
+ [DllImport(ImportName)]
+ public static extern void grpcsharp_init();
+
+ [DllImport(ImportName)]
+ public static extern void grpcsharp_shutdown();
+
+ [DllImport(ImportName)]
+ public static extern IntPtr grpcsharp_version_string();
+
+ [DllImport(ImportName)]
+ public static extern BatchContextSafeHandle grpcsharp_batch_context_create();
+
+ [DllImport(ImportName)]
+ public static extern IntPtr grpcsharp_batch_context_recv_initial_metadata(BatchContextSafeHandle ctx);
+
+ [DllImport(ImportName)]
+ public static extern IntPtr grpcsharp_batch_context_recv_message_length(BatchContextSafeHandle ctx);
+
+ [DllImport(ImportName)]
+ public static extern int grpcsharp_batch_context_recv_message_next_slice_peek(BatchContextSafeHandle ctx, out UIntPtr sliceLen, out IntPtr sliceDataPtr);
+
+ [DllImport(ImportName)]
+ public static extern StatusCode grpcsharp_batch_context_recv_status_on_client_status(BatchContextSafeHandle ctx);
+
+ [DllImport(ImportName)]
+ public static extern IntPtr grpcsharp_batch_context_recv_status_on_client_details(BatchContextSafeHandle ctx, out UIntPtr detailsLength);
+
+ [DllImport(ImportName)]
+ public static extern IntPtr grpcsharp_batch_context_recv_status_on_client_error_string(BatchContextSafeHandle ctx);
+
+ [DllImport(ImportName)]
+ public static extern IntPtr grpcsharp_batch_context_recv_status_on_client_trailing_metadata(BatchContextSafeHandle ctx);
+
+ [DllImport(ImportName)]
+ public static extern int grpcsharp_batch_context_recv_close_on_server_cancelled(BatchContextSafeHandle ctx);
+
+ [DllImport(ImportName)]
+ public static extern void grpcsharp_batch_context_reset(BatchContextSafeHandle ctx);
+
+ [DllImport(ImportName)]
+ public static extern void grpcsharp_batch_context_destroy(IntPtr ctx);
+
+ [DllImport(ImportName)]
+ public static extern RequestCallContextSafeHandle grpcsharp_request_call_context_create();
+
+ [DllImport(ImportName)]
+ public static extern CallSafeHandle grpcsharp_request_call_context_call(RequestCallContextSafeHandle ctx);
+
+ [DllImport(ImportName)]
+ public static extern IntPtr grpcsharp_request_call_context_method(RequestCallContextSafeHandle ctx, out UIntPtr methodLength);
+
+ [DllImport(ImportName)]
+ public static extern IntPtr grpcsharp_request_call_context_host(RequestCallContextSafeHandle ctx, out UIntPtr hostLength);
+
+ [DllImport(ImportName)]
+ public static extern Timespec grpcsharp_request_call_context_deadline(RequestCallContextSafeHandle ctx);
+
+ [DllImport(ImportName)]
+ public static extern IntPtr grpcsharp_request_call_context_request_metadata(RequestCallContextSafeHandle ctx);
+
+ [DllImport(ImportName)]
+ public static extern void grpcsharp_request_call_context_reset(RequestCallContextSafeHandle ctx);
+
+ [DllImport(ImportName)]
+ public static extern void grpcsharp_request_call_context_destroy(IntPtr ctx);
+
+ [DllImport(ImportName)]
+ public static extern CallCredentialsSafeHandle grpcsharp_composite_call_credentials_create(CallCredentialsSafeHandle creds1, CallCredentialsSafeHandle creds2);
+
+ [DllImport(ImportName)]
+ public static extern void grpcsharp_call_credentials_release(IntPtr credentials);
+
+ [DllImport(ImportName)]
+ public static extern CallError grpcsharp_call_cancel(CallSafeHandle call);
+
+ [DllImport(ImportName)]
+ public static extern CallError grpcsharp_call_cancel_with_status(CallSafeHandle call, StatusCode status, string description);
+
+ [DllImport(ImportName)]
+ public static extern CallError grpcsharp_call_start_unary(CallSafeHandle call, BatchContextSafeHandle ctx, SliceBufferSafeHandle sendBuffer, WriteFlags writeFlags, MetadataArraySafeHandle metadataArray, CallFlags metadataFlags);
+
+ [DllImport(ImportName)]
+ public static extern CallError grpcsharp_call_start_client_streaming(CallSafeHandle call, BatchContextSafeHandle ctx, MetadataArraySafeHandle metadataArray, CallFlags metadataFlags);
+
+ [DllImport(ImportName)]
+ public static extern CallError grpcsharp_call_start_server_streaming(CallSafeHandle call, BatchContextSafeHandle ctx, SliceBufferSafeHandle sendBuffer, WriteFlags writeFlags, MetadataArraySafeHandle metadataArray, CallFlags metadataFlags);
+
+ [DllImport(ImportName)]
+ public static extern CallError grpcsharp_call_start_duplex_streaming(CallSafeHandle call, BatchContextSafeHandle ctx, MetadataArraySafeHandle metadataArray, CallFlags metadataFlags);
+
+ [DllImport(ImportName)]
+ public static extern CallError grpcsharp_call_send_message(CallSafeHandle call, BatchContextSafeHandle ctx, SliceBufferSafeHandle sendBuffer, WriteFlags writeFlags, int sendEmptyInitialMetadata);
+
+ [DllImport(ImportName)]
+ public static extern CallError grpcsharp_call_send_close_from_client(CallSafeHandle call, BatchContextSafeHandle ctx);
+
+ [DllImport(ImportName)]
+ public static extern CallError grpcsharp_call_send_status_from_server(CallSafeHandle call, BatchContextSafeHandle ctx, StatusCode statusCode, IntPtr statusMessage, UIntPtr statusMessageLen, MetadataArraySafeHandle metadataArray, int sendEmptyInitialMetadata, SliceBufferSafeHandle optionalSendBuffer, WriteFlags writeFlags);
+
+ [DllImport(ImportName)]
+ public static extern CallError grpcsharp_call_recv_message(CallSafeHandle call, BatchContextSafeHandle ctx);
+
+ [DllImport(ImportName)]
+ public static extern CallError grpcsharp_call_recv_initial_metadata(CallSafeHandle call, BatchContextSafeHandle ctx);
+
+ [DllImport(ImportName)]
+ public static extern CallError grpcsharp_call_start_serverside(CallSafeHandle call, BatchContextSafeHandle ctx);
+
+ [DllImport(ImportName)]
+ public static extern CallError grpcsharp_call_send_initial_metadata(CallSafeHandle call, BatchContextSafeHandle ctx, MetadataArraySafeHandle metadataArray);
+
+ [DllImport(ImportName)]
+ public static extern CallError grpcsharp_call_set_credentials(CallSafeHandle call, CallCredentialsSafeHandle credentials);
+
+ [DllImport(ImportName)]
+ public static extern CStringSafeHandle grpcsharp_call_get_peer(CallSafeHandle call);
+
+ [DllImport(ImportName)]
+ public static extern void grpcsharp_call_destroy(IntPtr call);
+
+ [DllImport(ImportName)]
+ public static extern ChannelArgsSafeHandle grpcsharp_channel_args_create(UIntPtr numArgs);
+
+ [DllImport(ImportName)]
+ public static extern void grpcsharp_channel_args_set_string(ChannelArgsSafeHandle args, UIntPtr index, string key, string value);
+
+ [DllImport(ImportName)]
+ public static extern void grpcsharp_channel_args_set_integer(ChannelArgsSafeHandle args, UIntPtr index, string key, int value);
+
+ [DllImport(ImportName)]
+ public static extern void grpcsharp_channel_args_destroy(IntPtr args);
+
+ [DllImport(ImportName)]
+ public static extern void grpcsharp_override_default_ssl_roots(string pemRootCerts);
+
+ [DllImport(ImportName)]
+ public static extern ChannelCredentialsSafeHandle grpcsharp_ssl_credentials_create(string pemRootCerts, string keyCertPairCertChain, string keyCertPairPrivateKey, IntPtr verifyPeerCallbackTag);
+
+ [DllImport(ImportName)]
+ public static extern ChannelCredentialsSafeHandle grpcsharp_composite_channel_credentials_create(ChannelCredentialsSafeHandle channelCreds, CallCredentialsSafeHandle callCreds);
+
+ [DllImport(ImportName)]
+ public static extern void grpcsharp_channel_credentials_release(IntPtr credentials);
+
+ [DllImport(ImportName)]
+ public static extern ChannelSafeHandle grpcsharp_insecure_channel_create(string target, ChannelArgsSafeHandle channelArgs);
+
+ [DllImport(ImportName)]
+ public static extern ChannelSafeHandle grpcsharp_secure_channel_create(ChannelCredentialsSafeHandle credentials, string target, ChannelArgsSafeHandle channelArgs);
+
+ [DllImport(ImportName)]
+ public static extern CallSafeHandle grpcsharp_channel_create_call(ChannelSafeHandle channel, CallSafeHandle parentCall, ContextPropagationFlags propagationMask, CompletionQueueSafeHandle cq, string method, string host, Timespec deadline);
+
+ [DllImport(ImportName)]
+ public static extern ChannelState grpcsharp_channel_check_connectivity_state(ChannelSafeHandle channel, int tryToConnect);
+
+ [DllImport(ImportName)]
+ public static extern void grpcsharp_channel_watch_connectivity_state(ChannelSafeHandle channel, ChannelState lastObservedState, Timespec deadline, CompletionQueueSafeHandle cq, BatchContextSafeHandle ctx);
+
+ [DllImport(ImportName)]
+ public static extern CStringSafeHandle grpcsharp_channel_get_target(ChannelSafeHandle call);
+
+ [DllImport(ImportName)]
+ public static extern void grpcsharp_channel_destroy(IntPtr channel);
+
+ [DllImport(ImportName)]
+ public static extern int grpcsharp_sizeof_grpc_event();
+
+ [DllImport(ImportName)]
+ public static extern CompletionQueueSafeHandle grpcsharp_completion_queue_create_async();
+
+ [DllImport(ImportName)]
+ public static extern CompletionQueueSafeHandle grpcsharp_completion_queue_create_sync();
+
+ [DllImport(ImportName)]
+ public static extern void grpcsharp_completion_queue_shutdown(CompletionQueueSafeHandle cq);
+
+ [DllImport(ImportName)]
+ public static extern CompletionQueueEvent grpcsharp_completion_queue_next(CompletionQueueSafeHandle cq);
+
+ [DllImport(ImportName)]
+ public static extern CompletionQueueEvent grpcsharp_completion_queue_pluck(CompletionQueueSafeHandle cq, IntPtr tag);
+
+ [DllImport(ImportName)]
+ public static extern void grpcsharp_completion_queue_destroy(IntPtr cq);
+
+ [DllImport(ImportName)]
+ public static extern void gprsharp_free(IntPtr ptr);
+
+ [DllImport(ImportName)]
+ public static extern MetadataArraySafeHandle grpcsharp_metadata_array_create(UIntPtr capacity);
+
+ [DllImport(ImportName)]
+ public static extern void grpcsharp_metadata_array_add(MetadataArraySafeHandle array, string key, byte[] value, UIntPtr valueLength);
+
+ [DllImport(ImportName)]
+ public static extern UIntPtr grpcsharp_metadata_array_count(IntPtr metadataArray);
+
+ [DllImport(ImportName)]
+ public static extern IntPtr grpcsharp_metadata_array_get_key(IntPtr metadataArray, UIntPtr index, out UIntPtr keyLength);
+
+ [DllImport(ImportName)]
+ public static extern IntPtr grpcsharp_metadata_array_get_value(IntPtr metadataArray, UIntPtr index, out UIntPtr valueLength);
+
+ [DllImport(ImportName)]
+ public static extern void grpcsharp_metadata_array_destroy_full(IntPtr array);
+
+ [DllImport(ImportName)]
+ public static extern void grpcsharp_redirect_log(GprLogDelegate callback);
+
+ [DllImport(ImportName)]
+ public static extern void grpcsharp_native_callback_dispatcher_init(NativeCallbackDispatcherCallback dispatcher);
+
+ [DllImport(ImportName)]
+ public static extern CallCredentialsSafeHandle grpcsharp_metadata_credentials_create_from_plugin(IntPtr nativeCallbackTag);
+
+ [DllImport(ImportName)]
+ public static extern void grpcsharp_metadata_credentials_notify_from_plugin(IntPtr callbackPtr, IntPtr userData, MetadataArraySafeHandle metadataArray, StatusCode statusCode, string errorDetails);
+
+ [DllImport(ImportName)]
+ public static extern ServerCredentialsSafeHandle grpcsharp_ssl_server_credentials_create(string pemRootCerts, string[] keyCertPairCertChainArray, string[] keyCertPairPrivateKeyArray, UIntPtr numKeyCertPairs, SslClientCertificateRequestType clientCertificateRequest);
+
+ [DllImport(ImportName)]
+ public static extern void grpcsharp_server_credentials_release(IntPtr credentials);
+
+ [DllImport(ImportName)]
+ public static extern ServerSafeHandle grpcsharp_server_create(ChannelArgsSafeHandle args);
+
+ [DllImport(ImportName)]
+ public static extern void grpcsharp_server_register_completion_queue(ServerSafeHandle server, CompletionQueueSafeHandle cq);
+
+ [DllImport(ImportName)]
+ public static extern int grpcsharp_server_add_insecure_http2_port(ServerSafeHandle server, string addr);
+
+ [DllImport(ImportName)]
+ public static extern int grpcsharp_server_add_secure_http2_port(ServerSafeHandle server, string addr, ServerCredentialsSafeHandle creds);
+
+ [DllImport(ImportName)]
+ public static extern void grpcsharp_server_start(ServerSafeHandle server);
+
+ [DllImport(ImportName)]
+ public static extern CallError grpcsharp_server_request_call(ServerSafeHandle server, CompletionQueueSafeHandle cq, RequestCallContextSafeHandle ctx);
+
+ [DllImport(ImportName)]
+ public static extern void grpcsharp_server_cancel_all_calls(ServerSafeHandle server);
+
+ [DllImport(ImportName)]
+ public static extern void grpcsharp_server_shutdown_and_notify_callback(ServerSafeHandle server, CompletionQueueSafeHandle cq, BatchContextSafeHandle ctx);
+
+ [DllImport(ImportName)]
+ public static extern void grpcsharp_server_destroy(IntPtr server);
+
+ [DllImport(ImportName)]
+ public static extern AuthContextSafeHandle grpcsharp_call_auth_context(CallSafeHandle call);
+
+ [DllImport(ImportName)]
+ public static extern IntPtr grpcsharp_auth_context_peer_identity_property_name(AuthContextSafeHandle authContext);
+
+ [DllImport(ImportName)]
+ public static extern AuthContextSafeHandle.NativeAuthPropertyIterator grpcsharp_auth_context_property_iterator(AuthContextSafeHandle authContext);
+
+ [DllImport(ImportName)]
+ public static extern IntPtr grpcsharp_auth_property_iterator_next(ref AuthContextSafeHandle.NativeAuthPropertyIterator iterator);
+
+ [DllImport(ImportName)]
+ public static extern void grpcsharp_auth_context_release(IntPtr authContext);
+
+ [DllImport(ImportName)]
+ public static extern SliceBufferSafeHandle grpcsharp_slice_buffer_create();
+
+ [DllImport(ImportName)]
+ public static extern IntPtr grpcsharp_slice_buffer_adjust_tail_space(SliceBufferSafeHandle sliceBuffer, UIntPtr availableTailSpace, UIntPtr requestedTailSpace);
+
+ [DllImport(ImportName)]
+ public static extern UIntPtr grpcsharp_slice_buffer_slice_count(SliceBufferSafeHandle sliceBuffer);
+
+ [DllImport(ImportName)]
+ public static extern void grpcsharp_slice_buffer_slice_peek(SliceBufferSafeHandle sliceBuffer, UIntPtr index, out UIntPtr sliceLen, out IntPtr sliceDataPtr);
+
+ [DllImport(ImportName)]
+ public static extern void grpcsharp_slice_buffer_reset_and_unref(SliceBufferSafeHandle sliceBuffer);
+
+ [DllImport(ImportName)]
+ public static extern void grpcsharp_slice_buffer_destroy(IntPtr sliceBuffer);
+
+ [DllImport(ImportName)]
+ public static extern Timespec gprsharp_now(ClockType clockType);
+
+ [DllImport(ImportName)]
+ public static extern Timespec gprsharp_inf_future(ClockType clockType);
+
+ [DllImport(ImportName)]
+ public static extern Timespec gprsharp_inf_past(ClockType clockType);
+
+ [DllImport(ImportName)]
+ public static extern Timespec gprsharp_convert_clock_type(Timespec t, ClockType targetClock);
+
+ [DllImport(ImportName)]
+ public static extern int gprsharp_sizeof_timespec();
+
+ [DllImport(ImportName)]
+ public static extern CallError grpcsharp_test_callback([MarshalAs(UnmanagedType.FunctionPtr)] NativeCallbackTestDelegate callback);
+
+ [DllImport(ImportName)]
+ public static extern IntPtr grpcsharp_test_nop(IntPtr ptr);
+
+ [DllImport(ImportName)]
+ public static extern void grpcsharp_test_override_method(string methodName, string variant);
+
+ [DllImport(ImportName)]
+ public static extern CallError grpcsharp_test_call_start_unary_echo(CallSafeHandle call, BatchContextSafeHandle ctx, SliceBufferSafeHandle sendBuffer, WriteFlags writeFlags, MetadataArraySafeHandle metadataArray, CallFlags metadataFlags);
+ }
+
+ /// <summary>
+ /// grpc_csharp_ext used as a shared library (with x86.dll suffix)
+ /// </summary>
+ internal class DllImportsFromSharedLib_x86_dll
+ {
+ private const string ImportName = "grpc_csharp_ext.x86.dll";
+
+ [DllImport(ImportName)]
+ public static extern void grpcsharp_init();
+
+ [DllImport(ImportName)]
+ public static extern void grpcsharp_shutdown();
+
+ [DllImport(ImportName)]
+ public static extern IntPtr grpcsharp_version_string();
+
+ [DllImport(ImportName)]
+ public static extern BatchContextSafeHandle grpcsharp_batch_context_create();
+
+ [DllImport(ImportName)]
+ public static extern IntPtr grpcsharp_batch_context_recv_initial_metadata(BatchContextSafeHandle ctx);
+
+ [DllImport(ImportName)]
+ public static extern IntPtr grpcsharp_batch_context_recv_message_length(BatchContextSafeHandle ctx);
+
+ [DllImport(ImportName)]
+ public static extern int grpcsharp_batch_context_recv_message_next_slice_peek(BatchContextSafeHandle ctx, out UIntPtr sliceLen, out IntPtr sliceDataPtr);
+
+ [DllImport(ImportName)]
+ public static extern StatusCode grpcsharp_batch_context_recv_status_on_client_status(BatchContextSafeHandle ctx);
+
+ [DllImport(ImportName)]
+ public static extern IntPtr grpcsharp_batch_context_recv_status_on_client_details(BatchContextSafeHandle ctx, out UIntPtr detailsLength);
+
+ [DllImport(ImportName)]
+ public static extern IntPtr grpcsharp_batch_context_recv_status_on_client_error_string(BatchContextSafeHandle ctx);
+
+ [DllImport(ImportName)]
+ public static extern IntPtr grpcsharp_batch_context_recv_status_on_client_trailing_metadata(BatchContextSafeHandle ctx);
+
+ [DllImport(ImportName)]
+ public static extern int grpcsharp_batch_context_recv_close_on_server_cancelled(BatchContextSafeHandle ctx);
+
+ [DllImport(ImportName)]
+ public static extern void grpcsharp_batch_context_reset(BatchContextSafeHandle ctx);
+
+ [DllImport(ImportName)]
+ public static extern void grpcsharp_batch_context_destroy(IntPtr ctx);
+
+ [DllImport(ImportName)]
+ public static extern RequestCallContextSafeHandle grpcsharp_request_call_context_create();
+
+ [DllImport(ImportName)]
+ public static extern CallSafeHandle grpcsharp_request_call_context_call(RequestCallContextSafeHandle ctx);
+
+ [DllImport(ImportName)]
+ public static extern IntPtr grpcsharp_request_call_context_method(RequestCallContextSafeHandle ctx, out UIntPtr methodLength);
+
+ [DllImport(ImportName)]
+ public static extern IntPtr grpcsharp_request_call_context_host(RequestCallContextSafeHandle ctx, out UIntPtr hostLength);
+
+ [DllImport(ImportName)]
+ public static extern Timespec grpcsharp_request_call_context_deadline(RequestCallContextSafeHandle ctx);
+
+ [DllImport(ImportName)]
+ public static extern IntPtr grpcsharp_request_call_context_request_metadata(RequestCallContextSafeHandle ctx);
+
+ [DllImport(ImportName)]
+ public static extern void grpcsharp_request_call_context_reset(RequestCallContextSafeHandle ctx);
+
+ [DllImport(ImportName)]
+ public static extern void grpcsharp_request_call_context_destroy(IntPtr ctx);
+
+ [DllImport(ImportName)]
+ public static extern CallCredentialsSafeHandle grpcsharp_composite_call_credentials_create(CallCredentialsSafeHandle creds1, CallCredentialsSafeHandle creds2);
+
+ [DllImport(ImportName)]
+ public static extern void grpcsharp_call_credentials_release(IntPtr credentials);
+
+ [DllImport(ImportName)]
+ public static extern CallError grpcsharp_call_cancel(CallSafeHandle call);
+
+ [DllImport(ImportName)]
+ public static extern CallError grpcsharp_call_cancel_with_status(CallSafeHandle call, StatusCode status, string description);
+
+ [DllImport(ImportName)]
+ public static extern CallError grpcsharp_call_start_unary(CallSafeHandle call, BatchContextSafeHandle ctx, SliceBufferSafeHandle sendBuffer, WriteFlags writeFlags, MetadataArraySafeHandle metadataArray, CallFlags metadataFlags);
+
+ [DllImport(ImportName)]
+ public static extern CallError grpcsharp_call_start_client_streaming(CallSafeHandle call, BatchContextSafeHandle ctx, MetadataArraySafeHandle metadataArray, CallFlags metadataFlags);
+
+ [DllImport(ImportName)]
+ public static extern CallError grpcsharp_call_start_server_streaming(CallSafeHandle call, BatchContextSafeHandle ctx, SliceBufferSafeHandle sendBuffer, WriteFlags writeFlags, MetadataArraySafeHandle metadataArray, CallFlags metadataFlags);
+
+ [DllImport(ImportName)]
+ public static extern CallError grpcsharp_call_start_duplex_streaming(CallSafeHandle call, BatchContextSafeHandle ctx, MetadataArraySafeHandle metadataArray, CallFlags metadataFlags);
+
+ [DllImport(ImportName)]
+ public static extern CallError grpcsharp_call_send_message(CallSafeHandle call, BatchContextSafeHandle ctx, SliceBufferSafeHandle sendBuffer, WriteFlags writeFlags, int sendEmptyInitialMetadata);
+
+ [DllImport(ImportName)]
+ public static extern CallError grpcsharp_call_send_close_from_client(CallSafeHandle call, BatchContextSafeHandle ctx);
+
+ [DllImport(ImportName)]
+ public static extern CallError grpcsharp_call_send_status_from_server(CallSafeHandle call, BatchContextSafeHandle ctx, StatusCode statusCode, IntPtr statusMessage, UIntPtr statusMessageLen, MetadataArraySafeHandle metadataArray, int sendEmptyInitialMetadata, SliceBufferSafeHandle optionalSendBuffer, WriteFlags writeFlags);
+
+ [DllImport(ImportName)]
+ public static extern CallError grpcsharp_call_recv_message(CallSafeHandle call, BatchContextSafeHandle ctx);
+
+ [DllImport(ImportName)]
+ public static extern CallError grpcsharp_call_recv_initial_metadata(CallSafeHandle call, BatchContextSafeHandle ctx);
+
+ [DllImport(ImportName)]
+ public static extern CallError grpcsharp_call_start_serverside(CallSafeHandle call, BatchContextSafeHandle ctx);
+
+ [DllImport(ImportName)]
+ public static extern CallError grpcsharp_call_send_initial_metadata(CallSafeHandle call, BatchContextSafeHandle ctx, MetadataArraySafeHandle metadataArray);
+
+ [DllImport(ImportName)]
+ public static extern CallError grpcsharp_call_set_credentials(CallSafeHandle call, CallCredentialsSafeHandle credentials);
+
+ [DllImport(ImportName)]
+ public static extern CStringSafeHandle grpcsharp_call_get_peer(CallSafeHandle call);
+
+ [DllImport(ImportName)]
+ public static extern void grpcsharp_call_destroy(IntPtr call);
+
+ [DllImport(ImportName)]
+ public static extern ChannelArgsSafeHandle grpcsharp_channel_args_create(UIntPtr numArgs);
+
+ [DllImport(ImportName)]
+ public static extern void grpcsharp_channel_args_set_string(ChannelArgsSafeHandle args, UIntPtr index, string key, string value);
+
+ [DllImport(ImportName)]
+ public static extern void grpcsharp_channel_args_set_integer(ChannelArgsSafeHandle args, UIntPtr index, string key, int value);
+
+ [DllImport(ImportName)]
+ public static extern void grpcsharp_channel_args_destroy(IntPtr args);
+
+ [DllImport(ImportName)]
+ public static extern void grpcsharp_override_default_ssl_roots(string pemRootCerts);
+
+ [DllImport(ImportName)]
+ public static extern ChannelCredentialsSafeHandle grpcsharp_ssl_credentials_create(string pemRootCerts, string keyCertPairCertChain, string keyCertPairPrivateKey, IntPtr verifyPeerCallbackTag);
+
+ [DllImport(ImportName)]
+ public static extern ChannelCredentialsSafeHandle grpcsharp_composite_channel_credentials_create(ChannelCredentialsSafeHandle channelCreds, CallCredentialsSafeHandle callCreds);
+
+ [DllImport(ImportName)]
+ public static extern void grpcsharp_channel_credentials_release(IntPtr credentials);
+
+ [DllImport(ImportName)]
+ public static extern ChannelSafeHandle grpcsharp_insecure_channel_create(string target, ChannelArgsSafeHandle channelArgs);
+
+ [DllImport(ImportName)]
+ public static extern ChannelSafeHandle grpcsharp_secure_channel_create(ChannelCredentialsSafeHandle credentials, string target, ChannelArgsSafeHandle channelArgs);
+
+ [DllImport(ImportName)]
+ public static extern CallSafeHandle grpcsharp_channel_create_call(ChannelSafeHandle channel, CallSafeHandle parentCall, ContextPropagationFlags propagationMask, CompletionQueueSafeHandle cq, string method, string host, Timespec deadline);
+
+ [DllImport(ImportName)]
+ public static extern ChannelState grpcsharp_channel_check_connectivity_state(ChannelSafeHandle channel, int tryToConnect);
+
+ [DllImport(ImportName)]
+ public static extern void grpcsharp_channel_watch_connectivity_state(ChannelSafeHandle channel, ChannelState lastObservedState, Timespec deadline, CompletionQueueSafeHandle cq, BatchContextSafeHandle ctx);
+
+ [DllImport(ImportName)]
+ public static extern CStringSafeHandle grpcsharp_channel_get_target(ChannelSafeHandle call);
+
+ [DllImport(ImportName)]
+ public static extern void grpcsharp_channel_destroy(IntPtr channel);
+
+ [DllImport(ImportName)]
+ public static extern int grpcsharp_sizeof_grpc_event();
+
+ [DllImport(ImportName)]
+ public static extern CompletionQueueSafeHandle grpcsharp_completion_queue_create_async();
+
+ [DllImport(ImportName)]
+ public static extern CompletionQueueSafeHandle grpcsharp_completion_queue_create_sync();
+
+ [DllImport(ImportName)]
+ public static extern void grpcsharp_completion_queue_shutdown(CompletionQueueSafeHandle cq);
+
+ [DllImport(ImportName)]
+ public static extern CompletionQueueEvent grpcsharp_completion_queue_next(CompletionQueueSafeHandle cq);
+
+ [DllImport(ImportName)]
+ public static extern CompletionQueueEvent grpcsharp_completion_queue_pluck(CompletionQueueSafeHandle cq, IntPtr tag);
+
+ [DllImport(ImportName)]
+ public static extern void grpcsharp_completion_queue_destroy(IntPtr cq);
+
+ [DllImport(ImportName)]
+ public static extern void gprsharp_free(IntPtr ptr);
+
+ [DllImport(ImportName)]
+ public static extern MetadataArraySafeHandle grpcsharp_metadata_array_create(UIntPtr capacity);
+
+ [DllImport(ImportName)]
+ public static extern void grpcsharp_metadata_array_add(MetadataArraySafeHandle array, string key, byte[] value, UIntPtr valueLength);
+
+ [DllImport(ImportName)]
+ public static extern UIntPtr grpcsharp_metadata_array_count(IntPtr metadataArray);
+
+ [DllImport(ImportName)]
+ public static extern IntPtr grpcsharp_metadata_array_get_key(IntPtr metadataArray, UIntPtr index, out UIntPtr keyLength);
+
+ [DllImport(ImportName)]
+ public static extern IntPtr grpcsharp_metadata_array_get_value(IntPtr metadataArray, UIntPtr index, out UIntPtr valueLength);
+
+ [DllImport(ImportName)]
+ public static extern void grpcsharp_metadata_array_destroy_full(IntPtr array);
+
+ [DllImport(ImportName)]
+ public static extern void grpcsharp_redirect_log(GprLogDelegate callback);
+
+ [DllImport(ImportName)]
+ public static extern void grpcsharp_native_callback_dispatcher_init(NativeCallbackDispatcherCallback dispatcher);
+
+ [DllImport(ImportName)]
+ public static extern CallCredentialsSafeHandle grpcsharp_metadata_credentials_create_from_plugin(IntPtr nativeCallbackTag);
+
+ [DllImport(ImportName)]
+ public static extern void grpcsharp_metadata_credentials_notify_from_plugin(IntPtr callbackPtr, IntPtr userData, MetadataArraySafeHandle metadataArray, StatusCode statusCode, string errorDetails);
+
+ [DllImport(ImportName)]
+ public static extern ServerCredentialsSafeHandle grpcsharp_ssl_server_credentials_create(string pemRootCerts, string[] keyCertPairCertChainArray, string[] keyCertPairPrivateKeyArray, UIntPtr numKeyCertPairs, SslClientCertificateRequestType clientCertificateRequest);
+
+ [DllImport(ImportName)]
+ public static extern void grpcsharp_server_credentials_release(IntPtr credentials);
+
+ [DllImport(ImportName)]
+ public static extern ServerSafeHandle grpcsharp_server_create(ChannelArgsSafeHandle args);
+
+ [DllImport(ImportName)]
+ public static extern void grpcsharp_server_register_completion_queue(ServerSafeHandle server, CompletionQueueSafeHandle cq);
+
+ [DllImport(ImportName)]
+ public static extern int grpcsharp_server_add_insecure_http2_port(ServerSafeHandle server, string addr);
+
+ [DllImport(ImportName)]
+ public static extern int grpcsharp_server_add_secure_http2_port(ServerSafeHandle server, string addr, ServerCredentialsSafeHandle creds);
+
+ [DllImport(ImportName)]
+ public static extern void grpcsharp_server_start(ServerSafeHandle server);
+
+ [DllImport(ImportName)]
+ public static extern CallError grpcsharp_server_request_call(ServerSafeHandle server, CompletionQueueSafeHandle cq, RequestCallContextSafeHandle ctx);
+
+ [DllImport(ImportName)]
+ public static extern void grpcsharp_server_cancel_all_calls(ServerSafeHandle server);
+
+ [DllImport(ImportName)]
+ public static extern void grpcsharp_server_shutdown_and_notify_callback(ServerSafeHandle server, CompletionQueueSafeHandle cq, BatchContextSafeHandle ctx);
+
+ [DllImport(ImportName)]
+ public static extern void grpcsharp_server_destroy(IntPtr server);
+
+ [DllImport(ImportName)]
+ public static extern AuthContextSafeHandle grpcsharp_call_auth_context(CallSafeHandle call);
+
+ [DllImport(ImportName)]
+ public static extern IntPtr grpcsharp_auth_context_peer_identity_property_name(AuthContextSafeHandle authContext);
+
+ [DllImport(ImportName)]
+ public static extern AuthContextSafeHandle.NativeAuthPropertyIterator grpcsharp_auth_context_property_iterator(AuthContextSafeHandle authContext);
+
+ [DllImport(ImportName)]
+ public static extern IntPtr grpcsharp_auth_property_iterator_next(ref AuthContextSafeHandle.NativeAuthPropertyIterator iterator);
+
+ [DllImport(ImportName)]
+ public static extern void grpcsharp_auth_context_release(IntPtr authContext);
+
+ [DllImport(ImportName)]
+ public static extern SliceBufferSafeHandle grpcsharp_slice_buffer_create();
+
+ [DllImport(ImportName)]
+ public static extern IntPtr grpcsharp_slice_buffer_adjust_tail_space(SliceBufferSafeHandle sliceBuffer, UIntPtr availableTailSpace, UIntPtr requestedTailSpace);
+
+ [DllImport(ImportName)]
+ public static extern UIntPtr grpcsharp_slice_buffer_slice_count(SliceBufferSafeHandle sliceBuffer);
+
+ [DllImport(ImportName)]
+ public static extern void grpcsharp_slice_buffer_slice_peek(SliceBufferSafeHandle sliceBuffer, UIntPtr index, out UIntPtr sliceLen, out IntPtr sliceDataPtr);
+
+ [DllImport(ImportName)]
+ public static extern void grpcsharp_slice_buffer_reset_and_unref(SliceBufferSafeHandle sliceBuffer);
+
+ [DllImport(ImportName)]
+ public static extern void grpcsharp_slice_buffer_destroy(IntPtr sliceBuffer);
+
+ [DllImport(ImportName)]
+ public static extern Timespec gprsharp_now(ClockType clockType);
+
+ [DllImport(ImportName)]
+ public static extern Timespec gprsharp_inf_future(ClockType clockType);
+
+ [DllImport(ImportName)]
+ public static extern Timespec gprsharp_inf_past(ClockType clockType);
+
+ [DllImport(ImportName)]
+ public static extern Timespec gprsharp_convert_clock_type(Timespec t, ClockType targetClock);
+
+ [DllImport(ImportName)]
+ public static extern int gprsharp_sizeof_timespec();
+
+ [DllImport(ImportName)]
+ public static extern CallError grpcsharp_test_callback([MarshalAs(UnmanagedType.FunctionPtr)] NativeCallbackTestDelegate callback);
+
+ [DllImport(ImportName)]
+ public static extern IntPtr grpcsharp_test_nop(IntPtr ptr);
+
+ [DllImport(ImportName)]
+ public static extern void grpcsharp_test_override_method(string methodName, string variant);
+
+ [DllImport(ImportName)]
+ public static extern CallError grpcsharp_test_call_start_unary_echo(CallSafeHandle call, BatchContextSafeHandle ctx, SliceBufferSafeHandle sendBuffer, WriteFlags writeFlags, MetadataArraySafeHandle metadataArray, CallFlags metadataFlags);
+ }
+
+ /// <summary>
+ /// grpc_csharp_ext used as a shared library (with x64.dll suffix)
+ /// </summary>
+ internal class DllImportsFromSharedLib_x64_dll
+ {
+ private const string ImportName = "grpc_csharp_ext.x64.dll";
+
+ [DllImport(ImportName)]
+ public static extern void grpcsharp_init();
+
+ [DllImport(ImportName)]
+ public static extern void grpcsharp_shutdown();
+
+ [DllImport(ImportName)]
+ public static extern IntPtr grpcsharp_version_string();
+
+ [DllImport(ImportName)]
+ public static extern BatchContextSafeHandle grpcsharp_batch_context_create();
+
+ [DllImport(ImportName)]
+ public static extern IntPtr grpcsharp_batch_context_recv_initial_metadata(BatchContextSafeHandle ctx);
+
+ [DllImport(ImportName)]
+ public static extern IntPtr grpcsharp_batch_context_recv_message_length(BatchContextSafeHandle ctx);
+
+ [DllImport(ImportName)]
+ public static extern int grpcsharp_batch_context_recv_message_next_slice_peek(BatchContextSafeHandle ctx, out UIntPtr sliceLen, out IntPtr sliceDataPtr);
+
+ [DllImport(ImportName)]
+ public static extern StatusCode grpcsharp_batch_context_recv_status_on_client_status(BatchContextSafeHandle ctx);
+
+ [DllImport(ImportName)]
+ public static extern IntPtr grpcsharp_batch_context_recv_status_on_client_details(BatchContextSafeHandle ctx, out UIntPtr detailsLength);
+
+ [DllImport(ImportName)]
+ public static extern IntPtr grpcsharp_batch_context_recv_status_on_client_error_string(BatchContextSafeHandle ctx);
+
+ [DllImport(ImportName)]
+ public static extern IntPtr grpcsharp_batch_context_recv_status_on_client_trailing_metadata(BatchContextSafeHandle ctx);
+
+ [DllImport(ImportName)]
+ public static extern int grpcsharp_batch_context_recv_close_on_server_cancelled(BatchContextSafeHandle ctx);
+
+ [DllImport(ImportName)]
+ public static extern void grpcsharp_batch_context_reset(BatchContextSafeHandle ctx);
+
+ [DllImport(ImportName)]
+ public static extern void grpcsharp_batch_context_destroy(IntPtr ctx);
+
+ [DllImport(ImportName)]
+ public static extern RequestCallContextSafeHandle grpcsharp_request_call_context_create();
+
+ [DllImport(ImportName)]
+ public static extern CallSafeHandle grpcsharp_request_call_context_call(RequestCallContextSafeHandle ctx);
+
+ [DllImport(ImportName)]
+ public static extern IntPtr grpcsharp_request_call_context_method(RequestCallContextSafeHandle ctx, out UIntPtr methodLength);
+
+ [DllImport(ImportName)]
+ public static extern IntPtr grpcsharp_request_call_context_host(RequestCallContextSafeHandle ctx, out UIntPtr hostLength);
+
+ [DllImport(ImportName)]
+ public static extern Timespec grpcsharp_request_call_context_deadline(RequestCallContextSafeHandle ctx);
+
+ [DllImport(ImportName)]
+ public static extern IntPtr grpcsharp_request_call_context_request_metadata(RequestCallContextSafeHandle ctx);
+
+ [DllImport(ImportName)]
+ public static extern void grpcsharp_request_call_context_reset(RequestCallContextSafeHandle ctx);
+
+ [DllImport(ImportName)]
+ public static extern void grpcsharp_request_call_context_destroy(IntPtr ctx);
+
+ [DllImport(ImportName)]
+ public static extern CallCredentialsSafeHandle grpcsharp_composite_call_credentials_create(CallCredentialsSafeHandle creds1, CallCredentialsSafeHandle creds2);
+
+ [DllImport(ImportName)]
+ public static extern void grpcsharp_call_credentials_release(IntPtr credentials);
+
+ [DllImport(ImportName)]
+ public static extern CallError grpcsharp_call_cancel(CallSafeHandle call);
+
+ [DllImport(ImportName)]
+ public static extern CallError grpcsharp_call_cancel_with_status(CallSafeHandle call, StatusCode status, string description);
+
+ [DllImport(ImportName)]
+ public static extern CallError grpcsharp_call_start_unary(CallSafeHandle call, BatchContextSafeHandle ctx, SliceBufferSafeHandle sendBuffer, WriteFlags writeFlags, MetadataArraySafeHandle metadataArray, CallFlags metadataFlags);
+
+ [DllImport(ImportName)]
+ public static extern CallError grpcsharp_call_start_client_streaming(CallSafeHandle call, BatchContextSafeHandle ctx, MetadataArraySafeHandle metadataArray, CallFlags metadataFlags);
+
+ [DllImport(ImportName)]
+ public static extern CallError grpcsharp_call_start_server_streaming(CallSafeHandle call, BatchContextSafeHandle ctx, SliceBufferSafeHandle sendBuffer, WriteFlags writeFlags, MetadataArraySafeHandle metadataArray, CallFlags metadataFlags);
+
+ [DllImport(ImportName)]
+ public static extern CallError grpcsharp_call_start_duplex_streaming(CallSafeHandle call, BatchContextSafeHandle ctx, MetadataArraySafeHandle metadataArray, CallFlags metadataFlags);
+
+ [DllImport(ImportName)]
+ public static extern CallError grpcsharp_call_send_message(CallSafeHandle call, BatchContextSafeHandle ctx, SliceBufferSafeHandle sendBuffer, WriteFlags writeFlags, int sendEmptyInitialMetadata);
+
+ [DllImport(ImportName)]
+ public static extern CallError grpcsharp_call_send_close_from_client(CallSafeHandle call, BatchContextSafeHandle ctx);
+
+ [DllImport(ImportName)]
+ public static extern CallError grpcsharp_call_send_status_from_server(CallSafeHandle call, BatchContextSafeHandle ctx, StatusCode statusCode, IntPtr statusMessage, UIntPtr statusMessageLen, MetadataArraySafeHandle metadataArray, int sendEmptyInitialMetadata, SliceBufferSafeHandle optionalSendBuffer, WriteFlags writeFlags);
+
+ [DllImport(ImportName)]
+ public static extern CallError grpcsharp_call_recv_message(CallSafeHandle call, BatchContextSafeHandle ctx);
+
+ [DllImport(ImportName)]
+ public static extern CallError grpcsharp_call_recv_initial_metadata(CallSafeHandle call, BatchContextSafeHandle ctx);
+
+ [DllImport(ImportName)]
+ public static extern CallError grpcsharp_call_start_serverside(CallSafeHandle call, BatchContextSafeHandle ctx);
+
+ [DllImport(ImportName)]
+ public static extern CallError grpcsharp_call_send_initial_metadata(CallSafeHandle call, BatchContextSafeHandle ctx, MetadataArraySafeHandle metadataArray);
+
+ [DllImport(ImportName)]
+ public static extern CallError grpcsharp_call_set_credentials(CallSafeHandle call, CallCredentialsSafeHandle credentials);
+
+ [DllImport(ImportName)]
+ public static extern CStringSafeHandle grpcsharp_call_get_peer(CallSafeHandle call);
+
+ [DllImport(ImportName)]
+ public static extern void grpcsharp_call_destroy(IntPtr call);
+
+ [DllImport(ImportName)]
+ public static extern ChannelArgsSafeHandle grpcsharp_channel_args_create(UIntPtr numArgs);
+
+ [DllImport(ImportName)]
+ public static extern void grpcsharp_channel_args_set_string(ChannelArgsSafeHandle args, UIntPtr index, string key, string value);
+
+ [DllImport(ImportName)]
+ public static extern void grpcsharp_channel_args_set_integer(ChannelArgsSafeHandle args, UIntPtr index, string key, int value);
+
+ [DllImport(ImportName)]
+ public static extern void grpcsharp_channel_args_destroy(IntPtr args);
+
+ [DllImport(ImportName)]
+ public static extern void grpcsharp_override_default_ssl_roots(string pemRootCerts);
+
+ [DllImport(ImportName)]
+ public static extern ChannelCredentialsSafeHandle grpcsharp_ssl_credentials_create(string pemRootCerts, string keyCertPairCertChain, string keyCertPairPrivateKey, IntPtr verifyPeerCallbackTag);
+
+ [DllImport(ImportName)]
+ public static extern ChannelCredentialsSafeHandle grpcsharp_composite_channel_credentials_create(ChannelCredentialsSafeHandle channelCreds, CallCredentialsSafeHandle callCreds);
+
+ [DllImport(ImportName)]
+ public static extern void grpcsharp_channel_credentials_release(IntPtr credentials);
+
+ [DllImport(ImportName)]
+ public static extern ChannelSafeHandle grpcsharp_insecure_channel_create(string target, ChannelArgsSafeHandle channelArgs);
+
+ [DllImport(ImportName)]
+ public static extern ChannelSafeHandle grpcsharp_secure_channel_create(ChannelCredentialsSafeHandle credentials, string target, ChannelArgsSafeHandle channelArgs);
+
+ [DllImport(ImportName)]
+ public static extern CallSafeHandle grpcsharp_channel_create_call(ChannelSafeHandle channel, CallSafeHandle parentCall, ContextPropagationFlags propagationMask, CompletionQueueSafeHandle cq, string method, string host, Timespec deadline);
+
+ [DllImport(ImportName)]
+ public static extern ChannelState grpcsharp_channel_check_connectivity_state(ChannelSafeHandle channel, int tryToConnect);
+
+ [DllImport(ImportName)]
+ public static extern void grpcsharp_channel_watch_connectivity_state(ChannelSafeHandle channel, ChannelState lastObservedState, Timespec deadline, CompletionQueueSafeHandle cq, BatchContextSafeHandle ctx);
+
+ [DllImport(ImportName)]
+ public static extern CStringSafeHandle grpcsharp_channel_get_target(ChannelSafeHandle call);
+
+ [DllImport(ImportName)]
+ public static extern void grpcsharp_channel_destroy(IntPtr channel);
+
+ [DllImport(ImportName)]
+ public static extern int grpcsharp_sizeof_grpc_event();
+
+ [DllImport(ImportName)]
+ public static extern CompletionQueueSafeHandle grpcsharp_completion_queue_create_async();
+
+ [DllImport(ImportName)]
+ public static extern CompletionQueueSafeHandle grpcsharp_completion_queue_create_sync();
+
+ [DllImport(ImportName)]
+ public static extern void grpcsharp_completion_queue_shutdown(CompletionQueueSafeHandle cq);
+
+ [DllImport(ImportName)]
+ public static extern CompletionQueueEvent grpcsharp_completion_queue_next(CompletionQueueSafeHandle cq);
+
+ [DllImport(ImportName)]
+ public static extern CompletionQueueEvent grpcsharp_completion_queue_pluck(CompletionQueueSafeHandle cq, IntPtr tag);
+
+ [DllImport(ImportName)]
+ public static extern void grpcsharp_completion_queue_destroy(IntPtr cq);
+
+ [DllImport(ImportName)]
+ public static extern void gprsharp_free(IntPtr ptr);
+
+ [DllImport(ImportName)]
+ public static extern MetadataArraySafeHandle grpcsharp_metadata_array_create(UIntPtr capacity);
+
+ [DllImport(ImportName)]
+ public static extern void grpcsharp_metadata_array_add(MetadataArraySafeHandle array, string key, byte[] value, UIntPtr valueLength);
+
+ [DllImport(ImportName)]
+ public static extern UIntPtr grpcsharp_metadata_array_count(IntPtr metadataArray);
+
+ [DllImport(ImportName)]
+ public static extern IntPtr grpcsharp_metadata_array_get_key(IntPtr metadataArray, UIntPtr index, out UIntPtr keyLength);
+
+ [DllImport(ImportName)]
+ public static extern IntPtr grpcsharp_metadata_array_get_value(IntPtr metadataArray, UIntPtr index, out UIntPtr valueLength);
+
+ [DllImport(ImportName)]
+ public static extern void grpcsharp_metadata_array_destroy_full(IntPtr array);
+
+ [DllImport(ImportName)]
+ public static extern void grpcsharp_redirect_log(GprLogDelegate callback);
+
+ [DllImport(ImportName)]
+ public static extern void grpcsharp_native_callback_dispatcher_init(NativeCallbackDispatcherCallback dispatcher);
+
+ [DllImport(ImportName)]
+ public static extern CallCredentialsSafeHandle grpcsharp_metadata_credentials_create_from_plugin(IntPtr nativeCallbackTag);
+
+ [DllImport(ImportName)]
+ public static extern void grpcsharp_metadata_credentials_notify_from_plugin(IntPtr callbackPtr, IntPtr userData, MetadataArraySafeHandle metadataArray, StatusCode statusCode, string errorDetails);
+
+ [DllImport(ImportName)]
+ public static extern ServerCredentialsSafeHandle grpcsharp_ssl_server_credentials_create(string pemRootCerts, string[] keyCertPairCertChainArray, string[] keyCertPairPrivateKeyArray, UIntPtr numKeyCertPairs, SslClientCertificateRequestType clientCertificateRequest);
+
+ [DllImport(ImportName)]
+ public static extern void grpcsharp_server_credentials_release(IntPtr credentials);
+
+ [DllImport(ImportName)]
+ public static extern ServerSafeHandle grpcsharp_server_create(ChannelArgsSafeHandle args);
+
+ [DllImport(ImportName)]
+ public static extern void grpcsharp_server_register_completion_queue(ServerSafeHandle server, CompletionQueueSafeHandle cq);
+
+ [DllImport(ImportName)]
+ public static extern int grpcsharp_server_add_insecure_http2_port(ServerSafeHandle server, string addr);
+
+ [DllImport(ImportName)]
+ public static extern int grpcsharp_server_add_secure_http2_port(ServerSafeHandle server, string addr, ServerCredentialsSafeHandle creds);
+
+ [DllImport(ImportName)]
+ public static extern void grpcsharp_server_start(ServerSafeHandle server);
+
+ [DllImport(ImportName)]
+ public static extern CallError grpcsharp_server_request_call(ServerSafeHandle server, CompletionQueueSafeHandle cq, RequestCallContextSafeHandle ctx);
+
+ [DllImport(ImportName)]
+ public static extern void grpcsharp_server_cancel_all_calls(ServerSafeHandle server);
+
+ [DllImport(ImportName)]
+ public static extern void grpcsharp_server_shutdown_and_notify_callback(ServerSafeHandle server, CompletionQueueSafeHandle cq, BatchContextSafeHandle ctx);
+
+ [DllImport(ImportName)]
+ public static extern void grpcsharp_server_destroy(IntPtr server);
+
+ [DllImport(ImportName)]
+ public static extern AuthContextSafeHandle grpcsharp_call_auth_context(CallSafeHandle call);
+
+ [DllImport(ImportName)]
+ public static extern IntPtr grpcsharp_auth_context_peer_identity_property_name(AuthContextSafeHandle authContext);
+
+ [DllImport(ImportName)]
+ public static extern AuthContextSafeHandle.NativeAuthPropertyIterator grpcsharp_auth_context_property_iterator(AuthContextSafeHandle authContext);
+
+ [DllImport(ImportName)]
+ public static extern IntPtr grpcsharp_auth_property_iterator_next(ref AuthContextSafeHandle.NativeAuthPropertyIterator iterator);
+
+ [DllImport(ImportName)]
+ public static extern void grpcsharp_auth_context_release(IntPtr authContext);
+
+ [DllImport(ImportName)]
+ public static extern SliceBufferSafeHandle grpcsharp_slice_buffer_create();
+
+ [DllImport(ImportName)]
+ public static extern IntPtr grpcsharp_slice_buffer_adjust_tail_space(SliceBufferSafeHandle sliceBuffer, UIntPtr availableTailSpace, UIntPtr requestedTailSpace);
+
+ [DllImport(ImportName)]
+ public static extern UIntPtr grpcsharp_slice_buffer_slice_count(SliceBufferSafeHandle sliceBuffer);
+
+ [DllImport(ImportName)]
+ public static extern void grpcsharp_slice_buffer_slice_peek(SliceBufferSafeHandle sliceBuffer, UIntPtr index, out UIntPtr sliceLen, out IntPtr sliceDataPtr);
+
+ [DllImport(ImportName)]
+ public static extern void grpcsharp_slice_buffer_reset_and_unref(SliceBufferSafeHandle sliceBuffer);
+
+ [DllImport(ImportName)]
+ public static extern void grpcsharp_slice_buffer_destroy(IntPtr sliceBuffer);
+
+ [DllImport(ImportName)]
+ public static extern Timespec gprsharp_now(ClockType clockType);
+
+ [DllImport(ImportName)]
+ public static extern Timespec gprsharp_inf_future(ClockType clockType);
+
+ [DllImport(ImportName)]
+ public static extern Timespec gprsharp_inf_past(ClockType clockType);
+
+ [DllImport(ImportName)]
+ public static extern Timespec gprsharp_convert_clock_type(Timespec t, ClockType targetClock);
+
+ [DllImport(ImportName)]
+ public static extern int gprsharp_sizeof_timespec();
+
+ [DllImport(ImportName)]
+ public static extern CallError grpcsharp_test_callback([MarshalAs(UnmanagedType.FunctionPtr)] NativeCallbackTestDelegate callback);
+
+ [DllImport(ImportName)]
+ public static extern IntPtr grpcsharp_test_nop(IntPtr ptr);
+
+ [DllImport(ImportName)]
+ public static extern void grpcsharp_test_override_method(string methodName, string variant);
+
+ [DllImport(ImportName)]
+ public static extern CallError grpcsharp_test_call_start_unary_echo(CallSafeHandle call, BatchContextSafeHandle ctx, SliceBufferSafeHandle sendBuffer, WriteFlags writeFlags, MetadataArraySafeHandle metadataArray, CallFlags metadataFlags);
+ }
}
}
using System.Collections.Concurrent;
using System.Diagnostics;
using System.IO;
+using System.Linq;
using System.Reflection;
using System.Runtime.InteropServices;
using System.Threading;
/// </summary>
internal static class PlatformApis
{
- const string UnityEngineApplicationClassName = "UnityEngine.Application, UnityEngine";
+ const string UnityEngineAssemblyName = "UnityEngine";
+
+ const string UnityEngineApplicationClassName = "UnityEngine.Application";
+
+ const string UnityIPhonePlayer = "IPhonePlayer";
const string XamarinAndroidObjectClassName = "Java.Lang.Object, Mono.Android";
const string XamarinIOSObjectClassName = "Foundation.NSObject, Xamarin.iOS";
static readonly bool isWindows;
static readonly bool isMono;
static readonly bool isNetCore;
- static readonly bool isUnity;
- static readonly bool isUnityIOS;
+ static readonly string unityApplicationPlatform;
static readonly bool isXamarin;
static readonly bool isXamarinIOS;
static readonly bool isXamarinAndroid;
static PlatformApis()
{
-#if NETSTANDARD1_5 || NETSTANDARD2_0
+#if NETSTANDARD
isLinux = RuntimeInformation.IsOSPlatform(OSPlatform.Linux);
isMacOSX = RuntimeInformation.IsOSPlatform(OSPlatform.OSX);
isWindows = RuntimeInformation.IsOSPlatform(OSPlatform.Windows);
- isNetCore = RuntimeInformation.FrameworkDescription.StartsWith(".NET Core");
+ isNetCore =
+#if NETSTANDARD2_0
+ Environment.Version.Major >= 5 ||
+#endif
+ RuntimeInformation.FrameworkDescription.StartsWith(".NET Core");
#else
var platform = Environment.OSVersion.Platform;
isMono = Type.GetType("Mono.Runtime") != null;
// Unity
- var unityApplicationClass = Type.GetType(UnityEngineApplicationClassName);
- if (unityApplicationClass != null)
- {
- isUnity = true;
- // Consult value of Application.platform via reflection
- // https://docs.unity3d.com/ScriptReference/Application-platform.html
- var platformProperty = unityApplicationClass.GetTypeInfo().GetProperty("platform");
- var unityRuntimePlatform = platformProperty?.GetValue(null)?.ToString();
- isUnityIOS = (unityRuntimePlatform == "IPhonePlayer");
- }
- else
- {
- isUnity = false;
- isUnityIOS = false;
- }
+ unityApplicationPlatform = TryGetUnityApplicationPlatform();
// Xamarin
isXamarinIOS = Type.GetType(XamarinIOSObjectClassName) != null;
isXamarin = isXamarinIOS || isXamarinAndroid;
}
- public static bool IsLinux
- {
- get { return isLinux; }
- }
+ public static bool IsLinux => isLinux;
- public static bool IsMacOSX
- {
- get { return isMacOSX; }
- }
+ public static bool IsMacOSX => isMacOSX;
- public static bool IsWindows
- {
- get { return isWindows; }
- }
+ public static bool IsWindows => isWindows;
- public static bool IsMono
- {
- get { return isMono; }
- }
+ public static bool IsMono => isMono;
/// <summary>
/// true if running on Unity platform.
/// </summary>
- public static bool IsUnity
- {
- get { return isUnity; }
- }
+ public static bool IsUnity => unityApplicationPlatform != null;
/// <summary>
/// true if running on Unity iOS, false otherwise.
/// </summary>
- public static bool IsUnityIOS
- {
- get { return isUnityIOS; }
- }
+ public static bool IsUnityIOS => unityApplicationPlatform == UnityIPhonePlayer;
/// <summary>
/// true if running on a Xamarin platform (either Xamarin.Android or Xamarin.iOS),
/// false otherwise.
/// </summary>
- public static bool IsXamarin
- {
- get { return isXamarin; }
- }
+ public static bool IsXamarin => isXamarin;
/// <summary>
/// true if running on Xamarin.iOS, false otherwise.
/// </summary>
- public static bool IsXamarinIOS
- {
- get { return isXamarinIOS; }
- }
+ public static bool IsXamarinIOS => isXamarinIOS;
/// <summary>
/// true if running on Xamarin.Android, false otherwise.
/// </summary>
- public static bool IsXamarinAndroid
- {
- get { return isXamarinAndroid; }
- }
+ public static bool IsXamarinAndroid => isXamarinAndroid;
/// <summary>
/// true if running on .NET Core (CoreCLR), false otherwise.
/// </summary>
- public static bool IsNetCore
- {
- get { return isNetCore; }
- }
+ public static bool IsNetCore => isNetCore;
- public static bool Is64Bit
- {
- get { return IntPtr.Size == 8; }
- }
+ public static bool Is64Bit => IntPtr.Size == 8;
/// <summary>
/// Returns <c>UnityEngine.Application.platform</c> as a string.
/// Value is obtained via reflection to avoid compile-time dependency on Unity.
/// This method should only be called if <c>IsUnity</c> is <c>true</c>.
/// </summary>
- public static string GetUnityRuntimePlatform()
+ public static string GetUnityApplicationPlatform()
{
GrpcPreconditions.CheckState(IsUnity, "Not running on Unity.");
-#if NETSTANDARD1_5 || NETSTANDARD2_0
- return Type.GetType(UnityEngineApplicationClassName).GetTypeInfo().GetProperty("platform").GetValue(null).ToString();
-#else
- return Type.GetType(UnityEngineApplicationClassName).GetProperty("platform").GetValue(null).ToString();
+ return unityApplicationPlatform;
+ }
+
+ /// <summary>
+ /// Returns <c>UnityEngine.Application.platform</c> as a string or <c>null</c>
+ /// if not running on Unity.
+ /// Value is obtained via reflection to avoid compile-time dependency on Unity.
+ /// </summary>
+ static string TryGetUnityApplicationPlatform()
+ {
+ Assembly unityAssembly = null;
+#if !NETSTANDARD1_5
+ // On netstandard1.5, AppDomain is not available and we just short-circuit the logic there.
+ // This is fine because only the net45 or netstandard2.0 version Grpc.Core assembly is going to used in Unity.
+ // NOTE: Instead of trying to load the UnityEngine.Application class via <c>Type.GetType()</c>
+ // we are using a more sneaky approach to avoid inadvertently loading the UnityEngine
+ // assembly (that might be available even when we are not actually on Unity, resulting
+ // in false positive). See https://github.com/grpc/grpc/issues/18801
+ unityAssembly = AppDomain.CurrentDomain.GetAssemblies().FirstOrDefault(assembly => assembly.GetName().Name == UnityEngineAssemblyName);
#endif
+ var applicationClass = unityAssembly?.GetType(UnityEngineApplicationClassName);
+ var platformProperty = applicationClass?.GetTypeInfo().GetProperty("platform", BindingFlags.Static | BindingFlags.Public);
+ try
+ {
+ // Consult value of Application.platform via reflection
+ // https://docs.unity3d.com/ScriptReference/Application-platform.html
+ return platformProperty?.GetValue(null)?.ToString();
+ }
+ catch (TargetInvocationException)
+ {
+ // The getter for Application.platform is defined as "extern", so if UnityEngine assembly is loaded outside of a Unity application,
+ // the definition for the getter will be missing - note that this is a sneaky trick that helps us tell a real Unity application from a non-unity
+ // application which just happens to have loaded the UnityEngine.dll assembly.
+ // https://github.com/Unity-Technologies/UnityCsReference/blob/61f92bd79ae862c4465d35270f9d1d57befd1761/Runtime/Export/Application/Application.bindings.cs#L375
+ // See https://github.com/grpc/grpc/issues/23334
+
+ // If TargetInvocationException was thrown, it most likely means that the method definition for the extern method is missing,
+ // and we are going to interpret this as "not running on Unity".
+ return null;
+ }
}
[DllImport("libc")]
{
throw new MissingMethodException(string.Format("The native method \"{0}\" does not exist", methodName));
}
-#if NETSTANDARD1_5 || NETSTANDARD2_0
+#if NETSTANDARD
return Marshal.GetDelegateForFunctionPointer<T>(ptr); // non-generic version is obsolete
#else
return Marshal.GetDelegateForFunctionPointer(ptr, typeof(T)) as T; // generic version not available in .NET45
{
get
{
-#if NETSTANDARD1_5 || NETSTANDARD2_0
+#if NETSTANDARD
return Task.CompletedTask;
#else
return Task.FromResult<object>(null); // for .NET45, emulate the functionality
the Grpc.Core.dll assembly and the native libraries are used at all times.
-->
<ItemGroup Condition="'$(Grpc_SkipNativeLibsCopy)' != 'true'">
- <Content Include="$(MSBuildThisFileDirectory)..\..\runtimes\win\native\grpc_csharp_ext.x86.dll">
+ <Content Include="$(MSBuildThisFileDirectory)..\..\runtimes\win-x86\native\grpc_csharp_ext.x86.dll">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
<Link>grpc_csharp_ext.x86.dll</Link>
<Visible>false</Visible>
</Content>
- <Content Include="$(MSBuildThisFileDirectory)..\..\runtimes\win\native\grpc_csharp_ext.x64.dll">
+ <Content Include="$(MSBuildThisFileDirectory)..\..\runtimes\win-x64\native\grpc_csharp_ext.x64.dll">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
<Link>grpc_csharp_ext.x64.dll</Link>
<Visible>false</Visible>
</Content>
- <Content Include="$(MSBuildThisFileDirectory)..\..\runtimes\linux\native\libgrpc_csharp_ext.x86.so">
- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
- <Link>libgrpc_csharp_ext.x86.so</Link>
- <Visible>false</Visible>
- </Content>
- <Content Include="$(MSBuildThisFileDirectory)..\..\runtimes\linux\native\libgrpc_csharp_ext.x64.so">
+ <Content Include="$(MSBuildThisFileDirectory)..\..\runtimes\linux-x64\native\libgrpc_csharp_ext.x64.so">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
<Link>libgrpc_csharp_ext.x64.so</Link>
<Visible>false</Visible>
</Content>
- <Content Include="$(MSBuildThisFileDirectory)..\..\runtimes\osx\native\libgrpc_csharp_ext.x86.dylib">
- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
- <Link>libgrpc_csharp_ext.x86.dylib</Link>
- <Visible>false</Visible>
- </Content>
- <Content Include="$(MSBuildThisFileDirectory)..\..\runtimes\osx\native\libgrpc_csharp_ext.x64.dylib">
+ <Content Include="$(MSBuildThisFileDirectory)..\..\runtimes\osx-x64\native\libgrpc_csharp_ext.x64.dylib">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
<Link>libgrpc_csharp_ext.x64.dylib</Link>
<Visible>false</Visible>
<Project Sdk="Microsoft.NET.Sdk">
-
- <Import Project="..\Grpc.Core\Common.csproj.include" />
-
<PropertyGroup>
<TargetFrameworks>net45;netcoreapp2.1</TargetFrameworks>
<OutputType>Exe</OutputType>
// See the License for the specific language governing permissions and
// limitations under the License.
#endregion
-using System;
-using System.Runtime.InteropServices;
-using System.Threading;
+using System.Threading.Tasks;
using Grpc.Core;
namespace Math
{
class MathClient
{
- public static void Main(string[] args)
+ public static async Task Main(string[] args)
{
var channel = new Channel("127.0.0.1", 23456, ChannelCredentials.Insecure);
Math.MathClient client = new Math.MathClient(channel);
MathExamples.DivExample(client);
- MathExamples.DivAsyncExample(client).Wait();
+ await MathExamples.DivAsyncExample(client);
- MathExamples.FibExample(client).Wait();
+ await MathExamples.FibExample(client);
- MathExamples.SumExample(client).Wait();
+ await MathExamples.SumExample(client);
- MathExamples.DivManyExample(client).Wait();
+ await MathExamples.DivManyExample(client);
- MathExamples.DependendRequestsExample(client).Wait();
+ await MathExamples.DependentRequestsExample(client);
- channel.ShutdownAsync().Wait();
+ await channel.ShutdownAsync();
}
}
}
<Project Sdk="Microsoft.NET.Sdk">
-
- <Import Project="..\Grpc.Core\Common.csproj.include" />
-
<PropertyGroup>
<TargetFrameworks>net45;netcoreapp2.1</TargetFrameworks>
<OutputType>Exe</OutputType>
#endregion
using System;
-using System.Runtime.InteropServices;
-using System.Threading;
+using System.Threading.Tasks;
using Grpc.Core;
namespace Math
const string Host = "0.0.0.0";
const int Port = 23456;
- public static void Main(string[] args)
+ public static async Task Main(string[] args)
{
Server server = new Server
{
Console.WriteLine("Press any key to stop the server...");
Console.ReadKey();
- server.ShutdownAsync().Wait();
+ await server.ShutdownAsync();
}
}
}
<Project Sdk="Microsoft.NET.Sdk">
-
- <Import Project="..\Grpc.Core\Common.csproj.include" />
-
<PropertyGroup>
<TargetFrameworks>net45;netcoreapp2.1</TargetFrameworks>
<OutputType>Exe</OutputType>
<Project Sdk="Microsoft.NET.Sdk">
-
- <Import Project="..\Grpc.Core\Common.csproj.include" />
-
<PropertyGroup>
<TargetFrameworks>net45;netcoreapp2.1</TargetFrameworks>
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
new DivArgs { Dividend = 100, Divisor = 21 },
new DivArgs { Dividend = 7, Divisor = 2 }
};
+
using (var call = client.DivMany())
{
await call.RequestStream.WriteAllAsync(divArgsList);
}
}
- public static async Task DependendRequestsExample(Math.MathClient client)
+ public static async Task DependentRequestsExample(Math.MathClient client)
{
var numbers = new List<Num>
{
#endregion
-using System;
using System.Collections.Generic;
-using System.Threading;
using System.Threading.Tasks;
using Grpc.Core;
using Grpc.Core.Utils;
<Project Sdk="Microsoft.NET.Sdk">
-
- <Import Project="..\Grpc.Core\Common.csproj.include" />
-
<PropertyGroup>
<TargetFrameworks>net45;netcoreapp2.1</TargetFrameworks>
<OutputType>Exe</OutputType>
<Project Sdk="Microsoft.NET.Sdk">
-
- <Import Project="..\Grpc.Core\Common.csproj.include" />
-
<PropertyGroup>
<Authors>The gRPC Authors</Authors>
<Copyright>Copyright 2015 The gRPC Authors</Copyright>
<Project Sdk="Microsoft.NET.Sdk">
-
- <Import Project="..\Grpc.Core\Common.csproj.include" />
-
<PropertyGroup>
<TargetFrameworks>net45;netcoreapp2.1</TargetFrameworks>
<OutputType>Exe</OutputType>
<Project Sdk="Microsoft.NET.Sdk">
-
- <Import Project="..\Grpc.Core\Common.csproj.include" />
-
<PropertyGroup>
<TargetFrameworks>net45;netcoreapp2.1</TargetFrameworks>
<OutputType>Exe</OutputType>
<Project Sdk="Microsoft.NET.Sdk">
-
- <Import Project="..\Grpc.Core\Common.csproj.include" />
-
<PropertyGroup>
<TargetFrameworks>net45;netcoreapp2.1</TargetFrameworks>
<OutputType>Exe</OutputType>
<Project Sdk="Microsoft.NET.Sdk">
-
- <Import Project="..\Grpc.Core\Common.csproj.include" />
-
<PropertyGroup>
<TargetFrameworks>net45;netcoreapp2.1</TargetFrameworks>
<OutputType>Exe</OutputType>
<Project Sdk="Microsoft.NET.Sdk">
-
- <Import Project="..\Grpc.Core\Common.csproj.include" />
-
<PropertyGroup>
<TargetFrameworks>net45;netcoreapp2.1</TargetFrameworks>
<OutputType>Exe</OutputType>
<Project Sdk="Microsoft.NET.Sdk">
-
- <Import Project="..\Grpc.Core\Common.csproj.include" />
-
<PropertyGroup>
<TargetFrameworks>net45;netcoreapp2.1</TargetFrameworks>
<OutputType>Exe</OutputType>
<Project Sdk="Microsoft.NET.Sdk">
-
- <Import Project="..\Grpc.Core\Common.csproj.include" />
-
<PropertyGroup>
<TargetFrameworks>net461;netcoreapp2.1</TargetFrameworks>
<OutputType>Exe</OutputType>
<Project Sdk="Microsoft.NET.Sdk">
-
- <Import Project="..\Grpc.Core\Common.csproj.include" />
-
<PropertyGroup>
<TargetFrameworks>net45;netcoreapp2.1</TargetFrameworks>
<OutputType>Exe</OutputType>
<Project Sdk="Microsoft.NET.Sdk">
-
- <Import Project="..\Grpc.Core\Common.csproj.include" />
-
<PropertyGroup>
<Authors>The gRPC Authors</Authors>
<Copyright>Copyright 2016 The gRPC Authors</Copyright>
<Project Sdk="Microsoft.NET.Sdk" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-
- <Import Project="..\Grpc.Core\Common.csproj.include" />
-
<PropertyGroup>
<TargetFrameworks>net45;netcoreapp2.1</TargetFrameworks>
<OutputType>Exe</OutputType>
default: Cpu = CpuKind.Unknown; break;
}
#else
- // Running under either Mono or full MS framework.
- Os = OsKind.Windows;
- if (Type.GetType("Mono.Runtime", throwOnError: false) != null)
+ // Using the same best-effort detection logic as Grpc.Core/PlatformApis.cs
+ var platform = Environment.OSVersion.Platform;
+ if (platform == PlatformID.Win32NT || platform == PlatformID.Win32S || platform == PlatformID.Win32Windows)
{
- // Congratulations. We are running under Mono.
- var plat = Environment.OSVersion.Platform;
- if (plat == PlatformID.MacOSX)
- {
- Os = OsKind.MacOsX;
- }
- else if (plat == PlatformID.Unix || (int)plat == 128)
- {
- // This is how Mono detects OSX internally.
- Os = File.Exists("/usr/lib/libc.dylib") ? OsKind.MacOsX : OsKind.Linux;
- }
+ Os = OsKind.Windows;
+ }
+ else if (platform == PlatformID.Unix && GetUname() == "Darwin")
+ {
+ Os = OsKind.MacOsX;
+ }
+ else
+ {
+ Os = OsKind.Linux;
}
// Hope we are not building on ARM under Xamarin!
Cpu = Environment.Is64BitProcess ? CpuKind.X64 : CpuKind.X86;
#endif
}
+
+ [DllImport("libc")]
+ static extern int uname(IntPtr buf);
+
+ // This code is copied from Grpc.Core/PlatformApis.cs
+ static string GetUname()
+ {
+ var buffer = Marshal.AllocHGlobal(8192);
+ try
+ {
+ if (uname(buffer) == 0)
+ {
+ return Marshal.PtrToStringAnsi(buffer);
+ }
+ return string.Empty;
+ }
+ catch
+ {
+ return string.Empty;
+ }
+ finally
+ {
+ if (buffer != IntPtr.Zero)
+ {
+ Marshal.FreeHGlobal(buffer);
+ }
+ }
+ }
};
// Exception handling helpers.
<Project Sdk="Microsoft.NET.Sdk" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-
- <Import Project="..\Grpc.Core\Common.csproj.include" />
-
<PropertyGroup>
<AssemblyName>Protobuf.MSBuild</AssemblyName>
<VersionPrefix>$(GrpcCsharpVersion)</VersionPrefix>
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Grpc.IntegrationTesting.XdsClient", "Grpc.IntegrationTesting.XdsClient\Grpc.IntegrationTesting.XdsClient.csproj", "{7306313A-4853-4CFF-B913-0FCB1A497449}"
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Grpc.Core.Xamarin", "Grpc.Core.Xamarin\Grpc.Core.Xamarin.csproj", "{1DCB698B-1383-4297-975A-EC8383295141}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Grpc", "Grpc\Grpc.csproj", "{6029123D-BA2B-4333-A2FD-67FB1F6CBBCD}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Grpc.Core.NativeDebug", "Grpc.Core.NativeDebug\Grpc.Core.NativeDebug.csproj", "{502E19BC-3E9A-487F-B871-94CC2E66AC0A}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
{7306313A-4853-4CFF-B913-0FCB1A497449}.Debug|Any CPU.Build.0 = Debug|Any CPU
{7306313A-4853-4CFF-B913-0FCB1A497449}.Release|Any CPU.ActiveCfg = Release|Any CPU
{7306313A-4853-4CFF-B913-0FCB1A497449}.Release|Any CPU.Build.0 = Release|Any CPU
+ {1DCB698B-1383-4297-975A-EC8383295141}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {1DCB698B-1383-4297-975A-EC8383295141}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {1DCB698B-1383-4297-975A-EC8383295141}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {1DCB698B-1383-4297-975A-EC8383295141}.Release|Any CPU.Build.0 = Release|Any CPU
+ {6029123D-BA2B-4333-A2FD-67FB1F6CBBCD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {6029123D-BA2B-4333-A2FD-67FB1F6CBBCD}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {6029123D-BA2B-4333-A2FD-67FB1F6CBBCD}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {6029123D-BA2B-4333-A2FD-67FB1F6CBBCD}.Release|Any CPU.Build.0 = Release|Any CPU
+ {502E19BC-3E9A-487F-B871-94CC2E66AC0A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {502E19BC-3E9A-487F-B871-94CC2E66AC0A}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {502E19BC-3E9A-487F-B871-94CC2E66AC0A}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {502E19BC-3E9A-487F-B871-94CC2E66AC0A}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
<Project Sdk="Microsoft.NET.Sdk">
-
- <Import Project="..\Grpc.Core\Common.csproj.include" />
-
<PropertyGroup>
<Authors>The gRPC Authors</Authors>
<Copyright>Copyright 2015 The gRPC Authors</Copyright>
<PublicSign Condition=" '$(OS)' != 'Windows_NT' ">true</PublicSign>
</PropertyGroup>
- <!-- Needed for the net45 build to work on Unix. See https://github.com/dotnet/designs/pull/33 -->
- <ItemGroup>
- <PackageReference Include="Microsoft.NETFramework.ReferenceAssemblies" Version="1.0.0">
- <PrivateAssets>all</PrivateAssets>
- <IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
- </PackageReference>
- </ItemGroup>
+ <PropertyGroup>
+ <LangVersion>7.2</LangVersion>
+ </PropertyGroup>
</Project>
+
<!-- This file is generated -->
<Project>
<PropertyGroup>
- <GrpcCsharpVersion>2.33.2</GrpcCsharpVersion>
+ <GrpcCsharpVersion>2.34.0</GrpcCsharpVersion>
<GoogleProtobufVersion>3.13.0</GoogleProtobufVersion>
</PropertyGroup>
</Project>
--- /dev/null
+#!/bin/bash
+# Copyright 2020 The gRPC Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+set -ex
+
+cd "$(dirname "$0")"
+
+mkdir -p ../../artifacts
+
+# Collect the artifacts built by the previous build step
+mkdir -p nativelibs
+cp -r "${EXTERNAL_GIT_ROOT}"/input_artifacts/csharp_ext_* nativelibs || true
+
+# Collect protoc artifacts built by the previous build step
+mkdir -p protoc_plugins
+cp -r "${EXTERNAL_GIT_ROOT}"/input_artifacts/protoc_* protoc_plugins || true
+
+# Add current timestamp to dev nugets
+./expand_dev_version.sh
+
+dotnet restore Grpc.sln
+
+# To be able to build the Grpc.Core project, we also need to put grpc_csharp_ext to where Grpc.Core.csproj
+# expects it.
+mkdir -p ../../cmake/build
+cp nativelibs/csharp_ext_linux_x64/libgrpc_csharp_ext.so ../../cmake/build
+
+dotnet pack --configuration Release Grpc.Core.Api --output ../../../artifacts
+dotnet pack --configuration Release Grpc.Core --output ../../../artifacts
+dotnet pack --configuration Release Grpc.Core.Testing --output ../../../artifacts
+dotnet pack --configuration Release Grpc.Auth --output ../../../artifacts
+dotnet pack --configuration Release Grpc.HealthCheck --output ../../../artifacts
+dotnet pack --configuration Release Grpc.Reflection --output ../../../artifacts
+dotnet pack --configuration Release Grpc.Tools --output ../../../artifacts
+# rem build auxiliary packages
+dotnet pack --configuration Release Grpc --output ../../../artifacts
+dotnet pack --configuration Release Grpc.Core.NativeDebug --output ../../../artifacts
+dotnet pack --configuration Release Grpc.Core.Xamarin --output ../../../artifacts
+
+# Create a zipfile with all the nugets we just created
+cd ../../artifacts
+zip csharp_nugets_windows_dotnetcli.zip *.nupkg
+++ /dev/null
-@rem Copyright 2016 gRPC authors.
-@rem
-@rem Licensed under the Apache License, Version 2.0 (the "License");
-@rem you may not use this file except in compliance with the License.
-@rem You may obtain a copy of the License at
-@rem
-@rem http://www.apache.org/licenses/LICENSE-2.0
-@rem
-@rem Unless required by applicable law or agreed to in writing, software
-@rem distributed under the License is distributed on an "AS IS" BASIS,
-@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-@rem See the License for the specific language governing permissions and
-@rem limitations under the License.
-
-set DOTNET=dotnet
-
-mkdir ..\..\artifacts
-
-@rem Collect the artifacts built by the previous build step
-mkdir nativelibs
-powershell -Command "cp -r ..\..\input_artifacts\csharp_ext_* nativelibs"
-
-@rem Collect protoc artifacts built by the previous build step
-mkdir protoc_plugins
-powershell -Command "cp -r ..\..\input_artifacts\protoc_* protoc_plugins"
-
-@rem Add current timestamp to dev nugets
-expand_dev_version.sh
-
-%DOTNET% restore Grpc.sln || goto :error
-
-@rem To be able to build, we also need to put grpc_csharp_ext to its normal location
-xcopy /Y /I nativelibs\csharp_ext_windows_x64\grpc_csharp_ext.dll ..\..\cmake\build\x64\Release\
-
-%DOTNET% pack --configuration Release Grpc.Core.Api --output ..\..\..\artifacts || goto :error
-%DOTNET% pack --configuration Release Grpc.Core --output ..\..\..\artifacts || goto :error
-%DOTNET% pack --configuration Release Grpc.Core.Testing --output ..\..\..\artifacts || goto :error
-%DOTNET% pack --configuration Release Grpc.Auth --output ..\..\..\artifacts || goto :error
-%DOTNET% pack --configuration Release Grpc.HealthCheck --output ..\..\..\artifacts || goto :error
-%DOTNET% pack --configuration Release Grpc.Reflection --output ..\..\..\artifacts || goto :error
-%DOTNET% pack --configuration Release Grpc.Tools --output ..\..\..\artifacts || goto :error
-@rem build auxiliary packages
-%DOTNET% pack --configuration Release Grpc --output ..\..\..\artifacts || goto :error
-%DOTNET% pack --configuration Release Grpc.Core.NativeDebug --output ..\..\..\artifacts || goto :error
-
-@rem copy resulting nuget packages to artifacts directory
-xcopy /Y /I *.nupkg ..\..\artifacts\ || goto :error
-
-@rem create a zipfile with the artifacts as well
-powershell -Command "Add-Type -Assembly 'System.IO.Compression.FileSystem'; [System.IO.Compression.ZipFile]::CreateFromDirectory('..\..\artifacts', 'csharp_nugets_windows_dotnetcli.zip');"
-xcopy /Y /I csharp_nugets_windows_dotnetcli.zip ..\..\artifacts\ || goto :error
-
-goto :EOF
-
-:error
-echo Failed!
-exit /b %errorlevel%
+++ /dev/null
-@rem Copyright 2018 The gRPC Authors
-@rem
-@rem Licensed under the Apache License, Version 2.0 (the "License");
-@rem you may not use this file except in compliance with the License.
-@rem You may obtain a copy of the License at
-@rem
-@rem http://www.apache.org/licenses/LICENSE-2.0
-@rem
-@rem Unless required by applicable law or agreed to in writing, software
-@rem distributed under the License is distributed on an "AS IS" BASIS,
-@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-@rem See the License for the specific language governing permissions and
-@rem limitations under the License.
-
-@rem Current package versions
-set VERSION=2.33.2
-
-@rem Adjust the location of nuget.exe
-set NUGET=nuget
-set DOTNET=dotnet
-
-mkdir ..\..\artifacts
-
-@rem Collect the artifacts built by the previous build step
-mkdir nativelibs
-powershell -Command "cp -r ..\..\input_artifacts\csharp_ext_* nativelibs"
-
-@rem Collect protoc artifacts built by the previous build step
-mkdir protoc_plugins
-powershell -Command "cp -r ..\..\input_artifacts\protoc_* protoc_plugins"
-
-%DOTNET% restore Grpc.sln || goto :error
-
-@rem To be able to build, we also need to put grpc_csharp_ext to its normal location
-xcopy /Y /I nativelibs\csharp_ext_windows_x64\grpc_csharp_ext.dll ..\..\cmake\build\x64\Release\
-
-%DOTNET% build --configuration Release Grpc.Core || goto :error
-@rem build HealthCheck to get hold of Google.Protobuf.dll assembly
-%DOTNET% build --configuration Release Grpc.HealthCheck || goto :error
-
-@rem copy Grpc assemblies to the unity package skeleton
-@rem TODO(jtattermusch): Add Grpc.Auth assembly and its dependencies
-copy /Y Grpc.Core.Api\bin\Release\net45\Grpc.Core.Api.dll unitypackage\unitypackage_skeleton\Plugins\Grpc.Core.Api\lib\net45\Grpc.Core.Api.dll || goto :error
-copy /Y Grpc.Core.Api\bin\Release\net45\Grpc.Core.Api.pdb unitypackage\unitypackage_skeleton\Plugins\Grpc.Core.Api\lib\net45\Grpc.Core.Api.pdb || goto :error
-copy /Y Grpc.Core.Api\bin\Release\net45\Grpc.Core.Api.xml unitypackage\unitypackage_skeleton\Plugins\Grpc.Core.Api\lib\net45\Grpc.Core.Api.xml || goto :error
-copy /Y Grpc.Core\bin\Release\net45\Grpc.Core.dll unitypackage\unitypackage_skeleton\Plugins\Grpc.Core\lib\net45\Grpc.Core.dll || goto :error
-copy /Y Grpc.Core\bin\Release\net45\Grpc.Core.pdb unitypackage\unitypackage_skeleton\Plugins\Grpc.Core\lib\net45\Grpc.Core.pdb || goto :error
-copy /Y Grpc.Core\bin\Release\net45\Grpc.Core.xml unitypackage\unitypackage_skeleton\Plugins\Grpc.Core\lib\net45\Grpc.Core.xml || goto :error
-
-@rem copy desktop native libraries to the unity package skeleton
-copy /Y nativelibs\csharp_ext_linux_x86\libgrpc_csharp_ext.so unitypackage\unitypackage_skeleton\Plugins\Grpc.Core\runtimes\linux\x86\libgrpc_csharp_ext.so || goto :error
-copy /Y nativelibs\csharp_ext_linux_x64\libgrpc_csharp_ext.so unitypackage\unitypackage_skeleton\Plugins\Grpc.Core\runtimes\linux\x64\libgrpc_csharp_ext.so || goto :error
-copy /Y nativelibs\csharp_ext_macos_x86\libgrpc_csharp_ext.dylib unitypackage\unitypackage_skeleton\Plugins\Grpc.Core\runtimes\osx\x86\grpc_csharp_ext.bundle || goto :error
-copy /Y nativelibs\csharp_ext_macos_x64\libgrpc_csharp_ext.dylib unitypackage\unitypackage_skeleton\Plugins\Grpc.Core\runtimes\osx\x64\grpc_csharp_ext.bundle || goto :error
-copy /Y nativelibs\csharp_ext_windows_x86\grpc_csharp_ext.dll unitypackage\unitypackage_skeleton\Plugins\Grpc.Core\runtimes\win\x86\grpc_csharp_ext.dll || goto :error
-copy /Y nativelibs\csharp_ext_windows_x64\grpc_csharp_ext.dll unitypackage\unitypackage_skeleton\Plugins\Grpc.Core\runtimes\win\x64\grpc_csharp_ext.dll || goto :error
-
-@rem add Android and iOS native libraries
-copy /Y nativelibs\csharp_ext_linux_android_armeabi-v7a\libgrpc_csharp_ext.so unitypackage\unitypackage_skeleton\Plugins\Grpc.Core\runtimes\android\armeabi-v7a\libgrpc_csharp_ext.so || goto :error
-copy /Y nativelibs\csharp_ext_linux_android_arm64-v8a\libgrpc_csharp_ext.so unitypackage\unitypackage_skeleton\Plugins\Grpc.Core\runtimes\android\arm64-v8a\libgrpc_csharp_ext.so || goto :error
-copy /Y nativelibs\csharp_ext_linux_android_x86\libgrpc_csharp_ext.so unitypackage\unitypackage_skeleton\Plugins\Grpc.Core\runtimes\android\x86\libgrpc_csharp_ext.so || goto :error
-copy /Y nativelibs\csharp_ext_macos_ios\libgrpc_csharp_ext.a unitypackage\unitypackage_skeleton\Plugins\Grpc.Core\runtimes\ios\libgrpc_csharp_ext.a || goto :error
-copy /Y nativelibs\csharp_ext_macos_ios\libgrpc.a unitypackage\unitypackage_skeleton\Plugins\Grpc.Core\runtimes\ios\libgrpc.a || goto :error
-
-@rem add gRPC dependencies
-@rem TODO(jtattermusch): also include XMLdoc
-copy /Y Grpc.Core\bin\Release\net45\System.Runtime.CompilerServices.Unsafe.dll unitypackage\unitypackage_skeleton\Plugins\System.Runtime.CompilerServices.Unsafe\lib\net45\System.Runtime.CompilerServices.Unsafe.dll || goto :error
-copy /Y Grpc.Core\bin\Release\net45\System.Buffers.dll unitypackage\unitypackage_skeleton\Plugins\System.Buffers\lib\net45\System.Buffers.dll || goto :error
-copy /Y Grpc.Core\bin\Release\net45\System.Memory.dll unitypackage\unitypackage_skeleton\Plugins\System.Memory\lib\net45\System.Memory.dll || goto :error
-
-@rem add Google.Protobuf
-@rem TODO(jtattermusch): also include XMLdoc
-copy /Y Grpc.HealthCheck\bin\Release\net45\Google.Protobuf.dll unitypackage\unitypackage_skeleton\Plugins\Google.Protobuf\lib\net45\Google.Protobuf.dll || goto :error
-
-@rem create a zipfile that will act as a Unity package
-cd unitypackage\unitypackage_skeleton
-zip -r ..\..\grpc_unity_package.zip Plugins
-cd ..\..
-copy /Y grpc_unity_package.zip ..\..\artifacts\grpc_unity_package.%VERSION%.zip || goto :error
-
-goto :EOF
-
-:error
-echo Failed!
-exit /b %errorlevel%
--- /dev/null
+#!/bin/bash
+# Copyright 2020 The gRPC Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+set -ex
+
+cd "$(dirname "$0")"
+
+mkdir -p ../../artifacts
+
+# Collect the artifacts built by the previous build step
+mkdir -p nativelibs
+cp -r "${EXTERNAL_GIT_ROOT}"/input_artifacts/csharp_ext_* nativelibs || true
+
+# Add current timestamp to dev nugets
+./expand_dev_version.sh
+
+# Extract current Grpc.Core version from build/dependencies.props
+UNITYPACKAGE_VERSION="$(grep -o '<GrpcCsharpVersion>.*</GrpcCsharpVersion>' build/dependencies.props | sed 's/<GrpcCsharpVersion>//' | sed 's/<\/GrpcCsharpVersion>//')"
+
+dotnet restore Grpc.sln
+
+# To be able to build the Grpc.Core project, we also need to put grpc_csharp_ext to where Grpc.Core.csproj
+# expects it.
+mkdir -p ../../cmake/build
+cp nativelibs/csharp_ext_linux_x64/libgrpc_csharp_ext.so ../../cmake/build
+
+dotnet build --configuration Release Grpc.Core
+# build HealthCheck to get hold of Google.Protobuf.dll assembly
+dotnet build --configuration Release Grpc.HealthCheck
+
+# copy Grpc assemblies to the unity package skeleton
+# TODO(jtattermusch): Add Grpc.Auth assembly and its dependencies
+cp Grpc.Core.Api/bin/Release/net45/Grpc.Core.Api.dll unitypackage/unitypackage_skeleton/Plugins/Grpc.Core.Api/lib/net45/Grpc.Core.Api.dll
+cp Grpc.Core.Api/bin/Release/net45/Grpc.Core.Api.pdb unitypackage/unitypackage_skeleton/Plugins/Grpc.Core.Api/lib/net45/Grpc.Core.Api.pdb
+cp Grpc.Core.Api/bin/Release/net45/Grpc.Core.Api.xml unitypackage/unitypackage_skeleton/Plugins/Grpc.Core.Api/lib/net45/Grpc.Core.Api.xml
+cp Grpc.Core/bin/Release/net45/Grpc.Core.dll unitypackage/unitypackage_skeleton/Plugins/Grpc.Core/lib/net45/Grpc.Core.dll
+cp Grpc.Core/bin/Release/net45/Grpc.Core.pdb unitypackage/unitypackage_skeleton/Plugins/Grpc.Core/lib/net45/Grpc.Core.pdb
+cp Grpc.Core/bin/Release/net45/Grpc.Core.xml unitypackage/unitypackage_skeleton/Plugins/Grpc.Core/lib/net45/Grpc.Core.xml
+
+# copy desktop native libraries to the unity package skeleton
+cp nativelibs/csharp_ext_linux_x64/libgrpc_csharp_ext.so unitypackage/unitypackage_skeleton/Plugins/Grpc.Core/runtimes/linux/x64/libgrpc_csharp_ext.so
+cp nativelibs/csharp_ext_macos_x64/libgrpc_csharp_ext.dylib unitypackage/unitypackage_skeleton/Plugins/Grpc.Core/runtimes/osx/x64/grpc_csharp_ext.bundle
+cp nativelibs/csharp_ext_windows_x86/grpc_csharp_ext.dll unitypackage/unitypackage_skeleton/Plugins/Grpc.Core/runtimes/win/x86/grpc_csharp_ext.dll
+cp nativelibs/csharp_ext_windows_x64/grpc_csharp_ext.dll unitypackage/unitypackage_skeleton/Plugins/Grpc.Core/runtimes/win/x64/grpc_csharp_ext.dll
+
+# add Android and iOS native libraries
+cp nativelibs/csharp_ext_linux_android_armeabi-v7a/libgrpc_csharp_ext.so unitypackage/unitypackage_skeleton/Plugins/Grpc.Core/runtimes/android/armeabi-v7a/libgrpc_csharp_ext.so
+cp nativelibs/csharp_ext_linux_android_arm64-v8a/libgrpc_csharp_ext.so unitypackage/unitypackage_skeleton/Plugins/Grpc.Core/runtimes/android/arm64-v8a/libgrpc_csharp_ext.so
+cp nativelibs/csharp_ext_linux_android_x86/libgrpc_csharp_ext.so unitypackage/unitypackage_skeleton/Plugins/Grpc.Core/runtimes/android/x86/libgrpc_csharp_ext.so
+cp nativelibs/csharp_ext_macos_ios/libgrpc_csharp_ext.a unitypackage/unitypackage_skeleton/Plugins/Grpc.Core/runtimes/ios/libgrpc_csharp_ext.a
+cp nativelibs/csharp_ext_macos_ios/libgrpc.a unitypackage/unitypackage_skeleton/Plugins/Grpc.Core/runtimes/ios/libgrpc.a
+
+# add gRPC dependencies
+# TODO(jtattermusch): also include XMLdoc
+cp Grpc.Core/bin/Release/net45/System.Runtime.CompilerServices.Unsafe.dll unitypackage/unitypackage_skeleton/Plugins/System.Runtime.CompilerServices.Unsafe/lib/net45/System.Runtime.CompilerServices.Unsafe.dll
+cp Grpc.Core/bin/Release/net45/System.Buffers.dll unitypackage/unitypackage_skeleton/Plugins/System.Buffers/lib/net45/System.Buffers.dll
+cp Grpc.Core/bin/Release/net45/System.Memory.dll unitypackage/unitypackage_skeleton/Plugins/System.Memory/lib/net45/System.Memory.dll
+
+# add Google.Protobuf
+# TODO(jtattermusch): also include XMLdoc
+cp Grpc.HealthCheck/bin/Release/net45/Google.Protobuf.dll unitypackage/unitypackage_skeleton/Plugins/Google.Protobuf/lib/net45/Google.Protobuf.dll
+
+# create a zipfile that will act as a Unity package
+pushd unitypackage/unitypackage_skeleton
+zip -r ../../grpc_unity_package.zip Plugins
+popd
+
+cp grpc_unity_package.zip ../../artifacts/grpc_unity_package.${UNITYPACKAGE_VERSION}.zip
gRPC C# now has experimental support for Xamarin.
See [HelloworldXamarin](/examples/csharp/HelloworldXamarin) for an example how to use it.
+Starting from gRPC C# 2.34.x: in addition to the regular `Grpc.Core` dependency, you will also
+need to add `Grpc.Core.Xamarin` dependency to your project (which has the mobile-specific builds of c# native extension library).
+The `Grpc.Core` and `Grpc.Core.Xamarin` package versions must always match exactly for things to work.
+Also note that the `Grpc.Core.Xamarin` needs to be added to your `*.Android` and `*.iOS` projects
+in order for the native library bindings to be registered correctly (see https://github.com/grpc/grpc/issues/16250).
+
What's currently supported:
Xamarin.Android
PATH_CC="$(xcrun --sdk $SDK --find clang)"
PATH_CXX="$(xcrun --sdk $SDK --find clang++)"
- CPPFLAGS="-O2 -Wframe-larger-than=16384 -arch $ARCH -isysroot $(xcrun --sdk $SDK --show-sdk-path) -mios-version-min=6.0 -DPB_NO_PACKED_STRUCTS=1"
- LDFLAGS="-arch $ARCH -isysroot $(xcrun --sdk $SDK --show-sdk-path) -Wl,ios_version_min=6.0"
+ CPPFLAGS="-O2 -Wframe-larger-than=16384 -arch $ARCH -isysroot $(xcrun --sdk $SDK --show-sdk-path) -mios-version-min=9.0 -DPB_NO_PACKED_STRUCTS=1"
+ LDFLAGS="-arch $ARCH -isysroot $(xcrun --sdk $SDK --show-sdk-path) -Wl,ios_version_min=9.0"
# TODO(jtattermusch): revisit the build arguments
make -j4 static_csharp \
+++ /dev/null
-fileFormatVersion: 2
-guid: d62d998e3cdebd542a967743103c64b6
-folderAsset: yes
-timeCreated: 1531219385
-licenseType: Free
-DefaultImporter:
- externalObjects: {}
- userData:
- assetBundleName:
- assetBundleVariant:
+++ /dev/null
-fileFormatVersion: 2
-guid: 0165d78fa73d0cc4c8984f3d4f2a6c86
-timeCreated: 1531219386
-licenseType: Free
-PluginImporter:
- externalObjects: {}
- serializedVersion: 2
- iconMap: {}
- executionOrder: {}
- isPreloaded: 0
- isOverridable: 0
- platformData:
- - first:
- '': Any
- second:
- enabled: 0
- settings:
- Exclude Android: 1
- Exclude Editor: 0
- Exclude Linux: 0
- Exclude Linux64: 1
- Exclude LinuxUniversal: 0
- Exclude OSXIntel: 1
- Exclude OSXIntel64: 1
- Exclude OSXUniversal: 1
- Exclude Win: 0
- Exclude Win64: 0
- Exclude iOS: 1
- - first:
- Android: Android
- second:
- enabled: 0
- settings:
- CPU: ARMv7
- - first:
- Any:
- second:
- enabled: 0
- settings: {}
- - first:
- Editor: Editor
- second:
- enabled: 1
- settings:
- CPU: x86
- DefaultValueInitialized: true
- OS: Linux
- - first:
- Facebook: Win
- second:
- enabled: 0
- settings:
- CPU: AnyCPU
- - first:
- Facebook: Win64
- second:
- enabled: 0
- settings:
- CPU: AnyCPU
- - first:
- Standalone: Linux
- second:
- enabled: 1
- settings:
- CPU: x86
- - first:
- Standalone: Linux64
- second:
- enabled: 0
- settings:
- CPU: None
- - first:
- Standalone: LinuxUniversal
- second:
- enabled: 1
- settings:
- CPU: x86
- - first:
- Standalone: OSXIntel
- second:
- enabled: 0
- settings:
- CPU: None
- - first:
- Standalone: OSXIntel64
- second:
- enabled: 0
- settings:
- CPU: None
- - first:
- Standalone: OSXUniversal
- second:
- enabled: 0
- settings:
- CPU: None
- - first:
- Standalone: Win
- second:
- enabled: 1
- settings:
- CPU: AnyCPU
- - first:
- Standalone: Win64
- second:
- enabled: 1
- settings:
- CPU: AnyCPU
- - first:
- iPhone: iOS
- second:
- enabled: 0
- settings:
- CompileFlags:
- FrameworkDependencies:
- userData:
- assetBundleName:
- assetBundleVariant:
+++ /dev/null
-fileFormatVersion: 2
-guid: 2ee63d0ffcfa72a4fbd7ad04ba34cadb
-folderAsset: yes
-timeCreated: 1531219385
-licenseType: Free
-DefaultImporter:
- externalObjects: {}
- userData:
- assetBundleName:
- assetBundleVariant:
+++ /dev/null
-fileFormatVersion: 2
-guid: 34ec9b69f128d6d4fa3fb46bc70b547c
-timeCreated: 1531219386
-licenseType: Free
-PluginImporter:
- externalObjects: {}
- serializedVersion: 2
- iconMap: {}
- executionOrder: {}
- isPreloaded: 0
- isOverridable: 0
- platformData:
- - first:
- '': Any
- second:
- enabled: 0
- settings:
- Exclude Android: 1
- Exclude Editor: 0
- Exclude Linux: 1
- Exclude Linux64: 1
- Exclude LinuxUniversal: 1
- Exclude OSXIntel: 0
- Exclude OSXIntel64: 1
- Exclude OSXUniversal: 0
- Exclude Win: 1
- Exclude Win64: 1
- Exclude iOS: 1
- - first:
- Android: Android
- second:
- enabled: 0
- settings:
- CPU: ARMv7
- - first:
- Any:
- second:
- enabled: 0
- settings: {}
- - first:
- Editor: Editor
- second:
- enabled: 1
- settings:
- CPU: x86
- DefaultValueInitialized: true
- OS: OSX
- - first:
- Facebook: Win
- second:
- enabled: 0
- settings:
- CPU: AnyCPU
- - first:
- Facebook: Win64
- second:
- enabled: 0
- settings:
- CPU: AnyCPU
- - first:
- Standalone: Linux
- second:
- enabled: 0
- settings:
- CPU: x86
- - first:
- Standalone: Linux64
- second:
- enabled: 0
- settings:
- CPU: x86_64
- - first:
- Standalone: LinuxUniversal
- second:
- enabled: 0
- settings:
- CPU: None
- - first:
- Standalone: OSXIntel
- second:
- enabled: 1
- settings:
- CPU: AnyCPU
- - first:
- Standalone: OSXIntel64
- second:
- enabled: 0
- settings:
- CPU: None
- - first:
- Standalone: OSXUniversal
- second:
- enabled: 1
- settings:
- CPU: x86
- - first:
- Standalone: Win
- second:
- enabled: 0
- settings:
- CPU: AnyCPU
- - first:
- Standalone: Win64
- second:
- enabled: 0
- settings:
- CPU: AnyCPU
- - first:
- iPhone: iOS
- second:
- enabled: 0
- settings:
- CompileFlags:
- FrameworkDependencies:
- userData:
- assetBundleName:
- assetBundleVariant:
# exclamation mark ensures that other "regular" pods will be able to find it as it'll be installed
# before them.
s.name = '!ProtoCompiler-gRPCCppPlugin'
- v = '1.33.2'
+ v = '1.34.0'
s.version = v
s.summary = 'The gRPC ProtoC plugin generates C++ files from .proto services.'
s.description = <<-DESC
# Restrict the protoc version to the one supported by this plugin.
s.dependency '!ProtoCompiler', '3.13.0'
# For the Protobuf dependency not to complain:
- s.ios.deployment_target = '7.0'
- s.osx.deployment_target = '10.9'
+ s.ios.deployment_target = '9.0'
+ s.osx.deployment_target = '10.10'
s.tvos.deployment_target = '10.0'
s.watchos.deployment_target = '2.0'
# exclamation mark ensures that other "regular" pods will be able to find it as it'll be installed
# before them.
s.name = '!ProtoCompiler-gRPCPlugin'
- v = '1.33.2'
+ v = '1.34.0'
s.version = v
s.summary = 'The gRPC ProtoC plugin generates Objective-C files from .proto services.'
s.description = <<-DESC
# Restrict the protoc version to the one supported by this plugin.
s.dependency '!ProtoCompiler', '3.13.0'
# For the Protobuf dependency not to complain:
- s.ios.deployment_target = '7.0'
- s.osx.deployment_target = '10.9'
+ s.ios.deployment_target = '9.0'
+ s.osx.deployment_target = '10.10'
s.tvos.deployment_target = '10.0'
# watchOS is disabled due to #20258.
# Restrict the protobuf runtime version to the one supported by this version of protoc.
s.dependency 'Protobuf', '~> 3.0'
# For the Protobuf dependency not to complain:
- s.ios.deployment_target = '7.0'
- s.osx.deployment_target = '10.9'
+ s.ios.deployment_target = '9.0'
+ s.osx.deployment_target = '10.10'
s.tvos.deployment_target = '10.0'
s.watchos.deployment_target = '4.0'
Pod::Spec.new do |s|
s.name = 'BoringSSL-GRPC'
- version = '0.0.13'
+ version = '0.0.14'
s.version = version
s.summary = 'BoringSSL is a fork of OpenSSL that is designed to meet Google\'s needs.'
# Adapted from the homepage:
s.source = {
:git => 'https://github.com/google/boringssl.git',
- :commit => "88aeb757f1a415c71fb4cbf5af936ecae4bc8179",
+ :commit => "29c6e0e27268f5a43e039cd2ed4e849d6b736fc1",
}
- s.ios.deployment_target = '7.0'
- s.osx.deployment_target = '10.7'
+ s.ios.deployment_target = '9.0'
+ s.osx.deployment_target = '10.10'
s.tvos.deployment_target = '10.0'
s.watchos.deployment_target = '4.0'
# /src/boringssl/boringssl_prefix_symbols.h. Here we decode the content and inject the header to
# the correct location in BoringSSL.
base64 -D <<EOF | gunzip > src/include/openssl/boringssl_prefix_symbols.h
- H4sICAAAAAAC/2JvcmluZ3NzbF9wcmVmaXhfc3ltYm9scy5oAKy9XXOjyJaofT+/wnHm5pyIHTNlV7vb
- +71T2aouTbtsjyT3dM0NgQSy2YVARSK73L/+zQQE+bFWwlrpiB0zXRbPsyBJ8osk8z//8+wpLdIqrtPk
- bPPW/yPalFVWPAmRR4cq3WU/o+c0TtLqP8TzWVmcfWp+Xa1uz7blfp/V/9/Z1VWcbn67/G13Hv9yfrn9
- 7Xy3+WW72V3Gu39+/DXdxukvm+3V+W///Ld/+8//PLsuD29V9vRcn/3f7f87u/hwfvWPs9/L8ilPzxbF
- 9j/kIeqoh7TaZ0JkMl5dnh1F+g8Z7fD2j7N9mWQ7+f/jIvnPsjpLMlFX2eZYp2f1cybORLmrX+MqPdvJ
- H+PiTbkOx+pQivTsNavlBVTN/y+P9dkuTc8k8pxWqbr6Ki5kQvzj7FCVL1kik6R+jmv5f9KzeFO+pMq0
- 7c+9KOtsm6qzaOMehvM9/XQ4pHF1lhVncZ4rMkvF6erWX+Znq/vP6/+ZLedni9XZw/L+z8XN/Obs/8xW
- 8t//52x2d9McNHtcf7lfnt0sVte3s8XX1dns9vZMUsvZ3XoxXynX/yzWX86W899nS4ncS0r6Bvfd9e3j
- zeLu9wZcfH24Xcgog+Ds/rNyfJ0vr7/Iv8w+LW4X629N+M+L9d18tfoP6Ti7uz+b/zm/W5+tviiPdmaf
- 5me3i9mn2/nZZ/mv2d03pVs9zK8Xs9t/yPNezq/X/5CK03/Jg67v71bz/36UOnnM2c3s6+x3dSINffpn
- c2FfZuvVvYy7lJe3erxdq8v4vLz/enZ7v1Jnfva4mssYs/VM0TIN5Smv/iG5uTzBpTrvmfzf9Xpxf6d8
- EpCh18uZOo+7+e+3i9/nd9dzxd43wPp+KY99XHXMP85my8VKBb1/XCv6XjmbLHx/dzdvjmlTX6WHPJfm
- LOZLmRBfZ434s3k3/qPJ/5/ul9IpH59odnMTPSznnxd/nR1iUafirH4tz2TWK+psl6WVkJlHZv6ySOVN
- qFUWk5l6L9QflCir1dOqcly5O9vH26o8S38e4qLJhPJ/WS3O4urpuJc+cbZJJZw2geTT+x//9u+JfLKL
- FDyd/xv/42zz/8CfooW89GV7gNehH3gWn/37v59F6v9s/m2gFvfRLpKlDHwOwx/bP/xjAP6f4RBpTbV0
- yOC5Wd+uom2eyaSK9qksHpKpOpe0rAwd6BFp9ZJWHJ1BWlZVFkab424nsxvHDfBmhJfz6IKfsi4N2Jla
- 1MdOaZd27CEp4U+HJ5mn62yfqpqN5tVIx/osa7g8ZYpN2HGzEgG5+pB75r9jqqzIiqzO4vx0JVFy7Epe
- aiBcNcSdL5dRXsZJpAyqdSObYlMDQexgvn+Y36kf1DlQikybG4wP869RlXbxVrK5oOrEiVaIBcybrAyy
- W7wZ4bWStShX78CQO+D0QcEQQ/3xevEgWy5RkoptlR0oWRKmQbsqH+KjLOeLLGHodRz1b1RrhedWKOrd
- ZgfZvg8480GAxkiyp1TUATEGARqD7fY4v/+MinifMsUd7bWzz7qFUfc+/hnJIlvw8rtlwKNkRWiUwYBG
- CbgF3vQ/VLuAG9DRHntZl9syjwIi9AY0SrXbhqTPCUf9L3F+5MobFjcH5RtfnslEFMt6jWHuSMy6ycvt
- 966849l1AxhF1LJFGFcJ96YavBXh/utDFCdJtC33hypthmKIzcERDRBvV6UpcKQgR8REQEyZPz7Q088g
- Yeu7XAjiQSJmCStAliA+brJAqbL+S+WDD9H2OZal+DatapLZxUH/eZj/fMzf/GLckTh/YgQCPUjEtpt6
- PWOFOcGwO/1ZV3FYkjkOOJJoL5MToENd7/Y5leXjocpe1Cj79/SNancEQIy2vSqv7akqjwdyBBMH/Hka
- V1rqCXIEW4DFsO8TM5KjweLtyyTlhVAkZi2bfhXz3DvYdadFvMnTqNyKg6oUD7ns6FNDQA40ksieirQr
- BdTQhQT2B8EMCcvQ2HUu1P0ripTc3MQkbqxdfhTPp0eXfGEmDdhl/U52SsY1NZW4Srlsl21lKUC12jwW
- QT0vPLcifVbew2zzSIRDXMV7lrshMWtb4jJKbAsH/e2DIGr1foau12jE3uf6aLthBdAFSIym2hAse4si
- 3lNzIMozUbP0hgGOIv8UH3PZJY2FeOWmkiOZGCs6irRK4jp+l6C9DY6e/oy4oToU9Rbpq2w2JOlPprzn
- sQiBrQFQAsfKil0ZbeM838Tb75w4hgCOIQuDvHwKimIp4DhqoKspIbgPkCHAYzTDOaxhD0yCxJK3LjyW
- LUFiMVqEJw42MluDGgp7fxwz9Ur7+Vgn5SsrSUwDHKV5nxI/U0efHBq2d60nmZ9lN4ed9q4FjkZ8owmg
- iDcXspSRx2y/t48o62a7FjiazL7Z7i2oFLEU3jhJeqifA4I0vDcC97ZruOtv3oh2R+TlNmY9g6DEjVWk
- smdT7w/RckUeANFZyPxKF766nirdly8pd4DDpF27+iGKt1t5p6lqDfV6o6eyTALkDe+PUKVF+lTWGaOD
- hWiQeG0xtTvmOSvOgGP+TfSc0RtLOouZS9kp2PJucsf6zfzbrAtGYoTeaMCDRGw6I83tEtnfvGCmwhOn
- OXDDjtHiHr9qqwf4W9zj7wqZgBC9AYnCfig8T4SaAJzyrC2KeIvjfkN8JWeiiFeE50gxJUeKsBwpxnKk
- CMuRYixHiuAcKSbkyK5Vycs/Jxhy1x+6CZrRoSwZ1YzJIxFY44XCM17Y/nYavBE8dY8j/lPblz3+BlvA
- aOfsNDr3pJH87Vi9cEqdHvV6WcMGNo9EYI3VDiRiFdlTnD/xEqRj/WZ+kugCJEbYuw5AgcR5j5x/PjHn
- R7JrWb5Gx+J7Ub6qF8eHbvSFc5NwGRY7MNoUv0hz1Qjk1A62AY7Svn1n6TvU4+Xe/9H73vweOESBeZCI
- zdBuXCSct+uOAI3Bf58ixt+niGHWKbOk0XHEH/ReRUx4r6IdE5J5DQMS5VhV6iDVBuKGMRVYHJnV910+
- 5EXRBHCM4DdRYtqbKPGub6IE8U2Ufnz3WB/i+lmExNU9SMRSNCW5LGebAWJe2toSOFYaV/lb876sm3/A
- qcoBCxKN91ZP+N7qqR93cS5SNTek6qrdNIm6j2ebWosTcMwJn8lTlcYSC0hL0wBHyZ4KWZepBtT5x0i9
- Bnmq4oRVM8ImJGrI20Yx/rZRhL9tFFPeNorQt41i/G2jeI+3jWLa28bTYSKVrYFdFT+pD2m5sQwJEiv0
- zaaY9mZTMN9sCvTNZvOLCMteOj8eIYqrp9AoygFHKtS7tzYVg1r2kGcsooji5EVNzxJpEhzWksGxmwmA
- VSoOZSFYmcIQIDF4772F7723aD4i6afCcib7oxYkmvjet0gDsjqgweN1H6eGxrM0SLxuoQxOjBaFvT+O
- 2Tbg9mg46g+Y/SAmzH4QQbMfxMjsh/b3WvU8y0K2+MRzfHH5a1Tu9P6P4EUds2Jn07WnZRtXPtnHfcqL
- blvgaKfCcZiVyiz5QBEWM3S2iZg420Q/TnX5y6KWBXRItMHij6Ye/OQ55c518aiQuNC8bnZTELfh0bPi
- SX2YUlayR7FvVi8S3NCAColb1QdV3e6yPOVF0wVIjLrKtsHDQq4FjtZNO1IfCwYU264Fi8bOnd7caI6D
- h/QdYRMaVTW/2vpWfVbGbaqCoqkxQ5oLuM0fvY7rowi92l4yJRavkrAd3kjDDLywaIZnYkTxLvGEN9pR
- DcbI8icg1EmBxJFldvLM0jekzxqWzU0FHifd8s9fsbi5EjFXLFGvNzhpdAcSqTryqqEGhJ38wXXfqHrX
- Cn2HhgFs8kZlzZkVo3Nmj6rLvaN6WwqwyWf4oe0F/0F/cWbSY/Zotro7DwvRKEbjqPZUYBylgOMsV7Ow
- BDMEE2Kwk821TInGTTzXAkcL+ITRwkf97JSzHeOR2tfH3LSDTeNR3yMeHkl1/dpFKeu36Dmjj4GDEjNW
- t7hVpBZY7V8HDa+/KBFHVHBc7U3bNj6o5j0npGuBo1G/BtY5zFjuo81bTeuAujRsb7+9JS8MA+AeP29o
- BFF44rCHu3GLJ9ohDUgzBY+49WdYBAUyTGNR27HEsHitwxPpfYaTJio959H2pdgxWxz1c97eA7jXz/o2
- F3PgkWgTFk0St+7V2sgVdUIXbMCj9MuRMV6++jx4xK6Lnme7tJl3RK1ax1y+yPuUH2mf+s3EsTwAx/2B
- N8d7T55jEVq4WQo8Dr9IGWjYnon2VQu3DaPzcATid4gaBvuamcS8oqNDvd6QVoWlQOOElOFirAwX71Q6
- icml0zB6z43jy6EioAQS3hJIhJVAYqwEErIvkSfRRn3tVDzlqerZsAIBHjhiXfJb9SfWb452ZRVwswEN
- HI8+XmWSppX+gTH0XXHA+n7etf0C1vXzrunHXl3Ps7Ke+kn1/bvJ/MfNv9JtLdR9lW1j2vDxiMqKm6uD
- 1NLT3TrlpEg2POKO8jIwQGOAojR9526oVlWceU2P4zqgSPXbIWWnlQaPuJlpZRvMKO38iOeMlDg9ZLnU
- tJV2gTySbcAsX8iqjCMrMtLPEji/kBUXR1Zb5K18iK16yF7x0LPaIWOZAXB1ge2xrp+r8vj03Kximqe0
- cWcAN/1JmqdPaietaFulzUBnnKt6ndSuRSVWrLLZWkN2Mr6TLkLnLKOsZBkfA2mY6WtHQvuZttv6p1p7
- K232JlI9MUqQMRcUuRmDbat82h0AcMsfuPLm+Kqb77biJmG1zeCVNiessplWlWwjMreqcGDL/fNQVs10
- B1X/7OUjVMlHhxQANJhRqOP27nh9v8WemgjSLJdO8bm0ba8/6J+T0rK+SwN2/ZWRqvIFOYJjgKLwKjv/
- GqHt8ufDlPx+wRZ6KoEWIBr7XcPYOwbeWqfYOqfhbxOmvEUYjumquW4V8XYmBTMcqMLi2rM3mDEdDRCv
- m29fpT+OssCVxS9xDQtUAsYKmVyMKKA47/I+hvQe5qlZNoG+UpnOOcaoezFNFJ4w18ecy2ChgLedqLt5
- o29UAuCon3EH8TnEzNWA0ZWAw1YBHlsBWPu9ki3jcs+UtzDg7j4sp788d2mPfdiWgR1iUOBxhu1FmVF6
- ARjjJSU2OnUOM1K3BDFJ13r63pwxzgzgrl/rgKgvlulp7QiAGKoxTfYqCHDR33ygb621H6K/Lj/8M1qt
- 75fzZg5RlvxkhgBMYFTWO3L/u/Fuyem9iMTxoLoXdLUGu+4d+WnZAc+J/EcmnlO6q+NcI/uL9pG1s5uf
- X8j1ikRcT9+FivKU/IwZsOtmfwU/st528FrbE9bZDl5je8L62py1teF1tdvVJE89sKguv6dFtJGPourE
- c/pHIzY3OmO0E13Nu5k/cupE0ZeLA3CPn9lgtXkkArdQMWDMfczz0CSyHEik5svjWjbuRDM41GQBwYoH
- mpCoqnMU18cqHbqYrJiAB4rYZm9eC9WkATtr4xSTBKzaZGKyV2P9ZvKELFDgxuB/rT62Tn+z8O0mK6lO
- xQAm1vfuvpX++9+EGtEotilLfIIBN71BVEEtIpFu1VMzrOmshkaYTTifC4rcjrwa3wTTQwISKFY7usTq
- 9xow6lYfkjGefZPG7Jye3UD6rM24NF/d4JCf1UNHR7HEc1ypMTTeYItJo3bGaqouDdl5pR9e7gGVXbev
- NjkGapoWVXUOWBnI45oWmfVEIB4gInedgyf/Ggfa/OX4KY3Ed9r8UgAH/OwXmy4N249F9oM+RDuQoFX7
- Tr1/GcQIAWnG4nFysGtwowQsBzu6W03ITjX+XWoCdqjx7k6j/UifPObAoJtT56C99ldG6/IVbF2+0ttq
- r1Bb7VUWWSm7QWnSpj0rmF8gGqDj1BbAJEo10rHKHjNVpxDLI6JEPsMkT4s4HiVnDQLYrGNu21lEZQu5
- LqDyUwsfHAQ1ETwmJ2rA+qIu7dqNUSveJAePxoyn2ifHQ0IcRxoo05Znmyqu3siZWecso9q0a3gBSO1N
- ATjgb+cmtXNfBVlv0KZ9Hz9l236MpV+KqyblflRix1KLlMZ5VMoHhdrpd2DTzd0TDd8PjfgNkvPtUXHc
- m11y0n1zadN+SFNSw0Ydbxua20WTNIjlqcqt2h+mGX48lKLmTRz1aOB4bSGlXoudMhz9E5MxlxP5JUvS
- 9hSpNbYDm+52AUqZx/urjnZ59vRcU98deUVAzGa8K09f0pwcZUABb9vs4Yk11jRXxEKjcsoJ5mZs6N5r
- 2g+cJwrAbb+wX7j/izhXHVGYcbplLYdZh5QIDmy71cLUMnLefshBU5usbW6f1iqlToM3SdvK2W0K22kq
- YJcp7w5TzY/UofgeAlxB+/VM2aWqOeaVc8av0Bmfs+7ROXKPOLtcoTtchexu5d/ZqvkV+oaDHAKSALHI
- b7ix3bO4O2fhu2YF7Zg1sltW4E5Zo7tkhe+QNWV3LMGbiSqwmajNXlLtvrNqBI56vgYLmHn7aHn30FI/
- 0kucCCpvOJsMobtjBe0kNbKLVMDuTt6dncJ2dRrb0an5vdvqlpW5DBhwc/dWGtlXKXwvnin78DTHFLuy
- 2qbNoE8zviHiJ3IqgRIgFn3OJbrKhCDPIxTAPML32T1n6s45QbvmjOyYo37+V/L9/Dx6LavvcVUeC3Lq
- 2LwbgT1DcGSPnOD9cSbsjRO8L86EPXGC98OZsBcOZx8ceA+ckP1v/HvfhO57M77nTXNEfSRL66PrYX/u
- NrKLDHMHGXT3mPCdY6bsGvMOO8ZM2i3mHXaKmbRLDHOHGHR3mH5rF33ZTPr3ax4NEo93u9FdaPofQyaK
- ohIwFnMGzdhON/xdbnw73LS/DUNpnDLX5qEI77l/DmfvHEGfgSigGYiCN1dMYHPFwvefmbL3THPMc5po
- Q9vyuF1Grq5ACRSLl//xnP8+n7dSdq55p11rJu9YE7RbzchONe3+MoyeIdIjDNvxZspuN++zR8zU/WG0
- DTOe1Qs06lw9iEcjhMwZE1PnjIngOWNiwpyxwL1KRvcp4e1Rgu1PErg3yei+JNw9SfD9SJh7kaD7kITu
- QTK+/0hzhPtpFrkwgxxAJOouJ8gOJ7zdTbCdTd5nV5OpO5qE7Gbi38lEhMx/FP75j4I+y1BAswxZLQ24
- lUGuH4G6Uf2JsQygzuFG8uJ/Dmy661K9HObPtIF4MwJ/5xrfrjWBO9aM7lYTuFPN6C41QTvUjOxOE74z
- zZRdacJ3pJmyG03ATjTeXWhCd6AZ330mdA+Y8f1fgvd+mbDvi5rfET2neV6q7nb1dlrriBgGdJiRGGPI
- 4Kjxa0xLBHW8ZVATqEgKBRiOl4uPp4EI8mCWwzpmlhJxdSOKLKXBDub17Yp38Q5oOukyyMK6YAc0nWoX
- o2hz3O1khmSYAdzwv5xH5+wUdWHXzZNiNm4Ku7DtvghJhQt/KlwwpZgtIBUu/KkQkAbeFOAIYVPAtSNX
- nlxkkbbm/FSnhaE+yiwXAB282UXCOU8LQ32U8wTQwStr/evlt4f1ffTp8fPn+bLpyrdbsu2OxXZqjBHN
- WDy1/uo7xOs1nnhJmh6aE2OH6g2eKGoSfHHMc3aQk8AX47jn6497j/lwFM9stYI9bjH92wKI9ZhJSy/C
- tGFfLdcP8vj79fx6rZ4b+Z+fF7dzzr0dU02LS7rfHsukaMQ84NOY8dSMyMXDl76M2B+oTz6mwOKoObp1
- ygvQsqj5eGBqjwfMKf+U8KSKxKycTOvSqJ2WNQ0Qc1IzoEliVmohYaOGt1mw8G72dc7OyojBG4VRN2MK
- XxxOnYwpkDicuhigETvxQTJBzElYWN4BESfhE0mbw43Uh92FEfehPPBT4QRjbtojb4KIs5l3HPJg6gIs
- BmG5KQd0nWGP39iTx80ceL6glf4nxPVwsxaeq8RztiPfmQZyXdSaY4AG1+z6WnbCopv56nq5eFhTt5hG
- cK9/+gf6IOx1E0oumNbs81V0/XV2PdnXHW8atpttlBbb6m36lnMWZvl2m/OLK5bSIC1rXXGtBmlak5Ss
- 6xDTk243nFPTMMvHcEGekn0vSs+9EM1S380PlO+HANT1dgE5Xg01vcfitYoPVOVAYbboECfJ9AlVIGy6
- OecJn2XAOeJnuLo7j2Z33yjl44BYnk+LdbRaq+PbbeZIRhvG3aSqAmBx81PzsV7NlXc47uerfVZK9eOi
- uJcwRAWgXm9IKgs4lb8+sLOHgaJe6hlrIOok3zqdtK3397fz2R35PHvM8s3vHr/Ol7P1/IaepBaLm5+I
- ecxEcW/G1vrSgXq7TBT3Cn4qCF8q1GX06Y5rbmDL/ZmZyT6juez3+Z2Md7v43/nNeiG7gnHyL5IZ4Eci
- 0Ksm0DAShfzIQIKRGMSb4OIjfmp2B/iRCIeKMEUHN4xEoT5eAD8egTjFcUQDx+PWcC7u9fPyFVbbmT8z
- 8xRa6y1ml9xUMVHUS0wNHUSd1FQwSNt6t57/rt4B7Q8058AhRsJrHZtDjPR7pIGIk9qE0DjEmPGEGeYj
- 3+2BQ4yCec0CvWZV9BxlUfrrL1xxhyN+elPEIC3r3ePtLT0z9RRkI970joFM1Nt9gizX/af/ml+v1XpK
- hIm+LglbyWmncbCRmH49BduoaThgtu96Pe+7jnc388/kEwUEvhjUYtiGfW5qgWzDPjc9R9i0zx6S6P70
- JucUC/a5qcWsDVvuB/n39ezT7Zyb5JBgJAYx4V18xE9NfoDHIgSkjzdl2GniSQ1+OnhTgPKBKoBa3tX8
- vx/nd9dzzoCvxWJmrhUwrnmnuUbOsM1ubdrESUKzWrDPvc3TuCCW05DAF4Pa5LVh2E2tudA66/QDYUaL
- zcFGyiJiNocYeXcqwe4PucjCS/LhpcIH9oX3MOruN/jdx+I7M4ThgCPlafE0/Ttcl4St1EIXrXO6H+jD
- UTrocUbTd+mFWL852h1C5BKH/YJXygisfFGL7zKFH1Cj2i3+bnHD9HY0bg99OsSkp8M+KorF9j2iKQ8c
- UXaqH9efrzhBOhTxUhssGocbuQ/6ibXM61/PucW1iaJeYqtFB1EnNQ0M0rYy3+Os0fc4rJc3yBsb5msa
- 9N1M80OS7XZ0naIgGz3jIO90OC9y4Lc3rFc2yHsa5ssZ9I0M6zUM8u4l5IWL/y1L86ss3p7SIq3iPPs7
- TdRqWPQIrsOO9O1hTm5vnyDIRc+PJwqyUfsXJwhykXNkB0EuwTkvAZ+XWvGcJTu3bI93iz/nyxX/7Rwk
- GIlBLDBcfMRPvWkAb0dYX7OqCI1DjPSKwiAx6/7QLIUX1Tx1jyN+ei7RQMSZ8c41w86RnAsGDjHSqxSD
- RKzUYkHjcCOnenFxx//5il1MmCxuJmcDjcSt9Mygo5b3z8VqETAO7uJePzFBbNjrpiaLQ1t22hbQGmJ5
- 2vZHLbs/akFSks9EMe/LR5705aNjrKNyQ9mHysIsX1an+yi5yEi2E4S4KOsMOCDmJA7baBxopGccjQON
- R84JHsGzU1s5cG5JyyFGcrmhg4gzu0hYSskhRmoJoXGQkXfR2BWzLhe5VrXABus56UDMyXlOWg4yFvIv
- vMs+kaCVc5ORO3yIie3ZnoJsaqFluk1RmC3a1j95RkVC1mPBu+aWg4y0lUttzjLuN916keQ3WgaJWQu+
- tgC8baUo0/tvWjmhcZZRtr33WZ29pPTCx0RRL/XxMUjbeqyjtKSNn3cMYGK0TAbM8tXx0wX1w5eOAUxi
- +rbKOmOb0v0hb9ZTpN5ag8Ss1Burg5rzcf1FHr/+Fi3uPt9H3Ue0pDNGDWNRCPcL4cciUNIIE0Ax/ph/
- W9wwU2lgcTMnZU4kbmWlRo8O3k+z1eI6ur6/k12t2eJuTcsvMO2zT08NiPWZCSkCwpp7cR/Fh0OzjVWW
- p5Ql/QHU9PY7Nm3rKqdYDdBy5mlcRbs8nr7Jp4VBvnbRVaZVgy23Wkym2bS4OYRkNlHLS01ONxXlX5ru
- crPhDXHBWlSAxGh32346xlVc1GnKCmM5gEjEzbFtzjQm5Wm3R4pvoExbWu4oGnm4yatVd0iv0Q3IcuWE
- lWR6wHJUtLtolZPdX6I4z6kWxZimZq4RYSqUzrim6UvtDwRgOZAtB9eSFVlN9SjGNe3VIAwjjU4cbDxM
- b2xamOtTK+jI/Dp9SpQDuk5mmW6hmFeWe2L6UtwQ65qpuzTYnGOkXrh1tc/pz+S4J2XmDjE96gYVpLzc
- EralJtd8J8Y0qWzYbABW0FJI52xj/UwuFnsIcFEaeBoDmJpFukgfDAEo5iXeDgNEnIlsSFTlG0vbsYiZ
- +kAYIOKUHXueU4GIsyJsXOiAiJO0YL9LutaS3iLRMNNHzOxOPleVwCYro0OcVURRz7lGRgNQw1wfrW3R
- EoCFsEeGzgCmA9lzcC2qTNwcd1RVh7k+UW6/p+REbynb9pPo+WkbjvtNWpGfRw0DfeqJknUIQ9mRppXR
- 8QH7PIeSlCHk4RavpmOQMkJLWJa6IlcrJ8YyETs6B6efQy3c3TKdmnXcPNPuSCuKc6qmgQAXZ5THAG2n
- oD2uDWA5Xnln9Yqck+CU3QIuuQWx3BZOqS3IZbYASmy168meJpGA7aCXrgIsW5s2XE7YRduAAJdM+mZP
- UGoecGDErToCB8JatCCMuNle2EntqQtwNEOQRzMEMJrR/I3ag+4hwHUgiw6uhToyIsCREdENSBBbLxoG
- +9Jyp/r5x6rgaAfatReEqRQ645r6cQhyDhlIzCoO6TaLc564gzE3uRtjoa6XM+Yi0DGXvsPU7VVFeuWO
- CqwYz+UxTyLZb+GktA2DbnLGGDDER3z9oXOgkZ4RNM42tndS/kYT9pjlK+gt4RNjmupUMIrfgTJtR7UB
- NumsWsK0vFBHuV7cEa4XThK9wGn0yuj+vIL9H3KWAvJS++gSX2z0EOTiNIxNUrPeRZ9uF3c37Rf1xUtK
- aLe4KOwlZQ+Lg41Z8RLnWUIZwARp1M5MhsyTCpQRLRMzfNfrv6J0+lYdA+FYiLflhDgewmdgA+FYaMnT
- EY5F1HFFPZuGMUy/z++uPzUzDgiqAQJcgpRGPWOYvt7frZsTpkwEtDnYSMwKBgcbabdTx1CfKmRETfnU
- EhXgMXZlFe3L5JgfBTeKpoDj0DKDjqG+KFc98oSp7WjDHm9ElInotawoVo0ybQnJkjg0+UQ6xPSI7cWm
- oFgawHBssoLmaAHTIf+SkRwNADiIi/zbHGA8xHTbIXZM282GdW4DZxuTdEtTScB2PBNmE5wA25GnrAvr
- Mdu3P2Q0kwQMRzPjjKBojncNlMX2dQYwEauTATJdhGkGd+YX7+2/qWXGCTE9tMrWqWO35bFQBexr9Hda
- lSrBBEnn0IZd5nFaadQCpiN7oQiyF5umpvMJMT1Hyt02vh+T/06L57jYpkm0z/JcvWiLm0KuyvaypV+/
- NR1ggn6Kzoz/4xjnrAaKRZrWn5Q0kUcbNPEpdJ6/XVXuZUOmqJ/KfVq9kVQGaViftpSsIo826dP3oepe
- pBGpOHdYy1xH1W778fLi1+6A88uPv5L0kMCJcZy+dPJAOBbiE3dCDI+s22hlRwsYDtKw+5094n6n2oqy
- TCO2iAfIdhXpU6y+96HJTpRtK0mN1hZwHAXxZCRgOw7l6wVNogjHQn9iNAq27WJZaqmxRZ5Ww20/MYND
- fQ75N1Vp0iyKMCx5SntImuNNA2lfxR4AHOdkyblh2ceVeJa1DWnugIlZPvGd2qLpGdNUJsQ+YkdAlujH
- MZv+najNOUZaLdwRkOWiqRPprpaDjEyh38dqxsACPAbx+XZYx9wMvQrqKXcUZos2uZp2nPCsJxq1lwnX
- XAI5n1zODBDiOmfJzjEb67k0WMQcIEa8+2NO1EkCsvAa0C7suImNghPieMSPiqiRBGSp6Ro334njhqo5
- biALK0v0nGNkFFduKXXIaE2JFjAdtHxp50mZpahX0iGGhza4b4/pF4VMHgqvjncN1CdggEzXcU9twpwQ
- 0ENNYINzjW+yfUy1KcYw0Tohdg/kEKsaRzX+omOh1ucg1YcAbdq5YzSe0RjS+nGn410DZWragJgekR6T
- Mqpi0htbjcJs6v88pTxnyxpm4gk6Z8Y6Jc+5tH+mdSsNzjRSW0aV2yqqyC2iCmgNETe1HQjHwhjq0DHH
- RxuXEsC4lKCPSwloXIrWIrFbI8SWiNMKobVA7NaHakFQ06BDDE9dRtZGqwSjC4Pubuc0hrgjbSurqWtw
- hvFIGxA42qMBR9oLpKP9BulIywpHOy+8xPkxJda9PWOYiMNY1hhWf8juWGzrrCyiZ0IJBNKQXaT5jlaH
- u6jmffwcfZ1/7RYTmaw0KNdGeiWiMa7pqSpfqSbFwKZ2Nx+OryVdK6WJPiCuR32aU72QE63DTN8+3VPe
- 8vWEaRF1RbS0hGPJt3FN1CgE8BDeEA+I4ynol1VA11XkaUH15PoXhNefPjXDoZRhYp2BTdGmLHOOrgER
- J2krUpdErOW2Jq/sjAqwGFnSvietCd+k4gYkypGfQEckhUhdUgNyXeIQb1Oqq4Fc1/H8V6pJIqCn201K
- dunkTz+nd3c9CjBOnjLMOXTtF+R7LBHQE3ztrgKI8/GC7P14AXoYaaggwEV/To7Q8yH/yDgnBQGuK7Lo
- CrIE39Qr/z0l7maoIaaH8p3j6XjLkBE/BDIg2yW2cZVE2+csT2g+DTSd8j+y6d+gDwRkoaxPbFKWjbL+
- Vw8AjrbiUJ366aubgbDppkwyOR3vGiJyzh8o00ZoX3WHmzyxTa0hpofSLTwdrxtWXfMqrVQvPEmr6TIH
- hbxZ3a0//BwLyqgXbgCiqFaQPAVaK8plTbNa0SnOCtHNunyjFCcQbdsPb9RmlE6ZNlqZuXLKzFUzOywu
- 3ojtfZPDjVGap3vCWl8YD0dQOTA0iu0AInFSBk4Vek/IAhEn9/pHrzvK9oc822b0DhHuwCLROis2iViP
- fO0R8ZIf3h5yXXksalJDz8BcX3lQo3TEWV4gPOJmZWPXMBaF1xkfM41F5WUayOFGIvVUewT08Bv2qAKM
- k6cMc54Crgtyolo91f6Pwdfu76l2B1F6qj0CehhpaPdUV9Qp5BoCehjnZPdUuz+TCzCo7ArpqWIGMwqt
- L7Fy+hIrNUm4+XzcaqKSpLDCjEPqZazsXsaqXTlGfVxCsfSQ6Tqk6ff2ZOuYdKUGaDrF9+xAUanjLUM9
- /R3M6XjbQHmXMBCaZb5cLz4vrmfr+cP97eJ6MaftIIDx/giEPAzSfjvh3RGCa/6vs2vyR+sGBLhICaxD
- gItysRpjmT5nBeFB6wnLsqAUTifAciwpi+8NhGV5PFAW19AQzXN/9zn6c3b7SNoh1KQsW/NVfSpo998G
- EWdedusZssQ9bdnb2W95Nv2tuIVpvuVtdLNYraOHe/I+JRCLmwmZ0CFxKyUTuKju/fawvo8+PX7+PF/K
- I+5viUkB4l4/6dQhGrPHeT59CyoAxbykMSGHxKz8ZPalcDPKKqtWnvlEY3ZKK8oGMSc7O3hyQrNwiHqZ
- y04J3YBFoa33BbGO+evjev4X+QUQwCJmUoPdBhGnWu6EtKAdTPvstHdQMI74j0XY+Wu8PwL/GnSBE0M2
- FL/JGp76KgyCUTcj1+go6j02jZxooy5PMAMYDifSaj1bL64DMyosmRCLc8sRiz8aPxNjmknxgq/Pm7PX
- X5bz2c3iJtoeq4oyGA/juL9ZLrjbEI0bRHf4IxXHfVpl25BAncIf51BmRU14C4krnDjbzfb84kqtflK9
- Haj3xYQxd1oEuDvYde826udzrt3CMf9VmH/0/IPsqPs5lv+LLj5QtSfONbYtEdW2brYUp7eiAYMbpa4C
- 0sSAR9zqn4Txa1zhxNmV1Xf5QNRqK+DsqSirNNrHyUv0mh3Ssmh+VcvgqTndlLFRjtw9N7UpHO/26ajj
- fdruVcLE5BprADEnr1wy4RE3Ky9ACiwOLz+b8Ig75Br8+bk7iNUkNVjM3PRTv6dvPPeJxuyy6pu+iBeA
- Yl7KaL8Nuk61KcFb235qtxDjtmE8Jm/Ubi+w9whrq7xx2xMND2p4wIi8Yk8jMSt5N0YEB/1Nkd4tz5WV
- BSOEZQCjNKlHWTcbYlGzmqUWcIttBRinfm523ZHHEl42wLjrf47V3FB6v3kAHaeatReLPVHYUa6tbbiR
- 23s95xibYlW8CcrXzwDqepuNg3aZ2rAyi/Noc6RMIPY4nEh5tqni6o1z33TU8e6b4WWOViNda7onfJNp
- QI5LlSi80k4jXetxH3HGdnrOMZYhPaDS3wMqiy21MFOI4zmU+dv5xw+XvPaPReN2Rm4yWNx8pL2uBGnX
- LvsdQj7em/In69Qt3PFXCaPcaSHEpVZrqbNDnl5RdjDyKNw46a5dklZ2CSJ1eLN8H2ki+pgIj5kVW24U
- iTpeNV6kPm4JaZ2BDjDS+7R8BaHlK96v5SsoLV/xTi1fMbnlK9gtX+Fp+TZbhCUhZ6/RoD2w3SimtBtF
- WLtRjLUbec0nrOXU/T3KdlH8Emd5vMlTntpQOHHqXJzLEppaRp4wzbdeRjfLT7/TVmE3KcB2WquYLDyB
- gJNUh+kQ4FLfIxEmZ5qY5nuOr1XLnDiwY1CD7Wa+Og1VfZzq0hnTlG43H6nNNptzjEwh4kvSC/UCgSW1
- WMf8McD80WMu6PfnxJimgnl+BXpuqqwjDNFpCOiJjsX2OaVsywLCrruUDY5DXGU1+VQHUrN+iZpIk13d
- 8a4hOhw3pAS0ONNY7g9H2bwh+gbKsFGmLnWHG3y/djztdHQM9sm7Ee/TOq0EYbEzVGDFqD9ETySnAlwH
- 9ZpbxPUcqJYD4PhBviKJAJ4qe+Fc2IkDjOTMr2Ou7wfV9MN2UNvEJgXZyKPAAGp4T0uLD7mYYHZhw02Y
- ptcebdLEdUE1xPC0U3lZ12ejhlfQn0wBPZmC/lQJ6KkSrPwmkPzWdG2a73iIshYyXYT9drvDDZ42abIH
- dEdzDwVljxud0UyL5fx6fb/8tlovqTtrQixunt5VcEncSnkkXVT3rh5uZ9/W87/WxDQwOdhIuXadgm2k
- azYww9dNho/uZl/n1Gt2WNxMunaLxK20NLBR0MtMAvTqWReOXDPvcrErbcbBDpQXlyCsuVezaLUglh4a
- 45q6mpgq6zDXR0nAAXE9TQ1KNTWQ6Wq7KWr16rg+ViSjhZrepAxRu7RjV78QlQpxPC9ple3eiKYWslyy
- crz5QhI1hGmh5lw317I6dBaHGHldOtRgRyF16noCsJCv3Gk9nv56IHsOkOUH/brMVmj/V2rnzgYhJ7F7
- Z3GA8QfZ9cOxkJvcJgb66J08gDXNAd08kEbs8u4xHmkAR/zHTZ5t2fqeNu3Eus6p59gdTIAFzbxUdWDQ
- zUpRmzXNglG2CbBsE4xSSYClkuA9qQJ7UqnVulunkzrF3fGmgdgt7gnTQm9YAK0KRvdahwbX/Jo38mxz
- uDHaZQfB1Taw4Wa05E0KtpXEnWcgFjKrWozuVBRmiyqeL6pQo2AawSsm9owcEHb+pHzX7ICQk1ALGRDk
- IvW6LAzyCVauEUiuqUtu3j6RtpXYzzIgwEUrEi3M9tFPDDorSm0xELaFc2HuVUW/f+72gZRtlufpO4m5
- pGMtMlEfLi5+4ZktGrFf/hpi72nQ/neQ/W/Mvrx/fIgIE3d1BjARqmmdAUy0ak+DAFfbTW574GVFtpo4
- 5i8rwiq7AAp7ZRNhF2+ZZ93DmPtYvaQqj/DkJ9prp4xtIjjiT9InTh4ZUMTLvpHofWwfPMLC2S4JWFV/
- fPMWksyOAYnCzycGDdibFCO9iwVQwCtOq7zu8umfucE0YucXJwaN2Jtv3dVHImpLYLUx066s9qxIoMmI
- +sf8WzfWTOu/WCDiJPW0TM4xyhueyazU9ENEuq2mL4aGCtwYpBqsIxwLsfY6IY6HM5QNoF4v57Y7PBBB
- VZpVSU7OAYSdjDErBEf85HErmIbszXNIfZYdFjSnxbYprgTD3LOwmTa45ZKYlTwYjeCOPxNReYh/HKmP
- YM85Rnk/Lwif3ZiUYzsNG7OqbliAxuA/Lt6x8+4Y0tDCiYAs7JYMyIMRyJ0nE3Sc7VA1+6RtHPHTB/8R
- HPOz84fnLUB3BLcV5rCgmVuWCm9ZKgLKUuEtSwW7LBWesrRpTTKq2Z4DjfxcYdGwnVvFmvCIO4p36kd5
- r2VXISti0rjgNJ9zBrQXJwZkuL7O11/ub9rlD7I0T6L67UApYEDeiNBOISJsw6szgKn52ona7rVRyEsa
- m+oZyERYpdqAAFeyyckqyUCmI/367B4HfdacAQGuZpcUJ7sThwDGVEDcTHVTa3KMFoN8IorVF8Lq8/Wa
- fvdNHPbLLnVTiXPkJxYw74/0HCYZwERrowHzFfu/ltv6ohlPIPt6ErA2f7/YbjZka0+iVhmXaZUkYBXv
- 91wIynPRtln2hyoVIk3eJTauQ+LXJf9BsngjQtcEzpKLgrCWugOCTlHL3xKGswUNZ7PP0zHL66x7ainN
- CRfW3DcXl5fn/1RtjEOcTR9QNDHUdxrumv6tIipwY5DeQWqMayK+QTQo3bZ4mC3X38hT6R0QcU6fS25h
- iI9SOlucZrz7fXFHvN4BcTwqs7avaIl9ZhgH/csQ+xJ3N7s1nJ60tHiSPwliBEjhxKHct55wLFX6JIsa
- tUdhnjclcp7W1FsIOpxIIuyeirF7KkLuqcDu6XIZrWZ/zpt1mon520VNr1raJa2qsqL1yB3SZ93xtTvT
- 2/aRmp8pTg2DfOJNZpw9V6vTpr29DNrmWTaHG6OC64wK09qsCdv+JChOnbOMx2LLvnwHNt3NuDf1VvUQ
- 4opy9SeOsCF9VvKDBeCuv0h/Dkc1y9xRQ7gGM4r8I/sW2qxlVjXLp8U9J8/ZLGBW/8E1ayxgXs7ubthq
- HQbczWodJdtu4qa/2aKO/MgMFGYjPzQW6vWSHxuIByI0u8ryEmNAvV5eslj8eAReAkESK1Z5UJ3UfVx9
- J9kHzPJVaupFE5KUrXUON0bbDVcqUY93d2B7dwfLe+TkuCOY16o0FmXBLpgB3PbvyxdVqxOW5rI50Ngt
- scYV67jtF7VaQJ9h1kDTKWJOGgyUZZO1LfVxOjGa6c+HaDaf3TT7M8aEXWUcEHESd7iCWMRM6rHYIOJU
- TZjpK8IDKOKlrCHngB5n9JrVz1GSVemWsgL4mAeJSOmXWxxiLA8p76QV6HFGT3H9TJhpivBIBJESvkyx
- QY8zEtu4rpmnrQuQGHX8RPoABmARM2UlWwcEnOqVMG0dGwAFvOpLHlnwV8+ckk6HETc3hTUWMBdq9Wlu
- euiw6f6kPspZl38QpgoYlGm7Xjx8mS+bm9ps0Ub7+AUToDG22YH4gDsw7qbXWS6N2ynvyl0U99ZVzvVK
- FPV2az5S2oSYAI1BmxEEsLiZ2EqwUNTbvHo/HGj9JVyBxqG2HCwU974wChSIRyPwynBQgMbYlwn37ioU
- 9RJbOiaJW7OEa80S1FpRdi6HWNQswvO4mJLH1UEhJUDPeyME50dT4o11iJOEX2BqBjBKUP06Urdy7wOe
- /iEljb+UCbqjI3eSWbKgpQrv2Xefe3qzB2rrNH/7nBVxTlhrySUh64JaYfUUZmOdYgdCzkfSric2Zxpv
- 0q28459ikf76C8Woc6BRPaUMocIgX3PH6L4Gg3zUuzxQkI1+R3QOMia35HLBAB2nasFyHhgLBb2MxDxh
- qI93muBT0/3GukkDaDmzp1TQLrohIAs9bw8Y6vvr/jNTKUnUSr0rBglZyVmnpzAb6xThfNP8tKLMYjMo
- zMa83z2KeXlpeSIxK+OxsVjIzLXixj9pcwQtDjcy75YG427eHRtY3MxNX5027fOCVa9rGOQjp66GQT5q
- ig4UZKOnos5BRka9boCOk1uvWyjoZSQmXK9rP/BOEyyfu99YNwmr1788/DHnjqHaLGJOfx7KqmaJWxTx
- UkfaDBBxct83gAIkBvUdmgEiTuobLgNEnfXxEG1klyeqop/NFHNmCMczHlG8U0RBjqg+hW12aXyv0L3Q
- ew4H8f09klnXjMYT7xNPUOO9RxKDPvMMvt4EvN1yYNDNKDW/euZKnH4jvnHSMNRHrIdMErY2+3JypA0I
- OrtNNxnSjgSt1HdKX7F5J195s0O+YnNDuh/2CcO2T0AX8U3IV2TGR/d38rsKnQONrHcHNgubeU84+myT
- PjM3McfHLoM85Q8nFeHUU5+atN/HM5Qm7LgZ1wxeLeNuuHfi4dM8EqSdFE3Ksv1xvbq6kNXSN5Ktp2zb
- /NtF8yPNdqJcG2uWgQEizoRW4+kcYqSW0AaIONs1qL7TZsu4tM9eiTgq4/QQ5fEmzflxTA8esTlw/7Q7
- J1YZmGMkUnNKgZE6x0gkxvtXzDEWSYhIxHlNnPXl83gi9jvWhCSjLkFiEWt9ncONUZZwpVGGnal4p+dG
- TH5umhWDtu3qT2puEzecIZkQ6ykths/yg4MaNk90lSSy1FKHk5YSHfFMi3g4btKfh/eI2ZpGooaUhGJS
- SSjeoSQUk0pC8Q4loZhUEgqtBOtSO/DKDBMh6jvcPlc3PX5INYDrJsR/r8DjEYPrHzFe/8RCEF8Zahjq
- i25WM6ZTobi3XWiMq25p3L7kn/USPOtmKJFRf3QcZORUC0gdQFmRTGNgE2d9RxiH/GokKySAyQMRkpTe
- s9Q43Egeb3Jg0K2Wf2ZYFYb6uKfas7i5mWSZ0ubSQTwQoZvwTjZ3HG7kJYcOA25WXxnpJze9z+n7VNoc
- amSUgicQczLLbY3FzEvu2S6xsz1npuk5mqbn3DQ9x9P0PCBNz71pes5N03Nfmta5UM+GmhxAW3nPa4Gj
- RVX8ylr51ePwRaKvAosrgDiMBgTYdqCvJu6QgLVtQJOVLYb6eIWvxgLmfSbbasVTSEPCVQBxOOM58FiO
- GowJzcuAwxeJn5ddBRDnNBxCtp9Aj5OXZwwasjfrQrQbMdLlGoy72zvDlbc0bm9uB1fewIBbcGs1gddq
- IqBWE95aTXBrNYHXauJdajUxsVZr1h0lvkUzQMjJ6fkj/f6mE8x6/noStP7NuGLnDWTzZ1bqISlHXB3d
- xADfC3k6sIahPt790FjcXKVbNVGOK+/wUX/QFegOMxJrXjsyo50zlx2exX76K3Gyj4a5Pvp0U2wmPHN+
- OTqznDenHJtNPvydmHoGCDnpKYjPSlcLY7arIURxnsWk5oTNuuaE/JXPQFk2tU5TnIro/OIq2m62kXiO
- m1qKJMckE2NF2f4g2x4ZdY2gScLxc1D7jL7DFXcaX7ztPtrkx7QuS9pUe9wyNVp09T7xoitfxLqKnvfx
- KTX4EU2PJ+LTds+OIlm/WTYvXkLsih+JIPPL+UVQjMYwIcrH4CgfsSj/vODfh5ZFzOqJCi6TbMnEWMFl
- kk84fg4hZZKrGY/38eqX94jXaXzx3qGMADyeiNy82bF+M7uM0PiRCPwywjBMiPIxOApURmyfY/m/iw/R
- oczfzj9+uCRHcQxAlESeSZqkH8MKDNAyNVpQkTFqBM6iOOY5/1oNGrD/DL9xP0fvXN+Corl7DPHVFctX
- V7AvJaxba2Kwj1wkoS2W9odyxzo/iQE+WSVz7keLIT7G/Wgx2Me5Hy0G+zj3A265tD9w7keLub6udqX6
- Ogzx0e9Hh8E+xv3oMNjHuB9Ibd3+wLgfHWb6GJ+Rgd+PqcKeeE87xPUQ075DAA9tXaYOAT0fGaKPsImT
- TCcOMXISrONAI/MU3TNU27CqSpkiOzGmqdl6uxlB2ryRtvkFWI+Z9rbaQl1vOz7FO2Od9ZjpZ6yhuLfc
- /IvrlajpfY5FUwA9x1XyGleklLBZ03zaHLsNHcX5U1ll9TOpqMUccCTmy2z/Lt76AaxX2C5t2RPSkmPy
- cJu/pPGXDt+0y4mShjFN7XbXIfcbNkBRmPfatyP38DPrPtusaa62F9EvH6iF90C5NoYK8PxCc1h5j5pv
- 3DyjxlMufiE6JOFaaKM70DhOO6JEtEjCsVzSRlBaArJE9KvqKNOmOveqp99MV97HpIxjs7C5e2bVq9Eq
- 4egNARyj/e10pDge1DIwKSsaosLiNtuMML7BgQ1alL/W87ub+U2zyfnjavY7cQc/GPf6Ca9FIdjrpsxP
- A+nB/nnxsCKt3toDgCMiLFdgQIPr9/ndfDm7jdTOoivSTXJJzDr91tgcZiTcEAeEnZRvO2wOMRK+G7c5
- xMi9PZ67007tLtV2IneEDoNH4YvzEufHgBgNjvh5mQzNY9ws5slhzQRBlrMhEavoE7/g3j9T4YvDv3/C
- c/9Wj5/Wyzkve+ssbqZnjoHErYwsoqGD98sfN5NXc1XHmqRaNi4uEoqgQxxPXcXbmihqGM30dXY92SCP
- NUnOKlM2BxkJK0wZEOIiTJmyOcBIyfYGBLgo0/8MCHARsrfOACbSukomZdlI0+kGwrIsqKm0cFOIOHVO
- ZywTbcKchlgeytzfHtAcy9VKfUYZT3/yesKypAXV0hCW5Skt0oo4FuKAlpM/5IXglp870ALCtrvM3z7K
- h/Ulnb6+qAOCzv0xZwglNdgWq9WjPDS6WazW0cP94m5NKtcQ3Ouf/gyDsNdNKPtgerB/vZk89CIPNTha
- cdcDpoNS2J2ONw3rKi7Erqz2FE0PmS5aYTcQuuVyOn5pcNT0vHTT85KYnpdOel5y0vMSTs9Lcnpeuuk5
- X3+5v6F8njEQjuVY0D0NM5ia7sL1/d1qvZzJh2kVbZ/T6YuSw7THTimlQNjjnp5RANTjJZROEKuZ5S+f
- aUnQE7alWbuLttGrA4JO0obPNmcb1cbxNJciIEu0yUq6SVG2jXI7T4DmmK9X17OHebR6+EM26kg300VR
- LyEv2yDqpFy4Q8LWRbT59RfVKCUMsWK8L0L79SE/QstjEbg3ceG5h4vmqZCtS0KzFOOxCLxMskDzyIKb
- RRa+HCIC00GMpgPlQ1GXxKy0jx4hVjPfrxfXc3koLa8ZFGQj5ACNgUyUO69Dg+v+039F2424IMxX0RDL
- QxuU0hDLs6c59jZPWoZ8IExLQruSxL4K+R+JyqpZomYzCIrLQlHv5i1E3dGmvXmHQNkt1IBMF21jx4Gw
- LAU1c7aEaZF/uNhuNhRNh7ievKBq8sK1EGZyaYjrEeSzEdbZSC01iTvE9dQ/a6pHIqZHkO+4AO641FI1
- HeJ6iPeqQzTPw/xOHaS+jY3zfJjeJKJtWUzuDI5o3HibY5arVcPadWIFNY6Fu/6m+BYp1dthiI9Q7poY
- 7KtItbdLAlaZ1tkT2dhQgO1wlIVxs4UJWTmgrpdz1fD1Pu3rbE92tRRmk3n4XzyjIlFrku12TK1CXe9z
- LJ4/XlCVLeXasvjjxTY+RA9UYQ8CTvXCpFkesCRbB9T1tj1xVQLIAmBfJsecXoBADjfSXpZl5ZbqbinM
- RnrLB6CAN90n9Ee0pVxbUTKLkR50nbIRy0nIDnN9oq62sUgpzXGHBK2MdGwp0JZv45qhUxjim/4m3MJA
- X8FPxMKXigUvGQssHQvCAtQW5vrqMi9fp6/lY2Gab/1lvqROPjMgyEWqGw0KshEKGo2BTIT+vAFprkNa
- wE3EyWLUgEdpP7Zhh+hw3N/O1WX7O9z1v8iohLF4C0N9UXHcM50KHbwP86/RbHV3rsroyT0ZA0JclIF5
- BwScrzKHpGRhQ2E21in2pGn96/LDP6PF3ed7ckKapM9KPV+Xxuys5ABw0795q1PBOnOTNK3yP6OtfOY2
- 8fT3kTZnG7/LFtmupNlaxjKVkdqEdXqtZECmS43zq1n+14sHWQ43CU2xArjpP1SyIUpZXdCATBc1z7s5
- vbnXN19o65U6IORczR7aD7L+mP6mAaZhe/Tw+Imw9CeAwl5uUpxIwDq/DkgKHQbd3IToScCqdpn7jWxs
- KMR2xbJdYTZ5+OLP5jMT6gOKOaBIvITFU5WfC7x5YBn0rC1HnjX1ezMrjys/wbCbm8pL33Os6kiyUUGI
- K5o9/sXyKRBzXi9veU4JYs7l/L95TgkCTmL7AW45nP7Kr2d0GHMHPQOOAY/Cza8mjvtDkshTB6nfg+oh
- W4DGCEkgX52kfufVSz3psV6xrVc+a2A9hXiwiPyE96d6WK4ZzTPL4Gd3OeHZDarHbAEeI+QuLMfKB1a9
- dgI9Tlb9psM+N6ee02Gfm1Pf6bDpJg92AOMcbaecU9WZJGjlPigAjvgZ2ddmETM7QeBarf2RW6W5NGxn
- JwdSk7U/kqsxDcN8VzzfFeoLSVhLMCEGZeNcrwSNxa+KUQkYi5lhPLkl5EZ478EyrDxZjpUn3CrXpRE7
- O7WX3tKKWs0OFGajVrAmiVqJVatJolZipWqSPmt0N/8fvlnRkJ3YSUVGzfs/B9TdeD9V+z3smRvpqRoH
- sZ8OX1/VOCIooXz1ekh3FTbgUYKSyVvPs7qsFurzXvG9V15vaMJPqP+Bw3htAETkjRnaFpjUL9cODchg
- I7kr9EaN3qNleHm1nFJehbUV/P1z45igu7EcLRV5bQe4j27+xmtD4L1063dWWwLvp1u/s9oUIz1143de
- 28I2aFHk431+ET18mqvZJpPNBuXYaB+wGJDjokx10hDHo95Yf5dlZlwk0Tatpk/GwXgnQrO0A9HaMI6p
- 26uNsNihA5rOS3mr/rj5fBFRlu5xQI8zWn2ZnbPFDW3bD5v0grVfPIKDfs6u5ghu+n+LNsciyVNVYpCy
- mgEiTpX/sl22lc8Lz60L7BjUB+434Hn7rXlc6Jd+oiCbKs14xhOJWfnJCRmgKGERxuxqf+GwCLbBjkL5
- 1nUgbIua2aN2zaZ8nueSqJW00x/EYubuKU8TnrzHcf9LmpcHvr/DMb+6F1x5y/rNsyKZh12C6zEjWh0Q
- chkF8f4ItOrApf12wjxpBLf9XU1Hs3aQ7eoyLM3VQbbrtJpW/xBwVj+foLLjtutsvUNUj8iJqdqH6lti
- YoQTBvoEzydM39dP6/s/5nfqyPY/SE8QSGv2+9vF9Tf6g2lioI/wGOoQ6KI8dAZl2/77cXbLvFoDRb3U
- q9ZA1Em+ep20rezVlRDc66emBrrGEvAzOVXwdZa637/OHh4UST9tjcSsnLTWUdTLPVnfudLTViM16/L+
- L5ns8+W6rfya1ddXi3tiGea1TIlGSCKPY0okSsL5JHasLpXpyaaBiJOaOD2G+MhJMHCDcTm7u4nkoWk8
- uc7XEMtDGB07HW8Zms9OSI6GgCzRa1Y/qxCZWlFNbTJE6FKNaKx4xCUNdMYypU+0FJTH24Yi3uRptCur
- 79GxEPEujTbH3S6lLB43KrJi7jJ5IGXZdZOybG1nu0iifVo/l7T0sFjL3HyqrsKSnD1l2Q7l9M3VesB2
- iPSYlIxsr4OWU6QpLdEU4Dj490B474Go4/pIu9YW0TzXk1eSlYcaXHNyhP6Nhmge/SUWZQ0pBzSdpzdW
- VKXOGcb/jc4/XPyiFmVQK91H8cvPC4IXoA179LBaRQ+z5ewrrX0LoKh3ep3pgKiTUG+6pGlVHx8fvm/F
- uezyyr/+pHht1jRvsulvX07HW4Y8K9RuRNH0b58tzPQ1C8jKcvBAOq+BgmyUJ1GHTBdxXEdDbM8uPuY1
- tcxzSNNKHCnSENOzy+MnUtI3gOUgPqbus6mvKU9Y9h9APV5qJnNg211/iLZVHdHmKAEo4E3IugSy7A/n
- dJGEQNcPjusH5ErJohSw7OJtXVb0hO84wJj92B/IOgUBLmIhdGIAU0H2FICFfmHQVf0gW344FvmU0npN
- Jgb6ZB0ayRqGWnSYrGnORFQe4h9HUmbtIdMVsNcsgiN+8tYYMG3aiU0bpz2jEphe+w2Uaeu2Q2xaOs3k
- i+h+Nn+I9k87Uvnk0YzFU2238HAny1i05k1dYKzWMSnSxTtEusAjFWWRciMoFja3Tbh3yA2gaDwm/x65
- lonRLt4lmnOnmLskgzDoZpVQ+N49za+Urf96wHE0p81o9Vso7GW01y0U9jZt06rcEwd7UAMepS7DYtSl
- L0JN3bUFhC13m184t9QgQSvnhhokaA24nZAAjcG6mS5u+gW/RyR8PSLBbO0LtLUvGC10AbbQBa89K7D2
- LGW+1+l41xAdhCDXgQYIOKv4layTjG36O6VZ/rbq/OOBspvSQJgW2m4PAwFZApqFoACMwbmjFgp6iXd1
- oAYbZQayOd9Y/Yu2bdhAWBbKxmE9YDnIW4eZlGWjbR6mIYbn4uIXgkIebdPk9O0Zx0RM4xPieMgpM0Cm
- 6/JXiuTyV5ump82JcUzUtOkQx8PJgwaHGz/l5fa74Hpb2rHT72UPGa6PV5R8Lo+2afK97BnHRLyXJ8Tx
- kNNmgAzX5fkFQSKPtumI9qR0BGQhp7LBgUZiausY6COnugk6Ts4Vw1fLuFLwKjllhME5RlaaOem1ePgy
- W32JCDVWT2iWh9kf8wvy3t0WBvoIA5km5dj6d0N78URU6qjjVeuwpqq5RtZqpGYlTcGyZ1+1/6YudW1S
- g229fFyto3YW8/XtYn63bgb1CL0w3OCNskmfsiLKhDjGxTYNCGaKJsSs0iTdHyh7dk5QeePKv2fi+T0u
- 1jJNifoul+u4/JEJJQSCe/2EEgOmvXY1CiCqKvAZ0CxwNLWH9nwZ8rSZBm8U7h3RcK9fZciQAA3vjcC8
- 5wPttauMne4DArQCbwyVI/ZpHavhpcBbbqtG4wbkZ9cCR2v3j+1Hf0+nxwmJqOC46c9DWmX7tKijl3NO
- NEMwHkNW6vtNaJxGMinW4R1CHeBI3EIBLw30yTkcs87DEZjFgPH8P67my3b7VFISWBjom96TMCDQRbhU
- k9Js689XakLF5HUTesByHI5EhwIGx18Xl5fnk9dHaY+2aZUnDnFW0SwnyrF1702atzJdQUM0AwYtyuWH
- f/75UX1/oj61b1+UU7aGxHgwglrFJCSCwYMRCF97mBRmi+I8iwXP2bKoOc+mf/YOoKiXm7qjKdv+Gonv
- IXKJg37i9youCVqTi4xhlBRoo5TCFgb6ZAHG0EkKs1GWKHNJ0JpdcIySAm3cvInnyzZT8a67Z0EzaWKI
- zeHGaHfgSiUKel+a2X0FQ9uRjrXbd07WGCLdUvrkGO9EkAXCOSNznTDIpz7KKZK4Ut+G1GmhBpAEXQ9Z
- wGgy7Y4pw99wuDHalGXO1TbwiDsiP4EO74lAf2YM1mM+bp/jiu1uaMfeFACMYr3nHOOQaVgFiI07flVW
- 02u1jgJtvCdcI2FrTfm60wFBJ/v5MGGPm37DDNYxt1MPGS29AXScXapzsq2OAt462tY/ycqGAm2c2r7n
- XGOTMViXPZCmNZrd/n6/pHzSZ1KQjbJhrEmBtuTIsSVH2EZNPA0DfZRVcywM9HFuBHYfCOMSJgXaBO9K
- BXalzdBowjNK0Hau18vFp8f1PFrN1+RUtGDUvS2PBVfdsLiZtPIoCI+4o81bdLe4CQrROSZEuv/0X8GR
- pGNCpPpnHRxJOtBI5PJHJ1ErvRwyUNTbfjdIGM7HeH+EcvMvWZOGxGgN/iiUbVgxHo3ALiM85QO5xNVJ
- 1CoLvPOQe9rz/ghB91QzWFGaNX5mj3/Rs7xBYlbibdQ4zEi9iTqIOck9IQu1vYu7z4z0PFGQrel5ZE9F
- XB8rhtbAIT/1PrUMZCLfnw6CXE1bokyyXZYmdKlO2/blLX3FT5fErNTUHDjMSE5VDQScX+frL/c3vKvX
- WNzMOd8BBbxxknyIqvSl/E7NChYMu8/VyAZ1vM+BYbf6laNVHGBsP3MUx6xON2StDkNuYt+wYwBTkuap
- +ryPcekDCnmz3Y5ulBDooiztbGGQ70hPPbcVqv7KejCRJ7Jpa8lWtFqIm+zUYY9bpFUW52x7i2N+3mg5
- xGMR8ljUtEnCGI9FKORJhEQYeCwCs3Xg4LA/Ws7/vP9jfsORn1jEzCkiOg43crrTLu73UzvRLu73b6us
- zra8x8p2eCLRR00c2mMnvguwWcTczHOsWOIWRbxhBcFoOdAs+UHvKzo0Yg8rZEbLmKGMoL7Phg1IFOKM
- fIgFzIwmOdga38f19pmsaijAxmkmw+1jRhf2RGE24kwAAwSczRhEwANm8ViEgIfA4uEIzCXvPAokTltQ
- kdaIxXgkAr80EiOlkQh4joX3OaYsIWBAiIv6StEAIWfJaGUrCHDRFgOwMMBHWxbAwixfvyI4+e2kQWLW
- gLciiGNCJGqDDnGgkaj9Q4NEreS+IrZGvfVjs0UUpwkKK7xxyIWQi3v9jMFzSIDG4D4CvieA2jZA1ui3
- fhPhd1VMuasi7K6KsbsqQu+qwO4qb1wYGxNmjd4iI7e39/d/PD6oUoY869tmUbP821Na0VuToAGN0rVN
- GMNGiAONJI70TOLQsH1bV6xzVxxspKyzb3OIkZqPNQ42PsdCNvuyimM9sbCZslmmzcFG6nM3YLBPPB/r
- pHwtONITa5mbmcjzu/VyMSe3pCwWM38LaExhkimxqM0pTDIlFnWaCSbBY1EbbyaKe8lPqMXiZlbDCuD9
- ERiVMGjAo2Rsu++ZoJYNJop7Rco+XZHWXm/Q3RSjd1ME303hvZuLu/V8eTe7Zd1QDYbczevSoq7e6OYe
- 9XrZhadtGI3CKjZtw2gUVoFpG6Ao1FfIJwhynd4E826sToN2+utfjQONnDoCqR3adKa/nLFhyM2rc7Da
- pp2USHwdY5CIlXvjexTzNgvis59o2zAahfVE2wYsSs182wkJxmKwL6RG33k2h6h+AV2sKMwWlXnCMyoS
- snIqLbiuYrU8kDZHWaR5VjAe5g6EnPTO/4ChPsLGNy7ps1LfUtkw5Ga14dzWm8zt8+v2+2r1RV4tyyTa
- oA0kgGM0Jan6A8ffw6ibPtfbYmFzlvzkjtGABjhKldZVlr6kgaEAzUg8+rti0ABHad/yMBoIAG9FeFA7
- wpPbCD0F2ahl3gmyXe12rHf3N5xiyqFt++Mn3pUPHGwkLqSgYajvQ7uYPFPb0bA9Y51shpwr+c73GOwT
- vLQUWFqKoLQUeFouH+5Xc+qKLzqHGBkrkdgsYiZ/LamDHid9DoND++wiTC/8/uZVQ8LVt7TfHnT+vcAT
- g15HOLTHHpA43pSpq6Pgn3VDI3Z6EdJzllGt+MR7X2iQmJVYEmscZqSWxjoIOJuPH+K6rsjSnvRZOf1a
- SDAWg9qvhQRjMagDbpAAjsGdIO/io37yxE9YAcRpP0xhbM6FG4Ao3ZAgK8dqLGSmDyYOGOQj1vAdA5j6
- pGfdPIMG7KyCDynzAr5jcHHYfx6l+zjLOe4Ohb28LHUCPU5uEWjxIxE4BaDF+yLQGyAujviN/ClYMUzF
- WJzAGJj/cNxwCr0BRbz8OfugAYvSjofQG/qQAInBmU9ssYCZ0cQCW1echhXcpqKPa/QUZqMOvuog6twd
- mM4dVEuJ8GdZTHmWBf9ZE75nTYQ+BWL8KRABT4HwPgXkWfUnCHGRZ9XrIOCsS/rgtsYBRsZc+AFzfM33
- jfzvyCEBHoP8xaTFImbmF9sujvnJLdqeQ4yMtucAIs6QL44Rhy+SWpRgG6tF726oXyx5PL6I7XzZu+N+
- k1b8eLoFj8bOTPD3vdavvKYxpBiPQ28gQ4rxOKyp+R7PSEROwxwwjEShfgMM8EiEjHfyGXbG9FZczyFG
- Ve++w0Puajzxgh9xW2LFWi1+p5e9Jwhwkd87nCDYtee49oCLmLtaBPBQc1XH2Kb1/XLe7NnGeQPk0Kid
- fmcNFPU29QZ5ERKAH4nwHGdFUAglGIlxrCq1KcyW+AEIrpkWj7Hsgdfkj0p/KQoJRmM0KUDsLqCWkWhl
- nm3fopqfw22NP56oyyooUiPwx5DVr3rVRVwVC5P4Yp2HPlvn48/WeXAeP5+Qt0MvZPw6hmc7qMAzNN54
- aVWVAanW8uMRZDfvUD+Hxmkt/mg/6V87gIaxKLKibefZhoXqNSPxDrLoyOquCAkKaZjQqOSP6kwU9ZLb
- NDqJWg/H6lAKtVb9s2x+ck/csqDRmsk7svIVzDg9748QUo+K8Xq0+RybX8qccL8/oLwUo+WltiRKQIzO
- MBKFX3r1vDdCSDksRsthEVwyigklozpml8dPAc9Fy3sjdE9pQIzO4I1SZ/uQEAr3+8mzlADeG6Edco62
- m4AovQON1LX/1O5C2+/MSIYDjfR3WpXMAAoFvWpkm1kGnlDcy+rkdSRqzcvyO6sLP8Cgm9l7R3vu2mrw
- nOJAx3E/t4Yc6WW2XQ55b5ln3sEeN6/t0LOYmfulAiRAY6hrY2ZuHcf9zXysgAAnfiRC091LgoK0ipE4
- w/BrUKxBg8djj+9pNGpvF2Xi3pWO9trZXXhTgMZoi7+QJ9tQjMZhP+W6AY3CeBNtwyNuXtvhabTdkJex
- qova3MxJIlMAxuD1M7E+ZtOdkjVopgLGedDgGerCIp+z67kBxtwhpbkYK81FYGkuRktzEV6aiymluXif
- 0lxMLc1FUGkuRkpzfSnRQ1w/C2YMw+GJxOs7+/vNIX1Nfz9TBNV1YqSuE6F1nRiv60R4XSem1HUiuK4T
- E+q6sD7/WH8/pC/u74eLkDpa+Ovo0P79eN+esYasDlrO9fJxRd7FfqBAG6d8NEjQSp5TMGCojz6x02Ix
- M+MbQ4tFzfQZPhaLmumltsWiZvpzbLGgmfrVX09hNtaYtUNb9j9njN1fThDgIr5E+RNaYUv9kdoO7xjb
- NF8uPn+LHmbL2dd2VybGizBMMhqrjjfE9TURx0ik8+i5JGZgWOGLowq/ivEQYhJfLHqGtGmfnVxUO/SY
- nV5ww4rROIc0rd4h1kkzEo9RuMOKsTj0pj+sGIsTmJuxmsU4iPNqGRL4YjAG9wHeF4FcHFuwz61GG/hy
- RY/ZGR9hIo7RSGElca8YjZMdAqNkhwkxolhsg+MoyWissFKsV4zGaaruLBWBsU6akXihJZmYUpKJ8JJM
- TCnJ1EEqb75DrF4zFo/TgcckY7HIr+5Bw2gUcmcDVvjiNI1GVkcX11jx2N+eeb45a36q0uaTRMbCwC4O
- +ZvEY+t12rWTvz+Cv5BrdkygN1MHDPSRq9kBs3zN7Cr+vrAuDvoZI0k66DhVuPg7cdhjwEDfNmbYtjHo
- ordRNA40ktsiAwb6iG2OE4S4yG0LHYSd9Hc5njc4YSvEjK0O0/3OqN4MErTSqxiNs43E5bXdlbXlX/pp
- 5eQq1oYBN8sJuJjfI6PfITNW6AFX56F+x+x+v9yUEPRBlQGzfPK/Em1HnFj+i7GzDmpBonEmKFmsbaam
- CJAWzfhJfKyfS9lHf+O8ngMN/iiyOKGO34MGfxTGPQUNUBTmF+/+L93bcbOynu1qzj04kYj1U7qjfl1l
- opC3Xd8j2mS1qBmnbOCQn/1p7thX9wFrZ3nXzWp/7NYl4eZzk4ci1BuhTiHOn+j2gYXMR+pSMj3l2jgD
- V+jKYc0P5VYc6DpFubZIW5iW6tRZwNxMD8qKXUn29iRgPc07aY6JqzQm2x3DWBTqxmWQYEKMKC1eguMo
- yVgs8o5xoGFKlPBLOlk80U7t85DbpDmASJyvZ/CvCYO+IRz5cpCzfgq8bkrAeinedVIC1kfxrosSuh7K
- +Doo/PVPfOuecNc7wdc56ZcOTNKkqT2PIn5KOXJLgcVplk6jDygDPBCBu6P5k3c3c/UrP2l8KcJtunpa
- rvyGq6/d2szczNOC7Ow4yEhfIw9di/IpZE2aJ/9aNGFrXI6tbxm0tuXIupbcNS3x9SzVMjbsTLv35No9
- P9vu8Xy7V4M+UZz8i+bsMcvnjFuQx8pAw2gU8uZVsAKOo/IN9zpOrMfMPfceHnGTt+GCBHYMWoXtzNSQ
- 5VOW0N/mDBjoI7/NGTDL13wUc/oeg97Ad3HUH+BGvfxThs+WOtHFnduiOssypenL6uqg5TzElUijXVXu
- o81xtyOWtg5t29v1hZqXADSxBsLOPH1J89M4WJJy7JbCF0f9zmhjIw44UvO7tgoUJ5LtGI1En7SKOMYi
- /TjGebbLZHUfFm3wwBHVWlb08Xcb9ribs2juKDvCoBiLw5pUhFrGoh1lLf5OIQ2VJ277aLCfLNthRyIX
- lWAZyVl5HFl1nLvZI77PI2sNc2T98m7Un/GC0SAtazdzppmiTZLqoOVs5+VxeggGiVgZPQQTdb2s8Tp8
- jRsRMAohvKMQgjteIPDxAsEeLxCe8QLmCvjo6vdBK86OrDQbtKr+yIr63NX08ZX0yavoAyvos1bPR1bO
- H0Y2kiOxC2miqJdeU1isbdZuF7nba8M+N7nj69BjdnLXFzQ4UQ6HslJrLPWjrcQYDm9FYI3JICMypz9T
- GwEaZxvb/RzUVgw048DZxmYCKb2S1TjLyJgnCc6QZHxzDH5pfPo+mLo8lsbhxm49T1HLh/mJqzckZqy4
- 5u0xqHO4kfFGDMD9fuKbMQD3+4n7CgK442fukmeSjrXp4Kg2GS9VbBzyc04Z3oNN+4GXSbz7r1m/sxLD
- m0P4O685sOl++ciZVz9Qjo03y9MAHSfjzflAYTZGNnBgn5uYCRzY5+a8RYcNaBRyRrPZwRxfZNHv87v5
- cnYb3c2+zqdabc40Lh4kvJyvVhRdDyGu6O6apZOcacwOhEU1ekBzbLKoTmWLZBMn0bF4VfNs63QvG3tx
- NbkN4ZX4Y71WZfEkGzFPmSB0gMdNQNRtXm5kTzGqzj+Q42is13weYD73mi8CzBde88cA80ev+ZcA8y9e
- 82WA+dJnvuKLr3zef/K9//R54598cfzTZ94c+ObNwWsOOOeN95y3Aeat15xkfHOSec0B55x4z1kEnLPw
- nfPP/Z5fhCrY7z4PcZ+PuINO/HzszMNOfezcL4LsFyP2j0H2jyP2X4Lsv4zYL4Psl357ULKPpHpQoo+k
- eVCSj6R4UIKPpPevIe5f/e7fQty/+d1XIe4rv/ufIW6oBdF01mWzuV3JKcmqdFuf5uCSY/lkQOxmNYyw
- iK4CiFNX8V69uS5Ssn9AAW/X46jS+lgVZLVB43ZRx9MHXkHY5y4PfHWpt+5ScX5x9bTdi+wlkv+Ivk+e
- yQCgXm+UFtvo53mAvjMgUZJ0y3JLDjGm200TcpOX0ydk4QYsivx9L56in7/wQvT4mP8qzH+F+L8nO5ZY
- cobx4vJXbj60Ua+Xng8RAxKFlg8NDjFy8yFiwKJw8iGEj/mvwvxXiJ+WDw3OMEbbumrqJ8JMCQszfc+v
- 0XazVRdQvR1qitIkXWtdfbw4/dreW0HVAwonjsyZjDPvKMfW5UWGUSNdK8+I2Nr1vtpEIWYDlwbtpyTn
- 2TXatBclP7fZLGQOzHGoBIjFyHU6Bxi5aYKnR0A+gXgkAjOvQLwRoSsAn5v1xX4lbRkJ07g9SD7mlg39
- t5fpb7kwHorQ/RQ9l1VBeL+B8EaEIovkQYxsboKQk57RTVBziuI8SsooTiavLaYhlkdV4ZS55gYEuEh5
- SocAV5WSNm22OcAo4he6TkG262e0nf5hsYa4nuxiS/VIxPI8pTInx3n2d5o0E7bqMqr3JC1ocKKorVbK
- bJvKIixPt/X03TUxHoiwy9I8iQ413d2TljWr0320Lfcb+Rd6Zndoy16lu+aluXr4mxGbpmdP2VlxRIPF
- U9VIWaS8KB1suUXgHRajd/hYb5k51CAH6yZNj9G+TGQhomYCp9FLXFGWPcN4LUJWdqNwQjaLqPvKwrRp
- 3yWReC6PeTOCNX2OAICaXrUeoMxJapqpSrbuBNSf4iQhXYHfZEZVP9LTaKBcm5pBL/+bquswzVdEsVqg
- 6LiRD3QhalI+AVjTnCTRa1lNX+FIZwzTtjy8kVUDZLgS2eDhXKvBGcb050Hed4KqBQzHLquFfODIF2lw
- plF9wbkvi/qp3KeER8ghfdZI7OM857tb3ojwFNfPaXVJcHaEYZFJUsXFU0pOUBM0nUKtndYU6WSrhdre
- Ks3jOntJ8zf15QEpXwK0Yf9XvC03GUHYAoYj3+5Zz4zBmcZUiKh+jgs9MywpalCAxKDeLos0rPssz5uJ
- LbL5Q2rcQ6zHXMvWJ2UHQFRgxSgy+chFr1kyfal5mzONZdLuJ83IHw4Lmql3z+Acoyx8o00smzUX7FOG
- FGAclTXJRaQLO+6uZfahfdz5YVAPFpGdZA6PRqCWfw6LmkW6rdI6KICucOLk4jnbqc2zmWnk8EiEwAAe
- //6Yh1TumMKJw21vOixo5pQXPecYj+e/ss/VYC2zfNSKDyRfQ5gWmdisElLnHKPq2se/EHUtBLuuOK4r
- wMW4CzrnGFWaEmUKAT2MhquNOl7yA3hiHBMnh7i5o5R5pmg+hVbNznLzkpVHIVud8oYdSiFbHIQIoy4z
- ctGMc7D6Mw5rmA/lK+2utYDhqFS/n9ffsFHX29U5zTFUsc6a5jQ5blOZNFuSc6Awm+pAHfKYq+1xyy+y
- vxlpq2Gmr6tpyUKdA4yn9G7+QfYaNGTnnS5wtmIb1zUt158Q09MMaZLPS8csX83uoTisY6afJniOP6qr
- nzKb1moXRErhbIK2k17rDhDsuuK4rgAXvdY1OMdIrdV6xjGR7+iJsU0/2bf0J3pPGS1RuBVq1F3k1ANo
- w37kdt6PeM/9yG3gH/HW/St5mPXVGWct1Tf8Qqi1/A5qs6p817xUmuxE+CHC9iKLZqu78+jTYh2t1kow
- VQ6ggHdxt57/Pl+SpR0HGO8//df8ek0Wtpjm22yaLoUaiSwmz1s0Kdd23IqLaJNSdR0G+OrdR5aw40Dj
- FcN2ZZrUy1r114iwTrLN6cZmZzfyvdAp10a+FwYG+Mj3wuRA4xXDpt+L51j+76JZXu/t/OOHy6g8EO4I
- SPvsIp1e38C0ZleTYspmhsw2V/23tFAThyaXmBg/REjUw399rT4Rv5mvrpeLh/Xi/m6qH6YtO6/sTHxl
- 5/Dj1weu9kRC1vv72/nsju5sOcA4v3v8Ol/O1vMbsnRAAW+3/MDif+c368X0lQswHo/ATGWDBuyL2SXT
- 3JOQlVajJmiN2v9y93h7S9YpCHDRaucEq52HH67Xc/bTpcOA+0H+fT37dEvPWT3pszJP2uKBCKv5fz/O
- 767n0ezuG1mvw6B7zdSuEeP613NmSvQkZOUUCEgpsP72wHBJCHA93i3+nC9X7DLF4qEI62vWxXccaPx8
- xT3dHgW8fy5WC/5zYNCW/XH9RYLrb7JQ+3zfVdKkAJAAi/HH/NvihmdvUMt7rMuHdlOlP6bPPHdJ0/pp
- tlpcR9f3dzK5ZrL8IKWGA5vu6/lyvfi8uJa19MP97eJ6MSfZAdzyL2+jm8VqHT3cU8/cQk3vzZdDXMV7
- QRGeGNgUEaaw2ZxlXCxlfXe//EZ/OCzU9q4ebmff1vO/1jRnjzm+LnGJuo7CbKSlqADU8q5mvEfKAD1O
- 8o23YZ97+rLZEOuaj5s82zIS4sQ5RuIuiCaF2RhJqpGolZyYA+g6V4vfqTaJOB5GMXSCTNf8mnFWPWS7
- HlSEtCbshmBzjpH1EOocbqTmF5v1mGl5xkJtL+Nh6SHERb909EkZfqJeNPaczG8WD7Pl+hu1QNc5y/jX
- en53M79RrafocTX7neZ1aNPOWQsxQddCtH9ZcZVW22WxWj1Kgln/urRpv5uvV9ezh3m0evhjdk0xmyRu
- XXClC8t5v17IBuT8M8l3gkzX/frLfEm97T1kuh7+uF5NX3lqICAL9fEeKNBGe7B7yHX9RvX8Bjg4F/cb
- fG1X/MoAwP1+eiJeeWqF5nc1sPNnUyqpPidZb+KjflYKuYrxOIyUcgxQFNb5I2fMOUfnrFTf9Rv51vUU
- ZPvvx9ktz3giLevy/q9vTYe7TdmmLlwRX3mgEihWezZ0fctZRnLDCWo18ZpMWHuJ1VhCWkq81jHWNg4o
- DH3lILsI9JR+nA4p0htdcnv6S7ynvwzp6S/9Pf1lQE9/6e3pL5k9/SXa09d/4SSDznrM9ETQUMcbPaxW
- kexIzL6uiFqNBKzksmiJjHgs2SMeS8+Ix5I74rHERzweV7Kl2zSdKcKBMm1qVXqKRx3vGqLZ7e/3S6qn
- pTDbiqdbQb71ern49Lie05UnErI+/kX3Pf4FmJpanKM7gZBTtgroPglBruUtXbW8hU3kdrUBIk7iM6tz
- iJH2vGoY4GM18EzSZ13xtdDTQu179xDiiuZ36+U3lrFFAS+94NcwwEfYW0tnYBMvh59AxMnJ4R2HGBk5
- vMVA35/3f9AmFukcYCQOn58YwPTnjF56SQYwce4BnP6MtDfSXcRRs1bLPp3+MYMBma5m8+zoQH/TALCD
- Od1Gv3/uPjgm7PRiYbAv2eQcn8Rg3y7N0323PflbPX1LY5/DF2l/zPkhJOxzix8V3y1hn7suQ9PnZICj
- PFXl8RDJP2fT96rEeF8EygoLMO2zN8szHavpa6B5FHAcdQbRoUrVZ42cIDoPR2DmUDRvqqm/anUDprRh
- feZ6+8xXSxh3BySzhnv8Tc857BJ0hxNJPgy12m1zWyap+uIujyu1bgz1IcY0TjyR7Q95sx1t9DPalmWV
- ZEVcU+88YsGiBZbgiMUfjVkagg4sUkCJCBj8UZ6Y5RYs8cdilMAO748g3uNqxNjVNGt4MK+kZVGziGJV
- Uqs7V78xIxgOT6SyCEkrTYDFOJRZUTerp/FCDLw/Aj9fDbw/gsoS8qkNuzGgyhtXROmPY5wHhOsMRpR4
- p/6rW50rLsgxQB6K0H6dTTe3HGSUCXcKS9dqsOmmdqt0xjBtsqfi2JTvTUFP8FkkYm1rYJa2RQ1vQGXt
- raFV0+dYp9Hr3ewzxalhhq+tNGndyZ4BTNT8rlGAjdX88LY52h+L9IkslAxkkuW0Wuw22sfiO92p04Cd
- /JDrGOQ7buiy4wYwqWZWk//Jvp5ErKy7Dbb6VMtJf5BkwULWo47RSOTyBJeYsZp2VJG+UtQnxjA9x+JZ
- pVzTzogOH69+iX7u1bq88eX5RSTE6zFKqnhXf/iNEGq6FDyXrh9kc/zz8AuNc2AOAqB9/74Sl6fRVpME
- qwuPuMkdXkxhxDl8T9+o9XfPmKamhdYUy8dCpVWVCpFS6h3EAERpVtiiPn826vVSx15AfiwC7X7CAn8M
- em7HFCNxmvGUoDCNYUqU8IRDR39OvQxiraxjoK8+PYBD6S8YfkgDxGPUsiZoOtv7z0gVAzScalW0smke
- Na0j8qMM8kaE7k7TGr4DBLmaRix1GX8Eh/ysxrDDomb6on2oAIqRFS8fgmJYAjCGIO1f4YCQ01wpla42
- eSgCrTMyQJCrXaOPrms5yEh+rA0ONJI6IQMEuRhFmUUi1pBbjqxiiRygMja/1EBVZtx2XEzEu27oihLI
- Zk1zOx4W/pD7PJ6I75KU04z6WbRvb/6+uPw1il9+XvRrJRJ6KKgCiUNdCReEETepCDI5xCjbH2FnrAs8
- MdRagUExTgIkRtvwITUTIHrMTu4feiTeWEkp27YhcVoBEuOUhy9ZAXp6xP5bkB17voJyEpCLkovLy/N/
- MgbAbdB10jvlNjg41UJiT81giSyFpvoMCHI1S5PRbQ0G+dT+k3SdoiCbECL9SNc1mOWT51uTU+4EQS56
- yg0Y5COnXE9BNnrKDZjpa0bNiAl3YgATOdkGCrBRE62HABc5yQZqsGUXccCafjBt2Xlr2gEo4CWu3mZz
- gJG24pqFAT7aijQWpvu23NURARTwklNyi6ZkEpSjkpEclfDTIfGlQ8JcJdIlISttlUibA4ycJyrxPVFJ
- 0CqRGI9HYKYyskpk/zt5lUiXhKzUpyPxPR3UVSINCHBRy6wEK7MS/iqRIAy4yatEuqTPyjxpdJXI/gjO
- KpEgDLrXTO0aMZJXiXRJyMopEJBSgLJKpAEBLuYqkRgPRaCtEmlzoJG6SiSAAl7WKpEwbdlDVolEBVgM
- 0iqRAGp62es5grDpDljPEcEtP289RwA1vdT1HHUGNlG+u7I5y8hbzxFAbS95PUcLc3zE9aRMCrORvu0E
- UMvLWeXBAT1O8o3HV3lwf57+CR7EumbqKg825xiJH7maFGZjJCm4uoH1GzkxodUNTj8RPv3UEMfDKIbc
- 9RzVn8nrORqQ7aKv52hzjpH1EMLrOdq/UPMLvp6j8ystz6DrObY/Mh4WYD1H48/0S0efFM56jjZnGRnr
- OdqcZWSv5wjTpp2znqPN4cYVV2m1XfjrOcK0aeet5+iSuHXBlS4sJ3U9RwMyXeT1HA3IdNHWcxwIyEJ9
- vKH1HLW/0x5sYD3H059/o3p+Axyci/sNvjZtxcRFsSs5ZkAxHoeeoK7BGyXwSkavIuwKRs++yJLQK+gU
- 43HCrqQ1AFF4a20i+KiflVq+tTaxgxip5VlrcziGdf7IGXPO0Tkr8lqbJgXZqGttuqRlDV1r0yuBYtHW
- 2rQ5y0hu1EItWl5zFmvLshqySCuW13PB+i0BRbuvVGcX6J6ynDNYgIwULLmjMEt8FGYZMgqz9I/CLANG
- YZbeUZglcxRmiY7CcNfahFiPmZ4I4Fqb3Y+MtTZdErCSy6IlMhq1ZI9GLT2jUUvuaNTy/2/tDJocRcEw
- fN9/srdte6Z2z1t77KqtmkztlTJKEitGHcBMun/9ghr1g4+ML+lbV+B5sFUQBD/ib6PwWJuUojYk1uY9
- f2jAYm1SKmbbpel2nA+NtRmSnHV7cMw1w5jQWJsByDmBWJsE4lzf3nDVtzfeBPerI7E2SRJYZ/lYmyQF
- q69srM05IamDF4u1Gabt0rVcbUHfizCxNsnPWKxNBmW8eMPPxtqcE4BYm2uGN6Xd4WGsTZKUcocHsTZJ
- SsId7sfaXCVAsTZ9jjGCUxthrM35VyDW5pphTCnXgD//CefeP+9KLq2O2UMTNx7Ke921TvROKO9NdHq+
- 1k2+4B1rgq19On2loX600jBIFOCCsIiAKQNet6ej6/b0M2vj9OO1cSZtHZ+JreO7pq+RvT5aI3tNnB+6
- RueHrqnzQ9fY/ND571ZVzdHmtgOG3Q9lvv/c3EJx7GPzm2yekVt85f+3k41Llrlum51xuf/JTb65gAgf
- K+G/vO63f+HKsY/NyLnh8cVfy6ush2/Rmrbc/JkZpXyb/TNFN2Mr30mUspbbo3HNAHW0eW0PVx0RzZ0h
- poOSyLG47ISvGg0ES5wB4gAiCY25Kd1fRGXk9oUha4aYlLQ1QV6R83FHWI84b3+6ehjxaaPc11+AaiIW
- y6X8IvZ1W5xFaeu5++xUbo5mwbFr89cpNdeXJDvPLyW04+afaH/FwxZfdy70S+auv8pN1TZa5EUhO5MD
- n6U+cgQluU8ej9ubOEoFtm4vhWwK9d5hoTEjOPX/KfZ9U2Ln4c74pi5XWoqTzIG7ISSp9a/h+Es5HD8i
- JeDKedmb9iwbIW/di70PbYu92RqiMW9RV7IxwxXFQ6hsUMXKtbePuz+hhihuiJdihH0ytErYQzG2K5Fa
- lKeJlVdp3Uv1KWeTVcXKVfZ+TCvGkTGrro5NmtWRMWvfPHEvTzDvztJrSSYeej+tlmRILcmeriXZhlqS
- fU4tybbWkuzzakmG1JIsuZZkD2pJllxLsge1JHumlmRMLWltT+NdFHlxkmPfvwTGZDwdswO99gCMOLU0
- SUrLxY3ikncdcrNH+KCEoaOYcBpmjjcCQxEPC3xu4DdEUsada5T3JvznM8cbL0jIwgAkznfx7Qey28gK
- WTwugJ5r5862og2Rn/b94SDdmwrbfXXd7M3V9temVakp+zApfh8mteylNEZzBJ4vHEvN9s/cBbYA+8IM
- ynu7cVmGMPb0aXv2LiklBBK+LNdGC5X/TCnizsbMHzLN+iGpEY54QyDi+hAvf2RfxDE3J6m+DrG3AClD
- c3YXuSrNfCc5a2OvYaZkmagmOOe3aZnLlOgnOOfXRW5M+kknOOv/oVLVE7lYdVYlzU34HGNMmZtg4ZX7
- lL8kv2JiYeJ2Ia6esHM48buI3E/4OXzltz9L2UF7pawZz4S8P54BxiE6o2CPg6ir7xBJ3xH6APS/p+yU
- BzpCU3bCY++vZ4A6tNCtMhL5R2aGmICu4pjbp0XT1zWmGBDq2b6nwpib0F2L3A82t0+j1/SOsB47VktQ
- WYra+u2v36fshAfGVmNunx5GA4e+KTDNjFHfqTpAx+PyU0ML1RmXnfBXN28HCIb8xIBEWZ6yL7xxl3gY
- Y2/fMWXNLKbr/aGIz6AzKPWmzKD7XNy4S1Xu4k6gsjHoyvsqctdzrja3qAtBLbVBDLUh9L5oGw3wQ35i
- KOzQFjEM+alB1S4CcAls4ESpwAa07gsRWNQw/w6KRsh3lZiFXmHbKbH9LfszIJkZYpI3I849oBkB4rDP
- Dn2S2oAHtMaIryo7QGNzU7o5tAhus3v8qdq7eJfNO3QYK4z4XAXtdX5E7uSZIaYmv7gtJhptVO62wQOE
- Pkq9WlT5V1FXGmk3VpRnK4C+5QwQR1vozs0t2zsEuQZrLPQ17fBuCfVNGPF1RQVobG5KT697k65kCHPu
- 6QVygvhOEqsGK5UOapWGn2w6eLJ1udSi2Bf3mfzNMh8MnEa9ZvP6gGFEq0E5Y/BLAd9ZEsh3JZ2ByH/v
- esxTMcjLWhbm3PezkuRewYv7lhji+xaN8D2lHCUScp5AnMvNGw7ThujmCA8UXDndS/fi9k/oMryAhX1o
- fn3C/MqaX4fd6tyUV8IJX9OcfdxTwsXAxt0L+9gMbUUWFfyiDH1x6xfB7cJ+bWJL3b4/DIE4l2mhmfcA
- DJzwRMQtGnl/StEFuGuPz62M7muDsjq6zuwwM5PXx1ZV5rR5zBE38KVcpaoO79BKuAju+TvlNpsYZnG0
- FljssajAK2OY5jO3oW3QmJ2ijNcV6loGc4O9C0q9bow7tMA28SQhr4cG3nHG3w6pZKMrYNgdwQO/LRPe
- qolBA2/dtmdtu/5nKUo7DnCjC1DPGIJSxkEL0OxR7Pff/gfasAu8PYoEAA==
+ H4sICAAAAAAC/2JvcmluZ3NzbF9wcmVmaXhfc3ltYm9scy5oAKydXXPbuJZo3+dXuO683Kk6NRM7nbT7
+ vim20tG0Y/tIck9nXliUSNk8oUiFoOy4f/0FSIrEx94g94arTs10LK61SRDEF0Hgv/7r7DEt0iqu0+Rs
+ 89r/I9qUVVY8CpFHhyrdZT+jpzRO0uo/xdNZWZx9an5drW7OtuV+n9X/7+zit+3H9F168evFx8vdh/iX
+ 9+m7979tk4s0+SW9/OW35OPm1/cfd9vzf/u3//qvs6vy8Fplj0/12f/d/sfZxbvzy3+c/V6Wj3l6tii2
+ /ykPUUfdp9U+EyKT8ery7CjSf8hoh9d/nO3LJNvJ/x8XyX+V1VmSibrKNsc6PaufMnEmyl39Elfp2U7+
+ GBevynU4VodSpGcvWS0voGr+f3msz3ZpeiaRp7RK1dVXcSET4h9nh6p8zhKZJPVTXMv/k57Fm/I5VaZt
+ f+5FWWfbVJ1FG/cwnO/pp8MhjauzrDiL81yRWSpOV7f+Mj9b3X1e/89sOT9brM7ul3d/Lq7n12f/Z7aS
+ //4/Z7Pb6+ag2cP6y93y7HqxurqZLb6uzmY3N2eSWs5u14v5Srn+Z7H+crac/z5bSuROUtI3uG+vbh6u
+ F7e/N+Di6/3NQkYZBGd3n5Xj63x59UX+ZfZpcbNYf2vCf16sb+er1X9Kx9nt3dn8z/nt+mz1RXm0M/s0
+ P7tZzD7dzM8+y3/Nbr8p3ep+frWY3fxDnvdyfrX+h1Sc/ksedHV3u5r/80Hq5DFn17Ovs9/ViTT06Z/N
+ hX2ZrVd3Mu5SXt7q4WatLuPz8u7r2c3dSp352cNqLmPM1jNFyzSUp7z6h+Tm8gSX6rxn8n9X68XdrfJJ
+ QIZeL2fqPG7nv98sfp/fXs0Ve9cA67ulPPZh1TH/OJstFysV9O5hreg75Wyy8N3t7bw5pk19lR7yXJqz
+ mC9lQnydNeLP5t34zyb/f7pbSqd8fKLZ9XV0v5x/Xvx1dohFnYqz+qU8k1mvqLNdllZCZh6Z+csilTeh
+ VllMZuq9UH9QoqxWT6vKceXubB9vq/Is/XmIiyYTyv9ltTiLq8fjXvrE2SaVcNoEkk/vf/7bvyfyyS5S
+ 8HT+b/yPs81/gD9FC3npy/YAr0M/8Cw++/d/P4vU/9n820At7qJdJEsZ+ByGP7Z/+McA/IfhEGlNtXTI
+ 4Lle36yibZ7JpIr2qSwekqk6l7SsDB3oEWn1nFYcnUFaVlUWRpvjbiezG8cN8GaE5/Pogp+yLg3YmVrU
+ x05pl3bsISnhT4dHmafrbJ+qmo3m1UjH+iRruDxlik3YcbMSAbn6kHvmv2OqrMiKrM7i/HQlUXLsSl5q
+ IFw1xJ0vl1FexkmkDKp1I5tiUwNB7GC+u5/fqh/UOVCKTJsbjPfzr1GVdvFWsrmg6sSJVogFzJusDLJb
+ vBnhpZK1KFfvwJA74PRBwRBD/fFqcS9bLlGSim2VHShZEqZBuyof4qMs54ssYeh1HPVvVGuF51Yo6t1m
+ B9m+DzjzQYDGSLLHVNQBMQYBGoPt9ji//4yKeJ8yxR3ttbPPuoVR9z7+GckiW/Dyu2XAo2RFaJTBgEYJ
+ uAXe9D9Uu4Ab0NEee1mX2zKPAiL0BjRKtduGpM8JR/3PcX7kyhsWNwflG1+eyUQUy3qNYe5IzLrJy+33
+ rrzj2XUDGEXUskUYVwn3phq8FeHu630UJ0m0LfeHKm2GYojNwRENEG9XpSlwpCBHxERATJk/3tHTzyBh
+ 65tcCOJBImYJK0CWID5uskCpsv5L5YN30fYplqX4Nq1qktnFQf95mP98zN/8YtyROH9kBAI9SMS2m3o1
+ Y4U5wbA7/VlXcViSOQ44kmgvkxOgQ13v9imV5eOhyp7VKPv39JVqdwRAjLa9Kq/tsSqPB3IEEwf8eRpX
+ WuoJcgRbgMWw7xMzkqPB4u3LJOWFUCRmLZt+FfPcO9h1p0W8ydOo3IqDqhQPuezoU0NADjSSyB6LtCsF
+ 1NCFBPYHwQwJy9DYdS7U/SuKlNzcxCRurF1+FE+nR5d8YSYN2GX9TnZKxjU1lbhKuWyXbWUpQLXaPBZB
+ PS88tyJ9Vt7DbPNIhENcxXuWuyExa1viMkpsCwf97YMgavV+hq7XaMTe5/pou2EF0AVIjKbaECx7iyLe
+ U3MgyjNRs/SGAY4i/xQfc9kljYV44aaSI5kYKzqKtEriOn6ToL0Njp7+jLihOhT1FumLbDYk6U+mvOex
+ CIGtAVACx8qKXRlt4zzfxNvvnDiGAI4hC4O8fAyKYingOGqgqykhuA+QIcBjNMM5rGEPTILEkrcuPJYt
+ QWIxWoQnDjYyW4MaCnt/HDP1SvvpWCflCytJTAMcpXmfEj9RR58cGrZ3rSeZn2U3h532rgWORnyjCaCI
+ NxeylJHHbL+3jyjrZrsWOJrMvtnuNagUsRTeOEl6qJ8CgjS8NwL3tmu462/eiHZH5OU2Zj2DoMSNVaSy
+ Z1PvD9FyRR4A0VnI/EIXvrieKt2Xzyl3gMOkXbv6IYq3W3mnqWoN9Xqjx7JMAuQN749QpUX6WNYZo4OF
+ aJB4bTG1O+Y5K86AY/5N9JTRG0s6i5lL2SnY8m5yx/rN/NusC0ZihN5owINEbDojze0S2d+8YKbCE6c5
+ cMOO0eIev2qrB/hb3OPvCpmAEL0BicJ+KDxPhJoAnPKsLYp4i+N+Q3wlZ6KIV4TnSDElR4qwHCnGcqQI
+ y5FiLEeK4BwpJuTIrlXJyz8nGHLX77oJmtGhLBnVjMkjEVjjhcIzXtj+dhq8ETx1jyP+U9uXPf4GW8Bo
+ 5+w0OvekkfztWD1zSp0e9XpZwwY2j0RgjdUOJGIV2WOcP/ISpGP9Zn6S6AIkRti7DkCBxHmLnH8+MedH
+ smtZvkTH4ntRvqgXx4du9IVzk3AZFjsw2hS/SHPVCOTUDrYBjtK+fWfpO9Tj5d7/0fve/B44RIF5kIjN
+ 0G5cJJy3644AjcF/nyLG36eIYdYps6TRccQf9F5FTHivoh0TknkNAxLlWFXqINUG4oYxFVgcmdX3XT7k
+ RdEEcIzgN1Fi2pso8aZvogTxTZR+fPdYH+L6SYTE1T1IxFI0JbksZ5sBYl7a2hI4VhpX+Wvzvqybf8Cp
+ ygELEo33Vk/43uqpH3dxLlI1N6Tqqt00ibqPZ5taixNwzAmfyWOVxhILSEvTAEfJHgtZl6kG1Pn7SL0G
+ eazihFUzwiYkasjbRjH+tlGEv20UU942itC3jWL8baN4i7eNYtrbxtNhIpWtgV0VP6oPabmxDAkSK/TN
+ ppj2ZlMw32wK9M1m84sIy146Px4hiqvH0CjKAUcq1Lu3NhWDWvaQZyyiiOLkWU3PEmkSHNaSwbGbCYBV
+ Kg5lIViZwhAgMXjvvYXvvbdoPiLpp8JyJvujFiSa+N63SAOyOqDB43Ufp4bGszRIvG6hDE6MFoW9P47Z
+ NuD2aDjqD5j9ICbMfhBBsx/EyOyH9vda9TzLQrb4xFN88eFjVO70/o/gRR2zYmfTtadlG1c+2cd9yotu
+ W+Bop8JxmJXKLPlAERYzdLaJmDjbRD9OdfnLopYFdEi0weKPph785CnlznXxqJC40LxudlMQt+HRs+JR
+ fZhSVrJHsW9WLxLc0IAKiVvVB1Xd7rI85UXTBUiMusq2wcNCrgWO1k07Uh8LBhTbrgWLxs6d3txojoOH
+ 9B1hExpVNb/a+lZ9VsZtqoKiqTFDmgu4zR+9juujCL3aXjIlFq+SsB3eSMMMvLBohmdiRPEm8YQ32lEN
+ xsjyJyDUSYHEkWV28sTSN6TPGpbNTQUeJ93yz1+xuLkSMVcsUa83OGl0BxKpOvKqoQaEnfzBdd+oetcK
+ fYOGAWzyRmXNmRWjc2aPqsu9o3pbCrDJZ/i+7QX/QX9xZtJj9mi2uj0PC9EoRuOo9lRgHKWA4yxXs7AE
+ MwQTYrCTzbVMicZNPNcCRwv4hNHCR/3slLMd45Ha18fctINN41HfIh4eSXX92kUp69foKaOPgYMSM1a3
+ uFWkFljtXwcNr78oEUdUcFztTds2PqjmPSeka4GjUb8G1jnMWO6jzWtN64C6NGxvv70lLwwD4B4/b2gE
+ UXjisIe7cYsn2iENSDMFj7j1Z1gEBTJMY1HbscSweK3DE+lthpMmKj3n0fal2DFbHPVz3t4DuNfP+jYX
+ c+CRaBMWTRK37tXayBV1QhdswKP0y5ExXr76PHjEroueZ7u0mXdErVrHXL7I+5QfaZ/6zcSxPADH/YE3
+ x3tPnmIRWrhZCjwOv0gZaNieifZVC7cNo/NwBOJ3iBoG+5qZxLyio0O93pBWhaVA44SU4WKsDBdvVDqJ
+ yaXTMHrPjePLoSKgBBLeEkiElUBirAQSsi+RJ9FGfe1UPOap6tmwAgEeOGJd8lv1J9ZvjnZlFXCzAQ0c
+ jz5eZZKmlf6BMfRdccD6ft61/QLW9fOu6acWl4sPhzxrvz5XGbamrA7uc7iRWOv4edbwUz+pUYbus4Hj
+ 5l/pthYqB8lWOG2gekRlxc3VQWqR625FdFIkGx5xR3kZGKAxQFGaXno3KKyq6Lymx3EdUKT69ZCy00qD
+ R9zMtLINZpR2JsZTRkqcHrJcaoJMuxQfyTZgli9k/ceRtR/pZwmcX8jajiPrOvLWWMTWV2SvrehZV5Gx
+ oAG4jsH2WNdPVXl8fGrWS81T2gg3gJv+JM3TR7VnV7St0mZINc5VC4LUgkYlVqyy2cRDdme+ky5C5yyj
+ rM4Znx1pmOlrx1z7Ob3b+qda5SttdkFSfT5KkDEXFLkZ7W0bF7Q7AOCoX327oOpqcpGMOaxIgauJjq8k
+ +mariBJWEA1ePXTCyqFpVcl2L3P7DQe23D8PZdVM4VA13V4+rJV8SEkBQIMZhfouwn0H0W8bqCa3NEvA
+ U3wubdvrd/onsrSHzKUBu/4aTDUuBDmCY4Ci8KpV/7qn7ZLuw2cG/SI09FQCLUA09vuTsfcmvPVbsbVb
+ h/cMoT0mvwmLyn0vM+V9zHBMV41367G3c1KY4UAVFteeB8OM6WiAeN2XC1X64yiLeVnoE1cDQSVgrJBp
+ 2ogCivMmb7ZIb7QemwUo6Gu+6ZxjjLpX/EThCXN9zFkhFgp42ynPm1f6li8AjvoZdxCfjc1cVxldUzls
+ PeWxtZS13yvZ8i/3THkLA+7uE336NASX9tiHDS7YIQYFHmfYqJUZpReAMZ5TYlNX5zAjdXMVk3Stpy/3
+ GSP2AO76nb4PNYIjAGKoJjzZqyDARX+HhL7/136I/vrw7rdotb5bzpvZWFnykxkCMIFRWbMN/LMMusW7
+ 9yISx4Pq1NDVGuy6d+SnZQc8J/IfmXhK6a6Oc43stQFGViFvfn4m1ysScT19xy3KU/IzZsCum72ewMjK
+ 5cGrlk9YsTx4tfIJK5VzVimHVyhv1+U89fuiuvyeFtFGPopq6IDTKxuxudEZo7nouujNTJxTJ4q+8B6A
+ e/zMBqvNIxG4hYoBY+5jnocmkeVAIjXfcNeycSeaIakmCwhWPNCERFWdo7g+VunQxWTFBDxQxDZ781qo
+ Jg3YWVvQmCRg1aZlk70a6zeTp7aBAjcG/7v/sR0PmiWEN1lJdSoGMLFWDvDtmdD/JtSIRrFNWeITDLjp
+ DaIKahGJdKuemmF17GbojNeE87mgyO14r/F1NT0kIIFitaNLrH6vAaNu9Uke49k3aczO6dkNpM/ajIbz
+ 1Q0O+Vk9dHQUSzzFlRpD4w22mDRqZ6xL69KQnVf64eUeUNl1O5STY6CmaVFV54CVgTyuaZFZTwTiASJy
+ V4x49K8Woc0Ejx/TSHynzdQFcMDPfp3q0rD9WGQ/6EO0AwlatS/++1dQjBCQZiweJwe7BjdKwMK6o/v+
+ hOz549/vJ2CvH+8+P9qP9MlxDgy6OXUO2mt/YbQuX8DW5Qu9rfYCtdVeZJGVshuUJm3a1TcLoW9hMYcZ
+ KSuYX40aoOPUFi0lSjXSscq+OVWnEMsjokSWFiRPizgeJWcNN9isY25bdERlC7kuoJpVi1UcBDURPCYn
+ asCasC7t2o3xMd4kDo/GjKdaQsdDQhyxGijTlmebKq5eyZlZ5yyj2mhteNVI7bcBOOBv5161k+EEWW/Q
+ pn0fP2bbfjSnXz6tJuV+VGLHUgvLxnlUygeFOrzgwKabu48dvocd8bsx53ux4rg3O/+k++bSpv2QpqQm
+ lDreNjS3iyZpEMtTlVu1p08z0HkoRc2bguvRwPHaQkq9gDtlOPpnQWMuJ/JzlqTtKVJrbAc23e2ioTKP
+ 91cd7fLs8ammvqXyioCYzchanj6nOTnKgALetoHFE2usaa6IhUbllBPMDfTQ/fK0HzhPFIDbfmG/2v8X
+ cdY/ojDjdEuRDrMqKREc2HarxcRl5Lz9JIamNlnb3D6tVUr9oMAkbStnhzBsd7CAncG8u4I1P1IH/XsI
+ cAXtsTRlZ7HmmBfOGb9AZ3zOukfnyD3i7EyG7koWsiOZfzey5lfoaxhyCEgCxCK/S8d2POPudobvdBa0
+ y9nIDmeBu5uN7mwWvqvZlB3NBG/Oq8DmvDb7f7V7BauxPur5Gixg5u195t33TP1IL3EiqLzhbAyF7mgW
+ tPvXyM5fATtyeXfjCtuJa2wXrub3bntiVuYyYMDN3Q9rZC+s8P2Tpuyd1BxT7MpqmzaDPs34hogfyakE
+ SoBY9Nmd6MoggjxjUQAzFt9mx6Opux0F7XQ0ssuR+vlfyffz8+ilrL7HVXksyKlj824E9lzEkX2Ngvc0
+ mrCfUfBeRhP2MQrew2jC/kWcvYvgfYtC9izy71cUulfR+D5FzRH1kSytj66H/TnfyM4/zF1/0B1/wnf7
+ mbLTzxvs8jNph5832N1n0s4+zF190B19+u149KVO6V/KeTRIPN7tRncO6n8MmZKKSsBYzLk6Y7sT8Xcm
+ 8u1K1P42DKVxylybhyK85Z5HnP2OBH2uo4DmOgrerDSBzUoL3zNoyn5BzTFPaaINbcvjdhm5ugIlUCxe
+ /sdz/tt8SEvZbeiNdhqavMtQ0A5DI7sLtXsCMXqGSI8wbJeiKTsUvc2+PlP39NE2OXlSL9CoswIhHo0Q
+ MjtNTJ2dJoJnp4kJs9MC95cZ3VuGt68MtqdM4H4yo3vJcPeRwfeQYe4fg+4dE7pvzPieMc0R7kdg5MIM
+ cgCRqDvTILvS8HakwXajeZudaKbuQhOyA41/9xkRMtNS+GdaCvp8RgHNZ2S1NOBWBrl+BOpG9SfG6l06
+ hxvJyyg6sOmuS/VymD/TBuLNCPzdhnw7DQXuMjS6w1Dg7kKjOwsF7So0sqNQ+G5CU3YSCt9FaMoOQgG7
+ B3l3DgrdNWh8x6DQfXvG9+wJ3q9nwl49an5H9JTmeam629XraVUlYhjQYUZijCGDo8YvMS0R1PGWQU2g
+ IikUYDieL96fBiLIg1kO65hZSsTVjSiylAY7mNc3K97FO6DppMsgC+uCHdB0qp2nos1xt5MZkmEGcMP/
+ fB6ds1PUhV03T4rZuCnswrb7IiQVLvypcMGUYraAVLjwp0JAGnhTgCOETQHXjlx5cpFF2j4BU50Whvoo
+ s1wAdPBmFwnnPC0M9VHOE0AHr6z1r5bf7td30aeHz5/ny6Yr326jtzsW26kxRjRj8dT6sm8Qr9d44iVp
+ emhOjB2qN3iiqEnwxTHP2UFOAl+M456vP+495sNRPLHVCva4xfRvCyDWYyYt8gjThn21XN/L4+/W86u1
+ em7kf35e3Mw593ZMNS0u6X57LJOiEfOAT2PGUzMiF/df+jJif6A++ZgCi6Pm6NYpL0DLoubjgak9HjCn
+ /FPCkyoSs3IyrUujdlrWNEDMSc2AJolZqYWEjRreZmnE29nXOTsrIwZvFEbdjCl8cTh1MqZA4nDqYoBG
+ 7MQHyQQxJ2HhfAdEnIRPJG0ON1IfdhdG3IfywE+FE4y5aY+8CSLOZt5xyIOpC7AYhIWtHNB1hj1+Y08e
+ N3Pg+YJW+p8Q18PNWniuEk/ZjnxnGsh1UWuOARpcs6sr2QmLruerq+Xifk3dFhzBvf7pH+iDsNdNKLlg
+ WrPPV9HV19nVZF93vGnYbrZRWmyr1+nbBFqY5dttzi8uWUqDtKx1xbUapGlNUrKuQ0xPut1wTk3DLB/D
+ BXlK9r0oPfdCNIuKNz9Qvh8CUNfbBeR4NdT0HouXKj5QlQOF2aJDnCTTJ1SBsOnmnCd8lgHniJ/h6vY8
+ mt1+o5SPA2J5Pi3W0Wqtjm837CMZbRh3k6oKgMXNj83HejVX3uG4n6/2WSnVj4viXsIQFYB6vSGpLOBU
+ /nrPzh4GinqpZ6yBqJN863TStt7d3cxnt+Tz7DHLN799+Dpfztbza3qSWixufiTmMRPFvRlb60sH6u0y
+ Udwr+KkgfKlQl9GnW665gS33Z2Ym+4zmst/ntzLezeJ/59frhewKxsm/SGaAH4lAr5pAw0gU8iMDCUZi
+ EG+Ci4/4qdkd4EciHCrCFB3cMBKF+ngB/HgE4hTHEQ0cj1vDubjXz8tXWG1n/szMU2itt5h94KaKiaJe
+ YmroIOqkpoJB2tbb9fx39Q5of6A5Bw4xEl7r2BxipN8jDUSc1CaExiHGjCfMMB/5bg8cYhTMaxboNaui
+ 5yiL0o+/cMUdjvjpTRGDtKy3Dzc39MzUU5CNeNM7BjJRb/cJslx3n/57frVW6ykRJvq6JGwlp53GwUZi
+ +vUUbKOm4YDZvqv1vO863l7PP5NPFBD4YlCLYRv2uakFsg373PQcYdM+e0ii+9ObnFMs2OemFrM2bLnv
+ 5d/Xs083c26SQ4KRGMSEd/ERPzX5AR6LEJA+3pRhp4knNfjp4E0BygeqAGp5V/N/Psxvr+acAV+Lxcxc
+ K2Bc805zjZxhm93atImThGa1YJ97m6dxQSynIYEvBrXJa8Owm1pzoXXW6QfCjBabg42URcRsDjHy7lSC
+ 3R9ykYWX5MNLhXfsC+9h1N1vJbyPxXdmCMMBR8rT4nH6d7guCVuphS5a53Q/0IejdNDjjKbvBwyxfnO0
+ O4TIJQ77Ba+UEVj5ohbfZQrfoUa1L/3t4prp7WjcHvp0iElPh31UFIvtW0RTHjii7FQ/rD9fcoJ0KOKl
+ Nlg0DjdyH/QTa5nXH8+5xbWJol5iq0UHUSc1DQzStjLf46zR9zislzfIGxvmaxr03UzzQ5LtdnSdoiAb
+ PeMg73Q4L3LgtzesVzbIexrmyxn0jQzrNQzy7iXkhYv/LUvzqyzeHtMireI8+ztN1GpY9Aiuw4707X5O
+ bm+fIMhFz48nCrJR+xcnCHKRc2QHQS7BOS8Bn5da8ZwlO7dsD7eLP+fLFf/tHCQYiUEsMFx8xE+9aQBv
+ R1hfsaoIjUOM9IrCIDHr/tAshRfVPHWPI356LtFAxJnxzjXDzpGcCwYOMdKrFINErNRiQeNwI6d6cXHH
+ //mSXUyYLG4mZwONxK30zKCjlvfPxWoRMA7u4l4/MUFs2OumJotDW3baZtMaYnna9kctuz9qQVKSz0Qx
+ 7/N7nvT5vWOso3JD2YfKwixfVqf7KLnISLYThLgo6ww4IOYkDttoHGikZxyNA41HzgkewbNTWzlwbknL
+ IUZyuaGDiDO7SFhKySFGagmhcZCRd9HYFbMuF7lWtcAG6znpQMzJeU5aDjIW8i+8yz6RoJVzk5E7fIiJ
+ 7dmegmxqoWW6TVGYLdrWP3lGRULWY8G75paDjLSVS23OMu433XqR5DdaBolZC762ALxtpSjT+29aOaFx
+ llG2vfdZnT2n9MLHRFEv9fExSNt6rKO0pI2fdwxgYrRMBszy1fHjBfXDl44BTGL6tso6Y5vS/SFv1lOk
+ 3lqDxKzUG6uDmvNh/UUev/4WLW4/30XdR7SkM0YNY1EI9wvhxyJQ0ggTQDH+mH9bXDNTaWBxMydlTiRu
+ ZaVGjw7eT7PV4iq6uruVXa3Z4nZNyy8w7bNPTw2I9ZkJKQLCmntxF8WHQ7ONVZanlCX9AdT09js2besq
+ p1gN0HLmaVxFuzyevsmnhUG+dtFVplWDLbdaTKbZtLg5hGQ2UctLTU43FeVfmu5ys+ENccFaVIDEaHfb
+ fjzGVVzUacoKYzmASMTNsW3ONCblabdHim+gTFta7igaebjJq1V3SK/RDchy5YSVZHrAclS0u2iVk91f
+ ojjPqRbFmKZmrhFhKpTOuKbpS+0PBGA5kC0H15IVWU31KMY17dUgDCONThxsPExvbFqY61Mr6Mj8On1K
+ lAO6TmaZbqGYV5Z7YvpS3BDrmqm7NNicY6ReuHW1T+nP5LgnZeYOMT3qBhWkvNwStqUm13wnxjSpbNhs
+ AFbQUkjnbGP9RC4WewhwURp4GgOYmkW6SB8MASjmJd4OA0SciWxIVOUrS9uxiJn6QBgg4pQde55TgYiz
+ Imxc6ICIk7Rgv0u61pLeItEw00fM7E4+V5XAJiujQ5xVRFHPuUZGA1DDXB+tbdESgIWwR4bOAKYD2XNw
+ LapM3Bx3VFWHuT5Rbr+n5ERvKdv2k+j5aRuO+01akZ9HDQN96omSdQhD2ZGmldHxAfs8h5KUIeThFq+m
+ Y5AyQktYlroiVysnxjIROzoHp59DLdzdMp2addw80+5IK4pzqqaBABdnlMcAbaegPa4NYDleeGf1gpyT
+ 4JTdAi65BbHcFk6pLchltgBKbLXryZ4mkYDtoJeuAixbmzZcTthF24AAl0z6Zk9Qah5wYMStOgIHwlq0
+ IIy42V7YSe2pC3A0Q5BHMwQwmtH8jdqD7iHAdSCLDq6FOjIiwJER0Q1IEFsvGgb70nKn+vnHquBoB9q1
+ F4SpFDrjmvpxCHIOGUiPlTgyIrwjI8Ov4pBuszjnqTsYc5M7SBbqejmjOQIdzem7Yt0uWKSX+ajAivFU
+ HvMkkj0iTkrbMOgmZ7kBQ3zEFys6BxrpGUHjbGN7J+VvNGGPWb6C3sY+MaapTgWjYB8o03ZUW2uTzqol
+ TMszdfzs2R07e+Yk0TOcRi+MjtUL2LMiZykgL7WPLvGVSQ9BLk6T2yQ162306WZxe91+q188p4QWkYvC
+ XlL2sDjYmBXPcZ4llKFRkEbtzGTIPKlAGSszMcN3tf4rSqdvAjIQjoV4W06I4yF8YDYQjoWWPB3hWEQd
+ V9SzaRjD9Pv89upTM5eBoBogwCVIadQzhunr3e26OWHKFEObg43ErGBwsJF2O3UM9alCRtSUjzhRAR5j
+ V1bRvkyO+VFwo2gKOA4tM+gY6oty1ddPmNqONuzxRkSZiF7KimLVKNOWkCyJQ5NPpENMj9hebAqKpQEM
+ xyYraI4WMB3yLxnJ0QCAg7h9gM0BxkNMtx1ix7TdbFjnNnC2MUm3NJUEbMcTYZ7CCbAdecq6sB6zfftD
+ RjNJwHA0c9kIiuZ410BZxl9nABOxOhkg00WYwHBrfkvf/ptaZpwQ00OrbJ06dlseC1XAvkR/p1WpEkyQ
+ dA5t2GUep5VGLWA6smeKIHu2aWo6nxDTc6TcbePLNPnvtHiKi22aRPssz9UrvLgp5KpsL1v69WvTASbo
+ p+jM+D+Occ5qoFikaf1JSRN5tEETn0Ln+dtV5V42ZIr6sdyn1StJZZCG9XFLySryaJM+fXmq7kUakYpz
+ h7XMdVTttu8/XHzsDjj/8P4jSQ8JnBjH6YsyD4RjIT5xJ8TwyLqNVna0gOEgDejf2mP5t6qtKMs0Yot4
+ gGxXkT7G6ksimuxE2baS1GhtAcdREE9GArbjUL5c0CSKcCz0J0ajYNsulqWWGlvkaTXc9hMzONTnkH9T
+ lSbNogjDkqe0h6Q53jSQdmzsAcBxTpacG5Z9XIknWduQZiWYmOUT36ktmp4xTWVC7CN2BGSJfhyz6V+g
+ 2pxjpNXCHQFZLpo6ke5qOcjIFPp9rGYMLMBjEJ9vh3XMzdCroJ5yR2G2aJOrCc0Jz3qiUXuZcM0lkPPJ
+ 5cwAIa5zluwcs7GeS4NFzAFixLs/5kSdJCALrwHtwo6b2Cg4IY5H/KiIGklAlpqucfOdOG6omuMGsrCy
+ RM85RkZx5ZZSh4zWlGgB00HLl3aelFmKeiUdYnhog/v2mH5RyOSh8Op410B9AgbIdB331CbMCQE91AQ2
+ ONf4KtvHVJtiDBOtE2L3QA6xqnFU4y86FmrlD1J9CNCmnTtG4xmNIa1MdzreNVAmvQ2I6RHpMSmjKia9
+ sdUozKb+z2PKc7asYSaeoHNmrFPynEv7Z1q30uBMI7VlVLmtoorcIqqA1hBxu9yBcCyMoQ4dc3y0cSkB
+ jEsJ+riUgMalaC0SuzVCbIk4rRBaC8RufagWBDUNOsTw1GVkbeFKMLow6O72ZGOIO9K2spq6BmcYj7QB
+ gaM9GnCkvUA62m+QjrSscLTzwnOcH1Ni3dszhok4jGWNYfWH7I7Fts7KInoilEAgDdlFmu9odbiLat6H
+ z9HX+ddumZLJSoNybaRXIhrjmh6r8oVqUgxsavcJ4vha0rVSmugD4nrURz/VMznROsz07dM95S1fT5gW
+ UVdES0s4lnwb10SNQgAP4Q3xgDiegn5ZBXRdRZ4WVE+uf5t49elTMxxKGSbWGdgUbcoy5+gaEHGSNjl1
+ ScRabmvymtGoAIuRJe170prwtStuQKIc+Ql0RFKI1CU1INclDvE2pboayHUdzz9STRIBPd0+VbJLJ3/6
+ Ob2761GAcfKUYc6ha78g32OJgJ7ga3cVQJz3F2Tv+wvQw0hDBQEu+nNyhJ4P+UfGOSkIcF2SRZeQJfim
+ XvrvKXGfRA0xPZQvKE/HW4aM+CGQAdkusY2rJNo+ZXlC82mg6ZT/kU3/un0gIAtl5WOTsmyUlcV6AHC0
+ FYfq1E9fNw2ETTdlksnpeNcQkXP+QJk2QvuqO9zkiW1qDTE9lG7h6XjdsOqaV2mleuFJWk2XOSjkzepu
+ ZeOnWFBGvXADEEW1guQp0FpRLmua1VpRcVaIbtblK6U4gWjbfnilNqN0yrTRysyVU2aumtlhcfFKbO+b
+ HG6M0jzdE1YRw3g4gsqBoVFsBxCJkzJwqtB7QhaIOLnXP3rdUbY/5Nk2o3eIcAcWidZZsUnEeuRrj4iX
+ /PD2kOvKY1GTGnoG5vrKgxqlI87yAuERNysbu4axKLzO+JhpLCov00AONxKpp9ojoIffsEcVYJw8ZZjz
+ FHBdkBPV6qn2fwy+dn9PtTuI0lPtEdDDSEO7p7qiTiHXENDDOCe7p9r9mVyAQWVXSE8VM5hRaH2JldOX
+ WKlJws3n41YTlSSFFWYcUi9jZfcyVu2aNOrjEoqlh0zXIU2/tydbx6QrNUDTKb5nB4pKHW8Z6unvYE7H
+ 2wbKu4SB0Czz5XrxeXE1W8/v724WV4s5bW8CjPdHIORhkPbbCe+OEFzzf51dkT9aNyDARUpgHQJclIvV
+ GMv0OSsID1pPWJYFpXA6AZZjSVnWbyAsy8OBsriGhmieu9vP0Z+zmwfS3qMmZdmar+pTQbv/Nog487Jb
+ KZEl7mnL3s5+y7Ppb8UtTPMtb6LrxWod3d+Rd0CBWNxMyIQOiVspmcBFde+3+/Vd9Onh8+f5Uh5xd0NM
+ ChD3+kmnDtGYPc7z6ZtbASjmJY0JOSRm5SezL4WbUVZZtfLMJxqzU1pRNog52dnBkxOahUPUy1x2SugG
+ LAptvS+IdcxfH9bzv8gvgAAWMZMa7DaIONVyJ6QF7WDaZ6e9g4JxxH8sws5f4/0R+NegC5wYsqH4Tdbw
+ 1FdhEIy6GblGR1HvsWnkRBt1eYIZwHA4kVbr2XpxFZhRYcmEWJxbjlj80fiZGNNMihd8fd6cvf6ynM+u
+ F9fR9lhVlMF4GMf9zULE3VZr3CC6wx+pOO7TKtuGBOoU/jiHMitqwltIXOHE2W625xeXavWT6vVAvS8m
+ jLnTIsDdwa57t1E/n3PtFo75L8P8o+cfZEfdT7H8X3Txjqo9ca6xbYmotnWzWTm9FQ0Y3Ch1FZAmBjzi
+ Vv8kjF/jCidOs6UbL4l01PE+bvcqeEyuFQYQc/KefRMecbPSG1JgcXh5xoRH3CHX4M8z3UGsZp/BYuam
+ L/g9feW5TzRml9XL9IWyABTzUkbUbdB1qi0FXts2SrsBGLed4DF5o3Y7eb1FWFvljdueaHhQwwNG5BV7
+ GolZyXspIjjo35XV99MSWFlZMEJYBjBKk3qUtakhFjWrmWABt9hWgHHqp2bPHHksYUAfxl3/U6zmX9L7
+ pgPoONXMuFjsicKOcm1t44jcpuo5x9gUq+JVUL4wBlDX22z7s8vUdpNZnEebI2WSrsfhRMqzTRVXr5z7
+ pqOOd98M4XK0Gula0z3hu0cDclyqROGVdhrpWo/7iDN+0nOOsQzpZZT+XkZZbKmFmUIcz6HMX8/fv/vA
+ a/9YNG5n5CaDxc1H2itBkHbtVRoJ+Xhvyp+sU7dwx18ljHKnhRCXWhGlzg55eknZf8ijcOOku3bZV9kl
+ iNThzRJ5pMneYyI8ZlZsuVEk6njVmIz6gCSkdQY6wEhv0/IVhJaveLuWr6C0fMUbtXzF5JavYLd8hafl
+ 22zwlYScvUaD9sB2o5jSbhRh7UYx1m7kNZ+wllP39yjbRfFznOXxJk95akPhxKlzcS5LaGoZecI033oZ
+ XS8//U5b6dykANtpPWCy8AQCTlIdpkOAS33zQ5gAaWKa7ym+Ui1z4sCOQQ226/nqNFT1fqpLZ0xTut28
+ pzbbbM4xMoWIL0kv1CA9S2qxjvl9gPm9x1zQ78+JMU0F8/wK9NxUWUcYotMQ0BMdi+1TStn6BIRddykb
+ HIe4ymryqQ6kZv0SNZEmu7rjXUN0OG5ICWhxprHcH46yeUP0DZRho0wP6g43+H59dtrp6Bjsk3cj3qd1
+ WgnCgmKowIpRv4seSU4FuA7qNbeI6zlQLQfA8YN8RRIBPFX2zLmwEwcYyZlfx1zfD6rph+2gtolNCrKR
+ R4EB1PCelu8ecjHB7MKGmzAVrj3apIlrb2qI4Wmny7Kuz0YNr6A/mQJ6MgX9qRLQUyVY+U0g+a3p2jTf
+ yhBlLWS6CHvadocbPG1iYg/ojuYeCso+MjqjmRbL+dX6bvlttV5Sd6+EWNw8vavgkriV8ki6qO5d3d/M
+ vq3nf62JaWBysJFy7ToF20jXbGCGr5twHt3Ovs6p1+ywuJl07RaJW2lpYKOgl5kE6NWzLhy5Zt7lYlfa
+ jIMdKC8uQVhzr2bRakEsPTTGNXU1MVXWYa6PkoAD4nqaGpRqaiDT1XZT1ArRcX2sSEYLNb1JGaJ2aceu
+ fiEqFeJ4ntMq270STS1kuWTleP2FJGoI00LNuW6uZXXoLA4x8rp0qMGOQurU9QRgIV+503o8/fVA9hwg
+ yw/6dZmt0P6v1M6dDUJOYvfO4gDjD7Lrh2MhN7lNDPTRO3kAa5oDunkgjdjl3WM80gCO+I+bPNuy9T1t
+ 2ol1nVPPsTuYAAuaeanqwKCblaI2a5oFo2wTYNkmGKWSAEslwXtSBfakUqt1t04ndYq7400DsVvcE6aF
+ 3rAAWhWM7rUODa75FW/k2eZwY7TLDoKrbWDDzWjJmxRsK4m7u0AsZFa1GN2pKMwWVTxfVKFGwTSCV0zs
+ GTkg7PxJ+XbYASEnoRYyIMhF6nVZGOQTrFwjkFxTl9y8fSJtK7GfZUCAi1YkWpjto58YdFaU2mIgbAvn
+ wtyrin7/3O21KNssT9N363JJx1pkoj5cXPzCM1s0Yv/wMcTe06D97yD735h9efdwT9nxXmcAE6Ga1hnA
+ RKv2NAhwtd3ktgdeVmSriWP+siKsZAugsFc2EXbxlnnWPYy5j9VzqvIIT36ivXbK2CaCI/4kfeTkkQFF
+ vOwbid7H9sEjLE7tkoBV9cc3ryHJ7BiQKPx8YtCAvUkx0rtYAAW84rSS6i6f/pkbTCN2fnFi0Ii9+Z5c
+ fSSitt1Vmx/tymrPigSajKh/zL91Y820/osFIk5ST8vkHKO84ZnMSk0/RKTbavqCY6jAjUGqwTrCsRBr
+ rxPieDhD2QDq9XJuu8MDEVSlWZXk5BxA2MkYs0JwxE8et4JpyN48h9Rn2WFBc1psm+JKMMw9C5tpg1su
+ iVnJg9EI7vgzEZWH+MeR+gj2nGOU9/OC8NmNSTm207Axq+qGBWgM/uPiHTvvjiENLZwIyMJuyYA8GIHc
+ eTJBx9kOVbNP2sYRP33wH8ExPzt/eN4CdEdwW2EOC5q5ZanwlqUioCwV3rJUsMtS4SlLm9Yko5rtOdDI
+ zxUWDdu5VawJj7ijeKd+lPdadhWyIiaNC07zOWdAe3FiQIbr63z95e66Xf4gS/Mkql8PlAIG5I0I7RQi
+ wla3OgOYmq+dqO1eG4W8pLGpnoFMhJWgDQhwJZucrJIMZDrSr8/ucdBnzRkQ4Gp2InGyO3EIYEwFxM1U
+ N7Umx2gxyCeiWH0hrD5fr+l338Rhv+xSN5U4R35iAfP+SM9hkgFMtDYaMF+x/2u5rS+a8QSyrycBa/P3
+ i+1mQ7b2JGqVcZlWSQJW8XbPhaA8F22bZX+oUiHS5E1i4zokfl3yHySLNyJ0TeAsuSgI65U7IOgUtfwt
+ YThb0HA2eykds7zOuqeW0pxwYc19ffHhw/lvqo1xiLPpA4omhvpOw13Tv1VEBW4M0jtIjXFNxDeIBqXb
+ Fvez5fobeSq9AyLO6XPJLQzxUUpni9OMt78vbonXOyCOR2XW9hUtsc8M46B/GWJf4u5mR4TTk5YWj/In
+ QYwAKZw4lPvWE46lSh9lUaP2AczzpkTO05p6C0GHE0mE3VMxdk9FyD0V2D1dLqPV7M95sxYyMX+7qOlV
+ S7ukVVVWtB65Q/qsO752Z3rbPlLzM8WpYZBPvMqMs+dqddq0t5dB26DK5nBjVHCdUWFamzVh258Exalz
+ lvFYbNmX78Cmuxn3pt6qHkJcUa7+xBE2pM9KfrAA3PUX6c/hqGaZO2oI12BGkX9k30KbtcyqZvm0uOPk
+ OZsFzOo/uGaNBczL2e01W63DgLtZraNk203c9DfbwJEfmYHCbOSHxkK9XvJjA/FAhGbnVl5iDKjXy0sW
+ ix+PwEsgSGLFKg+qk7qPq+8k+4BZvkpNvWhCkrK1zuHGaLvhSiXq8e4ObO/uYHmPnBx3BPNalcaiLNgF
+ M4Db/n35rGp1wtJcNgcauyXWuGIdt/2iLivWKWug6RQxJw0GyrLJ2pb6OJ0YzfTnfTSbz66bPRBjws4t
+ Dog4ibtIQSxiJvVYbBBxqibM9BXhARTxUtaQc0CPM3rJ6qcoyap0S1kBfMyDRKT0yy0OMZaHlHfSCvQ4
+ o8e4fiLMNEV4JIJICV+m2KDHGYltXNfM09YFSIw6fiR9AAOwiJmykq0DAk71Spi2jg2AAl71JY8s+Ksn
+ Tkmnw4ibm8IaC5gLtfo0Nz102HR/Uh/lrMs/CFMFDMq0XS3uv8yXzU1ttkGjffyCCdAY2+xAfMAdGHfT
+ 6yyXxu2Ud+UuinvrKud6JYp6uzUfKW1CTIDGoM0IAljcTGwlWCjqbV69Hw60/hKuQONQWw4WinufGQUK
+ xKMReGU4KEBj7MuEe3cVinqJLR2TxK1ZwrVmCWqtKLuDQyxqFuF5XEzJ4+qgkBKg570RgvOjKfHGOsRJ
+ wi8wNQMYJah+HalbufcBT/+QksZfygTd0ZE7ySxZ0FKF9+y7zz292QO1dZq/fc6KOCesteSSkHVBrbB6
+ CrOxTrEDIecDadcTmzON1+lW3vFPsUg//kIx6hxoVE8pQ6gwyNfcMbqvwSAf9S4PFGSj3xGdg4zJDblc
+ MEDHqVqwnAfGQkEvIzFPGOrjnSb41HS/sW7SAFrO7DEVtItuCMhCz9sDhvr+uvvMVEoStVLvikFCVnLW
+ 6SnMxjpFON80P60os9gMCrMx73ePYl5eWp5IzMp4bCwWMnOtuPFP2hxBi8ONzLulwbibd8cGFjdz01en
+ Tfu8YNXrGgb5yKmrYZCPmqIDBdnoqahzkJFRrxug4+TW6xYKehmJCdfr2g+80wTL5+431k3C6vUv93/M
+ uWOoNouY05+HsqpZ4hZFvNSRNgNEnNz3DaAAiUF9h2aAiJP6hssAUWd9PEQb2eWJquhnM8WcGcLxjEcU
+ bxRRkCOqT2GbXRrfKnQv9J7DQXx/i2TWNaPxxNvEE9R4b5HEoM88g6/XAW+3HBh0M0rNr565EqffiG+c
+ NAz1Eeshk4Stzb6cHGkDgs5u002GtCNBK/Wd0lds3slX3uyQr9jckO6HfcKw7RPQRXwT8hWZ8dH9nfyu
+ QudAI+vdgc3CZt4Tjj7bpM/MTczxscsgT/nDSUU49dSnJu338QylCTtuxjWDV8u4G+6duP80jwRpJ0WT
+ smx/XK0uL2S19I1k6ynbNv920fxIs50o18aaZWCAiDOh1Xg6hxipJbQBIs52DarvtNkyLu2zVyKOyjg9
+ RHm8SXN+HNODR2wO3D/uzolVBuYYidScUmCkzjESifH+FXOMRRIiEnFeE2d9+TyeiP2ONSHJqEuQWMRa
+ X+dwY5QlXGmUYWcq3ui5EZOfm2bFoG27+pOa28QNZ0gmxHpMi+Gz/OCghs0TXSWJLLXU4aSlREc80yIe
+ jpv05+EtYramkaghJaGYVBKKNygJxaSSULxBSSgmlYRCK8G61A68MsNEiPoGt8/VTY8fUg3gugnx3yrw
+ eMTg+keM1z+xEMRXhhqG+qLr1YzpVCjubRca46pbGrcv+We9BM+6GUpk1B8dBxk51QJSB1BWJNMY2MRZ
+ 3xHGIb8ayQoJYPJAhCSl9yw1DjeSx5scGHSr5Z8ZVoWhPu6p9ixubiZZprS5dBAPROgmvJPNHYcbecmh
+ w4Cb1VdG+slN73P6PpU2hxoZpeAJxJzMcltjMfOSe7ZL7GzPmWl6jqbpOTdNz/E0PQ9I03Nvmp5z0/Tc
+ l6Z1LtSzoSYH0Fbe81rgaFEVv7BWfvU4fJHoq8DiCiAOowEBth3oq4k7JGBtG9BkZYuhPl7hq7GAeZ/J
+ tlrxGNKQcBVAHM54DjyWowZjQvMy4PBF4udlVwHEOQ2HkO0n0OPk5RmDhuzNuhDtRox0uQbj7vbOcOUt
+ jdub28GVNzDgFtxaTeC1mgio1YS3VhPcWk3gtZp4k1pNTKzVmnVHiW/RDBBycnr+SL+/6QSznr+eBK1/
+ M67YeQPZ/JmVekjKEVdHNzHA90yeDqxhqI93PzQWN1fpVk2U48o7fNQfdAW6w4zEmteOzGjnzGWHZ7Gf
+ /kqc7KNhro8+3RSbCc+cX47OLOfNKcdmkw9/J6aeAUJOegris9LVwpjtaghRnGcxqTlhs645IX/lM1CW
+ Ta3TFKciOr+4jLabbSSe4qaWIskxycRYUbY/yLZHRl0jaJJw/BzUPqNvcMWdxhdvu482+TGty5I21R63
+ TI0WXb5NvOjSF7Guoqd9fEoNfkTT44n4uN2zo0jWb5ZdnCJplnkJiTFYRqKJgMzf8SMRZO48vwiK0Rgm
+ RHkfHOU9FuW3C/5db1nErJ7f4BLQlkyMFVwC+oTj5xBSArqa8XjvL395i3idxhfvDUokwOOJyM2bHes3
+ B5ZIjmUkmgjIjP4S6XQEv0QyDBOivA+OApVI26dY/u/iXXQo89fz9+8+kKM4BiBKIs8kTdL3YcUTaJka
+ LaiAGjUCZ1Ec85x/rQYN2H+G37ifo3eubx3S3D2G+OqK5asr2JcS1uQ1MdhHLgDR1lj7Q7ljnZ/EAJ9s
+ AHDuR4shPsb9aDHYx7kfLQb7OPcDbie1P3DuR4u5vq4up/o6DPHR70eHwT7G/egw2Me4H0jboP2BcT86
+ zPQxPpEDv41ThT3xnnaI6yGmfYcAHtqaUx0Cet4zRO9hEyeZThxi5CRYx4FG5im6Z6i2mFWVMkV2YkxT
+ s614Mzq2eSVtYQywHjPtTbyFut527I13xjrrMdPPWENxb7n5F9crUdP7FIumAHqKq+QlrkgpYbOm+bTx
+ dxs6ivPHssrqJ1JRizngSMwX9f4dyvUDWK/nXdqyJ6Tl1OThNv+Bxn9w+KZdTpQ0jGlqt/IOud+wAYrC
+ vNe+3caHn1n32WZNc7W9iH55Ry28B8q1MVSA5xeaw8p71Hzj5hk1enPxC9EhCddCG0uCRo3a8SuiRRKO
+ 5QNtBKUlIEtEv6qOMm2qc696+s1U7H1Myjg2C5u7Z1a99q0Sjt4QwDHa305HiuNBLXGTsqIhKixus4UK
+ 4/si2KBF+Ws9v72eXzcbuD+sZr8TdyeEca+f8MoXgr1uytw7kB7snxf3K9LKtD0AOCLCUgwGNLh+n9/O
+ l7ObSO2auiLdJJfErNNvjc1hRsINcUDYSfluxeYQI+GbeJtDjNzb47k77bT1Um2VckvoMHgUvjjPcX4M
+ iNHgiJ+XydA8xs1inhzWTH5kORsSsYo+8Qvu/TMVvjj8+yc892/18Gm9nPOyt87iZnrmGEjcysgiGjp4
+ v/xxPXmlWnWsSaol8eIioQg6xPHUVbytiaKG0UxfZ1eTDfJYk+SsoGVzkJGwepYBIS7CdDCbA4yUbG9A
+ gIsytdGAABche+sMYCKtGWVSlo00VXAgLMuCmkoLN4WI0wJ1xjLRJgNqiOWhzGvuAc2xXK3UJ6Lx9Cev
+ JyxLWlAtDWFZHtMirYhjIQ5oOflDXghu+bkDLSBsu8v89b18WJ/T6WunOiDo3B9zhlBSg22xWj3IQ6Pr
+ xWod3d8tbtekcg3Bvf7pzzAIe92Esg+mB/vX68lDL/JQg6MVdz1gOiiF3el407Cu4kLsympP0fSQ6aIV
+ dgOhWz5Mxz8YHDU9P7jp+YGYnh+c9PzASc8PcHp+IKfnBzc95+svd9eUT08GwrEcC7qnYQZT0124urtd
+ rZcz+TCtou1TOn3BdZj22CmlFAh73NMzCoB6vITSCWI1s/zlMy0JesK2NOuS0TaxdUDQSdrM2uZsY15O
+ X8Z7ICBLtMlKuklRto1yO0+A5pivV1ez+3m0uv9DNupIN9NFUS8hL9sg6qRcuEPC1kW0+fiLapQShlgx
+ 3heh/bKSH6HlsQjcm7jw3MNF81TI1iWhWYrxWAReJlmgeWTBzSILXw4RgekgRtOB8hGsS2JW2gedEKuZ
+ 79aLq7k8lJbXDAqyEXKAxkAmyp3XocF19+m/o+1GXBDmq2iI5aENSmmI5dnTHHubJy2xPhCmJaFdSWJf
+ hfyPRGXVLFGzGQTFZaGod/Maou5o0968Q6DshGpApou2aeVAWJaCmjlbwrTIP1xsNxuKpkNcT15QNXnh
+ WggzuTTE9Qjy2QjrbKSWmsQd4nrqnzXVIxHTI8h3XAB3XGqpmg5xPcR71SGa535+qw5S3/3GeT5MbxLR
+ tiwmdwZHNG68zTHL1Ypo7Rq4ghrHwl1/U3yLlOrtMMRHKHdNDPZVpNrbJQGrTOvskWxsKMB2OMrCuNme
+ hawcUNfLuWr4eh/3dbYnu1oKs8k8/C+eUZGoNcl2O6ZWoa73KRZP7y+oypZybVn8/mIbH6J7qrAHAad6
+ YdIsfViSrQPqetueuCoBZAGwL5NjTi9AIIcbaS/LsnJLdbcUZiO95QNQwJvuE/oj2lKurSiZxUgPuk7Z
+ iOUkZIe5PlFX21iklOa4Q4JWRjq2FGjLt3HN0CkM8U1/E25hoK/gJ2LhS8WCl4wFlo4FYXFtC3N9dZmX
+ L9PXKbIwzbf+Ml9SJ58ZEOQi1Y0GBdkIBY3GQCZCf96ANNchLeAm4mQxasCjtB/bsEN0OO5v5+qy/R3u
+ +p9lVMJYvIWhvqg47plOhQ7e+/nXaLa6PVdl9OSejAEhLsrAvAMCzheZQ1KysKEwG+sUe9K0/vXh3W/R
+ 4vbzHTkhTdJnpZ6vS2N2VnIAuOnfvNapYJ25SZpW+Z/RVj5zm3j6+0ibs43fZYtsV9JsLWOZykhtMDu9
+ VjIg06XG+dUs/6vFvSyHm4SmWAHc9B8q2RClrJxoQKaLmufdnN7c6+svtLVYHRByrmb37QdZf0x/0wDT
+ sD26f/hEWNYUQGEvNylOJGCdXwUkhQ6Dbm5C9CRgVTvo/Uo2NhRiu2TZLjGbPHzxZ/OZCfUBxRxQJF7C
+ 4qnKzwXePLAMetaWI8+a+r2ZlceVn2DYzU3lpe85VnUk2aggxBXNHv5i+RSIOa+WNzynBDHncv5PnlOC
+ gJPYfoBbDqe/8usZHcbcQc+AY8CjcPOrieP+kCTy1EHq96B6yBagMUISyFcnqd959VJPeqyXbOulzxpY
+ TyEeLCI/4f2pHpZrRvPMMvjZXU54doPqMVuAxwi5C8ux8oFVr51Aj5NVv+mwz82p53TY5+bUdzpsusmD
+ HcA4R9sp51R1JglauQ8KgCN+Rva1WcTMThC4Vmt/5FZpLg3b2cmB1GTtj+RqTMMw3yXPd4n6QhLWEkyI
+ QdkU2CtBY/GrYlQCxmJmGE9uCbkR3nuwDCtPlmPlCbfKdWnEzk7tpbe0olazA4XZqBWsSaJWYtVqkqiV
+ WKmapM8a3c7/h29WNGQndlKRUfP+zwF1N95P1X4Pe+ZGeqrGQeynw9dXNY4ISihfvR7SXYUNeJSgZPLW
+ 86wuq4X6vJd876XXG5rwE+p/4DBeGwAReWOGtgUm9cu1QwMy2EjuCr1Ro/doGV5eLaeUV2FtBX//3Dgm
+ 6G4sR0tFXtsB7qObv/HaEHgv3fqd1ZbA++nW76w2xUhP3fid17awDVoU+XifX0T3n+Zqtslks0E5NtoH
+ LAbkuChTnTTE8ag31t9lmRkXSbRNq+mTcTDeidAs7UC0Noxj6vahIyx26ICm84O8VX9cf76IKEv3OKDH
+ Ga2+zM7Z4oa27YdNemFsZ0/TOzjo5+zYjuCm/9docyySPFUlBimrGSDiVPkv22Vb+bzw3LrAjkF94H4F
+ nrdfm8eFfuknCrKp0oxnPJGYlZ+ckAGKEhZhzK72Tg6LYBvsKJRvXQfCtqiZPWpHcMrneS6JWkm7GEIs
+ Zu6e8jThyXsc9z+neXng+zsc86t7wZW3rN88K5J52CW4HjOi1QEhl1EQ749Aqw5c2m8nzJNGcNvf1XQ0
+ awfZri7D0lwdZLtOq2n1DwFn9fMJKjtuu87WG0T1iJyYqn2oviUmRjhhoE/wfML03d0srr7RHx0TA32E
+ B0WHQBflsTAo2/bPh9kN82oNFPVSr1oDUSf56nXStrLXP0Jwr5+aGugqSMDP5FTBV0Lqfv86u79XJP20
+ NRKzctJaR1Ev92R950pPW43UrMu7v2Syz5frtnpq1kdfLe5uaYnhtUyJRkgij2NKJErC+SR2rC6V6cmm
+ gYiTmjg9hvjISTBwg3E5u72O5KFpPLlW1hDLQxi/Oh1vGZoPQ0iOhoAs0UtWP6kQmVrzTG0DROj0jGis
+ eMRFB3TGMqWPtBSUx9uGIt7kabQrq+/RsRDxLo02x90upSzvNiqyYu4yeSBlYXSTsmxtd7hIon1aP5W0
+ 9LBYy9x8TK7Ckpw9ZdkO5fTtz3rAdoj0mJSMbK+DllOkKS3RFOA4+PdAeO+BqOP6SLvWFtE8V5PXepWH
+ GlxzcoQeiIZoHv01E2WVJwc0nad3SlSlzhnG/43O3138opZNUGvRR/HzzwuCF6ANe3S/WkX3s+XsK619
+ C6Cod3qd6YCok1BvuqRpVZ8HH75vxbnslMq//qR4bdY0b7Lp70dOx1uGPCvUfkHR9K+TLcz0NUu8ynLw
+ QDqvgYJslCdRh0wXceRFQ2zPLj7mNbXMc0jTShzL0RDTs8vjR1LSN4DlID6m7rOpr/pOWJgfQD1eaiZz
+ YNtdv4u2VR3RZhEBKOBNyLoEsuwP53SRhEDXD47rB+RKyaIUsOzibV1W9ITvOMCY/dgfyDoFAS5iIXRi
+ AFNB9hSAhX5h0FX9IFt+OBb5lNJ6TSYG+mQdGskahlp0mKxpzkRUHuIfR1Jm7SHTFbAbLIIjfvLmFTBt
+ 2olNG6c9oxKYXvsNlGnrNixsWjrN9Ijobja/j/aPO1L55NGMxVNtt/BwJ8tYtOZdWmCs1jEp0sUbRLrA
+ IxVlkXIjKBY2t024N8gNoGg8Jv8euZaJ0S7eJJpzp5j7GIMw6GaVUPjuOs2vlM35esBxNKfNaPVbKOxl
+ tNctFPY2bdOq3BMHe1ADHqUuw2LUpS9CTd1XBYQtd5tfOLfUIEEr54YaJGgNuJ2QAI3BupkubvoFv0ck
+ fD0iwWztC7S1LxgtdAG20AWvPSuw9ixlRtbpeNcQHYQg14EGCDir+IWsk4xt+julWf626vzjgbLf0UCY
+ Ftp+DAMBWQKahaAAjMG5oxYKeol3daAGG2WOsDkjWP2LtrHXQFgWytZePWA5yJt7mZRlo23vpSGG5+Li
+ F4JCHm3T5PTtGcdETOMT4njIKTNApuvDR4rkw0ebpqfNiXFM1LTpEMfDyYMGhxs/5eX2u+B6W9qx0+9l
+ Dxmu95eUfC6PtmnyvewZx0S8lyfE8ZDTZoAM14fzC4JEHm3TEe1J6QjIQk5lgwONxNTWMdBHTnUTdJyc
+ K4avlnGl4FVyygiDc4ysNHPSa3H/Zbb6EhFqrJ7QLPezP+YX5N21LQz0EQYyTcqx9e+G9uKRqNRRx6tW
+ Sk1Vc42s1UjNSpqCZc++av9NXYzapAbbevmwWkfruz/mt9HVzWJ+u24G9Qi9MNzgjbJJH7MiyoQ4xsU2
+ DQhmiibErNIk3R8ou2pOUHnjyr9n4uktLtYyTYn6JpfruPyRCSUEgnv9hBIDpr12NQogqirwGdAscDS1
+ y/V8GfK0mQZvFO4d0XCvX2XIkAAN743AvOcD7bWrjJ3uAwK0ggkxKF17r8QbS+W+fVrHaigrMHvZqtG4
+ Ac+Oa4GjSbb9D26+NgRwjHbH2n40+5QEnGiICo6b/jykVbZPizp6PudEMwTjMWQjZb8JjdNIpsR6Lg/V
+ Ljxao4HjcbMEnhP0KUccs87DEZiFm1GqPazmy3bbVlISWBjom94/MiDQRbhUk9Js68+XaprI5PUaesBy
+ HI5EhwIGx18XHz6cT16XpT3aplWeOMRZRbOcKMfWvQ1q3jV1xQ3RDBi0KB/e/fbne/VVjfrEv339T9mS
+ EuPBCGr1lJAIBg9GIHzDYlKYLYrzLBY8Z8ui5jyb/rk9gKJebuqOpmz7ayS+h8glDvqJX+G4JGhNLjKG
+ UVKgjVIKWxjokwUYQycpzEZZGs0lQWt2wTFKCrRx8yaeL9tMxbvungXNpOkuNocbo92BK5Uo6H1u5iwW
+ DG1HOtZuvztZY4h0SxlpwHgngiwQzhmZ64RBPvWpUZHElfripU4LNSwm6HrIAkaTaXdMGf6Gw43Rpixz
+ rraBR9wR+Ql0eE8E+jNjsB7zcfsUV2x3Qzv2pgBgFOs95xiHTMMqQGzc8auyml6rdRRo4z3hGglba8o3
+ qw4IOtnPhwl73PQbZrCOuZ1QyWjpDaDj7FKdk211FPDW0bb+SVY2FGjj1PY95xqbjMG67IE0rdHs5ve7
+ JeVDRZOCbJSNak0KtCVHji05wjZq4mkY6KOs1mNhoI9zI7D7QBiXMCnQJnhXKrArbQZhE55RgrZzvV4u
+ Pj2s59FqvianogWj7m15LLjqhsXNpBVPQXjEHW1eo9vFdVCIzjEh0t2n/w6OJB0TItU/6+BI0oFGIpc/
+ Oola6eWQgaLe9mtIwqA+xvsjlJt/yZo0JEZr8EehbP+K8WgEdhnhKR/IJa5OolZZ4J2H3NOe90cIuqea
+ wYrSrFw0e/iLnuUNErMSb6PGYUbqTdRBzEnuCVmo7V3cfmak54mCbE3PI3ss4vpYMbQGDvmp96llIBP5
+ /nQQ5GraEmWS7bI0oUt12rYvb+grjbokZqWm5sBhRnKqaiDg/Dpff7m75l29xuJmzvkOKOCNk+RdVKXP
+ 5XdqVrBg2H2uRjao430ODLvVrxyt4gBj+/GmOGZ1uiFrdRhyE/uGHQOYkjRP1UeLjEsfUMib7XZ0o4RA
+ F2VJaQuDfEd66rmtUPVX1oOJPJFNW0u2otUC4GSnDnvcIq2yOGfbWxzz80bLIR6LkMeipk19xngsQiFP
+ IiTCwGMRmK0DB4f90XL+590f82uO/MQiZk4R0XG4kdOddnG/n9qJdnG/f1tldbblPVa2wxOJPmri0B47
+ 8V2AzSLmZvZmxRK3KOINKwhGy4FmIRN6X9GhEXtYITNaxgxlBPV9NmxAohC/M4BYwMxokoOt8X1cb5/I
+ qoYCbJxmMtw+ZnRhTxRmI84EMEDA2YxBBDxgFo9FCHgILB6OwFzIz6NA4rQFFWnlW4xHIvBLIzFSGomA
+ 51h4n2PKwggGhLiorxQNEHKWjFa2ggAXbYkDCwN8tMUOLMzy9euck99OGiRmDXgrgjgmRKI26BAHGona
+ PzRI1EruK2Ir71s/NltTcZqgsMIbh1wIubjXzxg8hwRoDO4j4HsCqG0DZOcB6zcRflfFlLsqwu6qGLur
+ IvSuCuyu8saFsTFh1ugtMnJ7c3f3x8O9KmXIs75tFjXLvz2mFb01CRrQKF3bhDFshDjQSOJIzyQODdu3
+ dcU6d8XBRsruATaHGKn5WONg41MsZLMvqzjWEwubKZt02hxspD53Awb7xNOxTsqXgiM9sZa5mYk8v10v
+ F3NyS8piMfO3gMYUJpkSi9qcwiRTYlGnmWASPBa18WaiuJf8hFosbmY1rADeH4FRCYMGPErGtvueCWrZ
+ YKK4V6Ts0xVp7fUG3U0xejdF8N0U3ru5uF3Pl7ezG9YN1WDI3bwuLerqlW7uUa+XXXjahtEorGLTNoxG
+ YRWYtgGKQn2FfIIg1+lNMO/G6jRop7/+1TjQyKkjkNqhTWf6yxkbhty8OgerbdpJicTXMQaJWLk3vkcx
+ b7PMP/uJtg2jUVhPtG3AotTMt52QYCwG+0Jq9J1nc4jqF9DFisJsUZknPKMiISun0oLrKlbLA2lzlEWa
+ ZwXjYe5AyEnv/A8Y6iNs5+OSPiv1LZUNQ25WG85tvcncPr9qv69WX+TVskyiDdpAAjhGU5KqP3D8PYy6
+ 6XO9LRY2Z8lP7hgNaICjVGldZelzGhgK0IzEo78rBg1wlPYtD6OBAPBWhHu1Ez25jdBTkI1a5p0g29Vu
+ Mnt7d80pphzatj984l35wMFG4kIKGob63rVL5DO1HQ3bM9bJZsi5ku98j8E+wUtLgaWlCEpLgafl8v5u
+ Naeu+KJziJGxEonNImby15I66HHS5zA4tM8uwvTC729eNSRcfUv77UHn3ws8Meh1hEN77AGJ402ZujoK
+ /lk3NGKnFyE9ZxnVik+894UGiVmJJbHGYUZqaayDgLP5+CGu64os7UmfldOvhQRjMaj9WkgwFoM64AYJ
+ 4BjcCfIuPuonT/yEFUCc9sMUxpZjuAGI0g0JsnKsxkJm+mDigEE+Yg3fMYCpT3rWzTNowM4q+JAyL+A7
+ BheH/edRuo+znOPuUNjLy1In0OPkFoEWPxKBUwBavC8CvQHi4ojfyJ+CFcNUjMUJjIH5D8cNp9AbUMTL
+ n7MPGrAo7XgIvaEPCZAYnPnEFguYGU0ssHXFaVjBbSr6uEZPYTbq4KsOos7dgencQbWUCH+WxZRnWfCf
+ NeF71kToUyDGnwIR8BQI71NAnlV/ghAXeVa9DgLOuqQPbmscYGTMhR8wx9d838j/jhwS4DHIX0xaLGJm
+ frHt4pif3KLtOcTIaHsOIOIM+eIYcfgiqUUJtrFa9O6a+sWSx+OL2M6XvT3uN2nFj6db8GjszAR/32v9
+ ymsaQ4rxOPQGMqQYj8Oamu/xjETkNMwBw0gU6jfAAI9EyHgnn2FnTG/F9RxiVPXuGzzkrsYTL/gRtyVW
+ rNXid3rZe4IAF/m9wwmCXXuOaw+4iLmrRQAPNVd1jG1a3y3nzU50nDdADo3a6XfWQFFvU2+QFyEB+JEI
+ T3FWBIVQgpEYx6pS+8JsiR+A4Jpp8RjLHnhN/qj0l6KQYDRGkwLE7gJqGYlW5tn2Nar5OdzW+OOJuqyC
+ IjUCfwxZ/apXXcRVsTCJL9Z56LN1Pv5snQfn8fMJeTv0QsavY3i2gwo8Q+ONl1ZVGZBqLT8eQXbzDvVT
+ aJzW4o/2k/61A2gYiyIr2naebVioXjMS7yCLjqzuipCgkIYJjUr+qM5EUS+5TaOTqPVwrA6lUGvVP8nm
+ J/fELQsarZm8IytfwYzT8/4IIfWoGK9Hm8+x+aXMCff7A8pLMVpeakuiBMToDCNR+KVXz3sjhJTDYrQc
+ FsElo5hQMqpjdnn8GPBctLw3QveUBsToDN4odbYPCaFwv588SwngvRHaIedouwmI0jvQSF37T+0utP3O
+ jGQ40Eh/p1XJDKBQ0KtGtpll4AnFvaxOXkei1rwsv7O68AMMupm9d7Tnrq0GzykOdBz3c2vIkV5m2+WQ
+ 95Z55h3scfPaDj2LmblfKkACNIa6Nmbm1nHc38zHCghw4kciNN29JChIqxiJMwy/BsUaNHg89vieRqP2
+ dlEm7l3paK+d3YU3BWiMtvgLebINxWgc9lOuG9AojDfRNjzi5rUdHkfbDXkZq7qozc2cJDIFYAxePxPr
+ YzbdKVmDZipgnAcNnqEuLPI5u54bYMwdUpqLsdJcBJbmYrQ0F+GluZhSmou3Kc3F1NJcBJXmYqQ015cS
+ PcT1k2DGMByeSLy+s7/fHNLX9PczRVBdJ0bqOhFa14nxuk6E13ViSl0ngus6MaGuC+vzj/X3Q/ri/n64
+ CKmjhb+ODu3fj/ftGWvI6qDlXC8fVuRd7AcKtHHKR4MEreQ5BQOG+ugTOy0WMzO+MbRY1Eyf4WOxqJle
+ alssaqY/xxYLmqlf/fUUZmONWTu0Zf9zxtj95QQBLuJLlD+hFbbUH6nt8I6xTfPl4vO36H62nH1td2Vi
+ vAjDJKOx6nhDXF8TcYxEOo+eSmIGhhW+OKrwqxgPISbxxaJnSJv22clFtUOP2ekFN6wYjXNI0+oNYp00
+ I/EYhTusGItDb/rDirE4gbkZq1mMgzivliGBLwZjcB/gfRHIxbEF+9xqtIEvV/SYnfERJuIYjRRWEveK
+ 0TjZITBKdpgQI4rFNjiOkozGCivFesVonKbqzlIRGOukGYkXWpKJKSWZCC/JxJSSTB2k8uYbxOo1Y/E4
+ HXhMMhaL/OoeNIxGIXc2YIUvTtNoZHV0cY0Vj/3tmeebs+anKm0+SWQsDOzikL9JPLZep107+fsj+Au5
+ ZscEejN1wEAfuZodMMvXzK7i7wvr4qCfMZKkg45ThYu/E4c9Bgz0bWOGbRuDLnobReNAI7ktMmCgj9jm
+ OEGIi9y20EHYSX+X43mDE7ZCzNjqMN3vjOrNIEErvYrRONtIXF7bXVlb/qWfVk6uYm0YcLOcgIv5PTL6
+ HTJjhR5wdR7qd8zu98tNCUEfVBkwyyf/K9F2xInlvxg766AWJBpngpLF2mZqigBp0YyfxMf6qZR99FfO
+ 6znQ4I8iixPq+D1o8Edh3FPQAEVhfvHu/9K9HTcr69mu5tyDE4lYP6U76tdVJgp52/U9ok1Wi5pxygYO
+ +dmf5o59dR+wdpZ33az2x25dEm4+N3koQr0R6hTi/JFuH1jIfKQuJdNTro0zcIWuHNb8UG7Fga5TlGuL
+ tIVpqU6dBczN9KCs2JVkb08C1tO8k+aYuEpjst0xjEWhblwGCSbEiNLiOTiOkozFIu8YBxqmRAm/pJPF
+ E+3UPg+5TZoDiMT5egb/mjDoG8KRLwc566fA66YErJfiXSclYH0U77oooeuhjK+Dwl//xLfuCXe9E3yd
+ k37pwCRNmtrzKOLHlCO3FFicZuk0+oAywAMRuDuaP3p3M1e/8pPGlyLcpqun5cpvuPrarc3MzTwtyM6O
+ g4z0NfLQtSgfQ9akefSvRRO2xuXY+pZBa1uOrGvJXdMSX89SLWPDzrR7T67d87PtHs+3ezXoE8XJv2jO
+ HrN8zrgFeawMNIxGIW9eBSvgOCrfcK/jxHrM3HPv4RE3eRsuSGDHoFXYzkwNWT5lCf1tzoCBPvLbnAGz
+ fM1HMafvMegNfBdH/QFu1Ms/ZfhsqRNd3LktqrMsU5q+rK4OWs5DXIk02lXlPtocdztiaevQtr1dX6h5
+ CUATayDszNPnND+NgyUpx24pfHHU74w2NuKAIzW/a6tAcSLZjtFI9EmriGMs0o9jnGe7TFb3YdEGDxxR
+ rWVFH3+3YY+7OYvmjrIjDIqxOKxJRahlLNpR1uJvFNJQeeK2jwb7ybIddiRyUQmWkZyVx5FVx7mbPeL7
+ PLLWMEfWL+9G/RkvGA3SsnYzZ5op2iSpDlrOdl4ep4dgkIiV0UMwUdfLGq/D17gRAaMQwjsKIbjjBQIf
+ LxDs8QLhGS9groCPrn4ftOLsyEqzQavqj6yoz11NH19Jn7yKPrCCPmv1fGTl/GFkIzkSu5AminrpNYXF
+ 2mbtdpG7vTbsc5M7vg49Zid3fUGDE+VwKCu1xlI/2kqM4fBWBNaYDDIic/oztRGgcbax3c9BbcVAMw6c
+ bWwmkNIrWY2zjIx5kuAMScY3x+CXxqfvg6nLY2kcbuzW8xS1fJgfuXpDYsaKa94egzqHGxlvxADc7ye+
+ GQNwv5+4ryCAO37mLnkm6VibDo5qk/FSxcYhP+eU4T3YtB94mcS7/5r1OysxvDmEv/OaA5vu5/ecefUD
+ 5dh4szwN0HEy3pwPFGZjZAMH9rmJmcCBfW7OW3TYgEYhZzSbHczxRRb9Pr+dL2c30e3s63yq1eZM4+Je
+ wsv5akXR9RDiim6vWDrJmcbsQFhUowc0xyaL6lS2SDZxEh2LFzXPtk73srEXV5PbEF6JP9ZLVRaPshHz
+ mAlCB3jcBETd5uVG9hSj6vwdOY7Ges3nAeZzr/kiwHzhNb8PML/3mn8JMP/iNX8IMH/wmS/54kuf9ze+
+ 9zefN/7JF8c/febNgW/eHLzmgHPeeM95G2Dees1JxjcnmdcccM6J95xFwDkL3zn/3O/5RaiC/e7zEPf5
+ iDvoxM/Hzjzs1MfO/SLIfjFifx9kfz9i/yXI/suI/UOQ/YPfHpTsI6kelOgjaR6U5CMpHpTgI+n9McT9
+ 0e/+NcT9q999GeK+9Lt/C3FDLYimsy6bze1KTklWpdv6NAeXHMsnA2I3q2GERXQVQJy6ivfqzXWRkv0D
+ Cni7HkeV1seqIKsNGreLOp4+8ArCPnd54KtLvXWXivOLy8ftXmTPkfxH9H3yTAYA9XqjtNhGP88D9J0B
+ iZKkW5Zbcogx3W6akJu8nD4hCzdgUeTve/EY/fyFF6LHx/yXYf5LxP892bHEkjOMFx8+cvOhjXq99HyI
+ GJAotHxocIiRmw8RAxaFkw8hfMx/Gea/RPy0fGhwhjHa1lVTPxFmSliY6Xt6ibabrbqA6vVQU5Qm6Vrr
+ 6v3F6df23gqqHlA4cWTOZJx5Rzm2Li8yjBrpWnlGxNau99UmCjEbuDRoPyU5z67Rpr0o+bnNZiFzYI5D
+ JUAsRq7TOcDITRM8PQLyCcQjEZh5BeKNCF0B+NSsL/aRtGUkTOP2IPmYWzb0X5+nv+XCeChC91P0VFYF
+ 4f0GwhsRiiySBzGyuQlCTnpGN0HNKYrzKCmjOJm8tpiGWB5VhVPmmhsQ4CLlKR0CXFVK2rTZ5gCjiJ/p
+ OgXZrp/RdvqHxRrierKLLdUjEcvzmMqcHOfZ32nSTNiqy6jek7SgwYmitlops20qi7A83dbTd9fEeCDC
+ LkvzJDrUdHdPWtasTvfRttxv5F/omd2hLXuV7pqX5urhb0Zsmp49ZWfFEQ0WT1UjZZHyonSw5RaBd1iM
+ 3uFjvWXmUIMcrJs0PUb7MpGFiJoJnEbPcUVZ9gzjtQhZ2Y3CCdksou4rC9OmfZdE4qk85s0I1vQ5AgBq
+ etV6gDInqWmmKtm6E1B/ipOEdAV+kxlV/UhPo4FybWoGvfxvqq7DNF8RxWqBouNGPtCFqEn5BGBNc5JE
+ L2U1fYUjnTFM2/LwSlYNkOFKZIOHc60GZxjTnwd53wmqFjAcu6wW8oEjX6TBmUb1Bee+LOrHcp8SHiGH
+ 9FkjsY/znO9ueSPCY1w/pdUHgrMjDItMkiouHlNygpqg6RRq7bSmSCdbLdT2Vmke19lzmr+qLw9I+RKg
+ Dfu/4m25yQjCFjAc+XbPemYMzjSmQkT1U1zomWFJUYMCJAb1dlmkYd1ned5MbJHNH1LjHmI95lq2Pik7
+ AKICK0aRyUcuesmS6UvN25xpLJN2P2lG/nBY0Ey9ewbnGGXhG21i2ay5YJ8ypADjqKxJLiJd2HF3LbN3
+ 7ePOD4N6sIjsJHN4NAK1/HNY1CzSbZXWQQF0hRMnF0/ZTm2ezUwjh0ciBAbw+PfHPKRyxxROHG5702FB
+ M6e86DnHeDz/yD5Xg7XM8lEr3pF8DWFaZGKzSkidc4yqax//QtS1EOy65LguARfjLuicY1RpSpQpBPQw
+ Gq426njJD+CJcUycHOLmjlLmmaL5FFo1O8vNc1YehWx1yht2KIVscRAijLrMyEUzzsHqzzisYT6UL7S7
+ 1gKGo1L9fl5/w0Zdb1fnNMdQxTprmtPkuE1l0mxJzoHCbKoDdchjrrbHLb/I/makrYaZvq6mJQt1DjCe
+ 0rv5B9lr0JCdd7rA2YptXNe0XH9CTE8zpEk+Lx2zfDW7h+Kwjpl+muA5/qguf8psWqtdECmFswnaTnqt
+ O0Cw65LjugRc9FrX4BwjtVbrGcdEvqMnxjb9ZN/Sn+g9ZbRE4VaoUXeRUw+gDfuR23k/4j33I7eBf8Rb
+ 9y/kYdYXZ5y1VN/wC6HW8juozaryXfNSabIT4YcI24ssmq1uz6NPi3W0WivBVDmAAt7F7Xr++3xJlnYc
+ YLz79N/zqzVZ2GKab7NpuhRqJLKYPG/RpFzbcSsuok1K1XUY4Kt371nCjgONlwzbpWlSL2vVXyPCOsk2
+ pxubnd3I90KnXBv5XhgY4CPfC5MDjZcMm34vnmL5v4tmeb3X8/fvPkTlgXBHQNpnF+n0+gamNbuaFFM2
+ M2S2ueq/pYWaODS5xMT4IUKiHv6rK/WJ+PV8dbVc3K8Xd7dT/TBt2XllZ+IrO4cfv95ztScSst7d3cxn
+ t3RnywHG+e3D1/lytp5fk6UDCni75QcW/zu/Xi+mr1yA8XgEZiobNGBfzD4wzT0JWWk1aoLWqP0vtw83
+ N2SdggAXrXZOsNp5+OFqPWc/XToMuO/l39ezTzf0nNWTPivzpC0eiLCa//Nhfns1j2a338h6HQbda6Z2
+ jRjXH8+ZKdGTkJVTICClwPrbPcMlIcD1cLv4c75cscsUi4cirK9YF99xoPHzJfd0exTw/rlYLfjPgUFb
+ 9of1Fwmuv8lC7fNdV0mTAkACLMYf82+La569QS3vsS7v202V/pg+89wlTeun2WpxFV3d3crkmsnyg5Qa
+ Dmy6r+bL9eLz4krW0vd3N4urxZxkB3DLv7yJrherdXR/Rz1zCzW9118OcRXvBUV4YmBTRJjCZnOWcbGU
+ 9d3d8hv94bBQ27u6v5l9W8//WtOcPeb4usQl6joKs5GWogJQy7ua8R4pA/Q4yTfehn3u6ctmQ6xrPm7y
+ bMtIiBPnGIm7IJoUZmMkqUaiVnJiDqDrXC1+p9ok4ngYxdAJMl3zK8ZZ9ZDtulcR0pqwG4LNOUbWQ6hz
+ uJGaX2zWY6blGQu1vYyHpYcQF/3S0Sdl+Il60dhzMr9e3M+W62/UAl3nLONf6/nt9fxatZ6ih9Xsd5rX
+ oU07Zy3EBF0L0f5lxVVabZfFavUgCWb969Km/Xa+Xl3N7ufR6v6P2RXFbJK4dcGVLizn3XohG5DzzyTf
+ CTJdd+sv8yX1tveQ6br/42o1feWpgYAs1Md7oEAb7cHuIdf1K9XzK+DgXNyv8LVd8isDAPf76Yl46akV
+ mt/VwM6fTamk+pxkvYmP+lkp5CrG4zBSyjFAUVjnj5wx5xyds1J912/kW9dTkO2fD7MbnvFEWtbl3V/f
+ mg53m7JNXbgivvJAJVCs9mzo+pazjOSGE9Rq4jWZsPYSq7GEtJR4rWOsbRxQGPrKQXYR6Cn9OB1SpDe6
+ 5Pb0l3hPfxnS01/6e/rLgJ7+0tvTXzJ7+ku0p6//wkkGnfWY6YmgoY43ul+tItmRmH1dEbUaCVjJZdES
+ GfFYskc8lp4RjyV3xGOJj3g8rGRLt2k6U4QDZdrUqvQUjzreNUSzm9/vllRPS2G2FU+3gnzr9XLx6WE9
+ pytPJGR9+Ivue/gLMDW1OEd3AiGnbBXQfRKCXMsbump5A5vI7WoDRJzEZ1bnECPtedUwwMdq4Jmkz7ri
+ a6Gnhdr37iHEFc1v18tvLGOLAl56wa9hgI+wt5bOwCZeDj+BiJOTwzsOMTJyeIuBvj/v/qBNLNI5wEgc
+ Pj8xgOnPGb30kgxg4twDOP0ZaW+ku4ijZq2WfTr9YwYDMl3N5tnRgf6mAWAHc7qNfv/cfXBM2OnFwmBf
+ ssk5PonBvl2ap/tue/LXevqWxj6HL9L+mPNDSNjnFj8qvlvCPnddhqbPyQBHeazK4yGSf86m71WJ8b4I
+ lBUWYNpnb5ZnOlbT10DzKOA46gyiQ5Wqzxo5QXQejsDMoWjeVFN/1eoGTGnD+sz19omvljDuDkhmDff4
+ m55z2CXoDieSfBhqtdvmtkxS9cVdHldq3RjqQ4xpnHgi2x/yZjva6Ge0LcsqyYq4pt55xIJFCyzBEYs/
+ GrM0BB1YpIASETD4ozwyyy1Y4o/FKIEd3h9BvMXViLGradbwYF5Jy6JmEcWqpFZ3rn5lRjAcnkhlEZJW
+ mgCLcSizom5WT+OFGHh/BH6+Gnh/BJUl5FMbdmNAlTeuiNIfxzgPCNcZjCjxTv1XtzpXXJBjgDwUof06
+ m25uOcgoE+4Ulq7VYNNN7VbpjGHaZI/FsSnfm4Ke4LNIxNrWwCxtixregMraW0Orps+xTqOX29lnilPD
+ DF9badK6kz0DmKj5XaMAG6v54W1ztD8W6SNZKBnIJMtptdhttI/Fd7pTpwE7+SHXMch33NBlxw1gUs2s
+ Jv+TfT2JWFl3G2z1qZaT/iDJgoWsRx2jkcjlCS4xYzXtqCJ9oahPjGF6isWTSrmmnREd3l/+Ev3cq3V5
+ 4w/nF5EQL8coqeJd/e5XQqjpUvBcun6QzfHPwy80zoE5CID2/ftKXJ5GW00SrC484iZ3eDGFEefwPX2l
+ 1t89Y5qaFlpTLB8LlVZVKkRKqXcQAxClWWGL+vzZqNdLHXsB+bEItPsJC/wx6LkdU4zEacZTgsI0hilR
+ whMOHf059TKItbKOgb769AAOpb9g+CENEI9Ry5qg6WzvPyNVDNBwqlXRyqZ51LSOyI8yyBsRujtNa/gO
+ EORqGrHUZfwRHPKzGsMOi5rpi/ahAihGVjy/C4phCcAYgrR/hQNCTnOlVLra5KEItM7IAEGudo0+uq7l
+ ICP5sTY40EjqhAwQ5GIUZRaJWENuObKKJXKAytj8UgNVmXHbcTER77qhK0ogmzXN7XhY+EPu83givklS
+ TjPqZ9G+vfn74sPHKH7+edGvlUjooaAKJA51JVwQRtykIsjkEKNsf4SdsS7wxFBrBQbFOAmQGG3Dh9RM
+ gOgxO7l/6JF4YyWlbNuGxGkFSIxTHv7ACtDTI/Zfg+zY8xWUk4BclFx8+HD+G2MA3AZdJ71TboODUy0k
+ 9tgMlshSaKrPgCBXszQZ3dZgkE/tP0nXKQqyCSHS93Rdg1k+eb41OeVOEOSip9yAQT5yyvUUZKOn3ICZ
+ vmbUjJhwJwYwkZNtoAAbNdF6CHCRk2ygBlt2EQes6QfTlp23ph2AAl7i6m02BxhpK65ZGOCjrUhjYbpv
+ y10dEUABLzklt2hKJkE5KhnJUQk/HRJfOiTMVSJdErLSVom0OcDIeaIS3xOVBK0SifF4BGYqI6tE9r+T
+ V4l0SchKfToS39NBXSXSgAAXtcxKsDIr4a8SCcKAm7xKpEv6rMyTRleJ7I/grBIJwqB7zdSuESN5lUiX
+ hKycAgEpBSirRBoQ4GKuEonxUATaKpE2Bxqpq0QCKOBlrRIJ05Y9ZJVIVIDFIK0SCaCml72eIwib7oD1
+ HBHc8vPWcwRQ00tdz1FnYBPluyubs4y89RwB1PaS13O0MMdHXE/KpDAb6dtOALW8nFUeHNDjJN94fJUH
+ 9+fpn+BBrGumrvJgc46R+JGrSWE2RpKCqxtYv5ETE1rd4PQT4dNPDXE8jGLIXc9R/Zm8nqMB2S76eo42
+ 5xhZDyG8nqP9CzW/4Os5Or/S8gy6nmP7I+NhAdZzNP5Mv3T0SeGs52hzlpGxnqPNWUb2eo4wbdo56zna
+ HG5ccZVW24W/niNMm3beeo4uiVsXXOnCclLXczQg00Vez9GATBdtPceBgCzUxxtaz1H7O+3BBtZzPP35
+ V6rnV8DBubhf4WvTVkxcFLuSYwYU43HoCeoavFECr2T0KsKuYPTsiywJvYJOMR4n7EpaAxCFt9Ymgo/6
+ WanlW2sTO4iRWp61NodjWOePnDHnHJ2zIq+1aVKQjbrWpkta1tC1Nr0SKBZtrU2bs4zkRi3UouU1Z7G2
+ LKshi7RieT0XrN8SULT7SnV2ge4pyzmDBchIwZI7CrPER2GWIaMwS/8ozDJgFGbpHYVZMkdhlv+/tbPp
+ cdWGwvC+/6S7DnNH7brq8kqVkqtuLUKcBIUA1za5mfn1tQkBjn3M8DqzGwU/jxnAxl8cR0dhUmNtcuyC
+ Gb8IbKzN4WBCrM2QZKxwXbSJjEZtkkejNgujUZvU0ahNfDQKj7VJKWpDYm0+0ocGLNYmpWK2bZpuy/nQ
+ WJshyVnXB8ecM4wJjbUZgJwTiLVJIM61+Y6rNt95E9yujsTaJIfAMsvH2iRHsPLKxtocDyQ18GKxNsNj
+ 23QtV1rQcREm1ib5GYu1yaCMF6/42Vib4wEg1uac4U1pT3gYa5McSnnCg1ib5EjCE+7H2pwdgGJt+hxj
+ BKc2wlib469ArM05w5hS7gF//ROuvX/dlZxqHbODJm48lPe6e53oHVDem+j0fI2bfMEb1gSb+3T6SkO9
+ tNIwOCjABWERAZMHvG5PR9ft6WfWxunltXEmbR2fia3ju6avkb0urZG9Js4PXaPzQ9fU+aFrbH7o/Hej
+ yvpoU9sOw/anMj9+ra6hOHbZ/F3Wz8gtPvP/28raHZa5buqtcan/yU2+OoMIH8vhv7zq1n/hyrHLZuTa
+ 8Pjkr+RVVv23aHWzX/2ZGaV8m/0zRTdiM99J7GUl10fjGgHqaPLKnq46IpoHQ0wHJZFzcckJX9YaCJY4
+ AsQBRBK6p6Z0dxGlkesXhswZYlLSlgR5Ra7HA2E94rz+7ephxKeNcl9/AaqBmCyX/Texq5riLPa2nLvP
+ TuXqaBYcOze/DUdzfUmy8/yUQ3Pf/BNtr3jY5GvPhX7J3P1XuSmbWou8KGRrcuCz1CVHkJP75PG4voqj
+ VGBrd1LIulDvLRYaM4JT/59i19V77Do8GN/U5kpLcZI58DSEJLX+1Z//Xvbnj0gJOHNedqY5y1rIW/ti
+ n0NbY6+2hmjMW1SlrE1/R/EQKitUsXzt4+OeT6giihviuRhh3wyNEvZUjG1KpGblaWL5lVp3Un3J1WRV
+ sXyVfR7TsnFkzKrLY51mdWTM2tVPPMsDzLuz9FKSiUXvl5WSDCkl2dOlJFtRSrKvKSXZ2lKSfV0pyZBS
+ kiWXkmyhlGTJpSRbKCXZM6UkY0pJY1sa76LIi5O8t/33QJ+Mp2N2oNUegBGnliZJabm4UVzytkUe9ggf
+ 5NA3FBMuw8jxRqAr4mGBz3X8+kjKuHOO8t6E/3zkeOMFCVkYgJPTBb5z9dPZFpA+YtOuOxykG2GwzU7X
+ PF5d3D43zXJN2T9J8fsnqWkPpHsURuC9wLHUbP/MXUAKsA3LoLy3vS+nEMZePm2v3iUlh0DC5+XqVqHy
+ XylZPNiY+UOmWT8kNcKRaghEXB/i5Y/smzjm5iTVWx8zC5AyNGd3EafSzA+Ss9b2HmZK7hPVBOf89ljm
+ EiX6Cc75dZEbk37RCc76f6pU9UBOVp2VSXMKPscYU+YUWHjmPuUvyUNDLEzcLjTVE3YOJ34XSfsJP4fP
+ /PZnKVtoj5M545mQcd8RYByiNQr2OIi6uhaRdC2hD0C7eUhOeaABMyQnPDbuPALUoYVulJHIPzIyxAQ0
+ 8e6pfVrUXVVhih6hnvV7IdxTE7ptkOfBpvZp9J4+ENZj+1gJKktRW7d+2HxITnigT3RP7dN9K/7Q1QWm
+ GTHqO5UH6HxcempooDLjkhP+6ubbAEGfnhiQ6MhD8ok37hb3feP1O53Mmcl0fbwU8ZlvBqXelJlvn4sb
+ t6nKbdwJFDYGnXlfRe5azuXqGnUiqKUyiKEyhN4VTa0Bvk9PDIXt4CKGPj01qMpF7t0DGy9RKrABtftE
+ BBbVz5uDojvku/aYhd5h2yix7S37MyAZGWKSNyPOHaC5A8Rh3x36JLUBT2iOEV+5bwGNTU3p+tAguE3u
+ 8ady5+JU1u/Qacww4nMFtNP5EXmSR4aY6vzitoaotVG5274OEPoo9WpR5m+iKjVSb8woz1YAbcsRII6m
+ 0K2bE7ZPCHIP5ljoq5t+bAn1DRjxtUUJaGxqSg/DtEl3MoQ59zDwmyB+kMSqwUKlg1Kl4TebDt5sTasO
+ CZNoPscan5o++8zD5pgycRbBWf9TU1ifedgckckrD2N9yLSVh7E+cMIqJGfWNpdaFLvisRpktdQHA6dR
+ r9m4xqQfXdGgnDH4uYDj5wTyXUlXIPLfu97bkA1ULjiYcz+uSpJ7Bk/uW2KY+Fs0Svxw5CiRbQsIxLlc
+ 2e2LLrrBxoKCy6d9aV/cHhxthmcwsYvm1yfMr6z5td/x0E2bJlzwOc3Z7/uSuDjquHtil83QdnZRwSd5
+ 6ItbAwtuOfe5ic11/R5DBOJcpoFefQEYOOFJsVt094bhiC7AnZ98bmZ0X6zsy6PrWPWzhHl1bFRpTqv7
+ v3EDn8tVqvLwDq2mjOCev1Vuw5J+RlFrgcWviwq8PPopZ3Pr6waN2SnKeF2mrmYwN9g7odTrxlv6Gtge
+ PEnI66GB975qxHbvZa1LYAgoggd+mye83ReDBt6qac7adkPPUuxtn9T1dEE9YwhyuXeggWqPYr//9j+x
+ hwL4R48EAA==
EOF
# We are renaming openssl to openssl_grpc so that there is no conflict with openssl if it exists
}
s.vendored_framework = "Cronet.framework"
s.author = "The Chromium Authors"
- s.ios.deployment_target = "8.0"
+ s.ios.deployment_target = "9.0"
s.source = { :http => "https://storage.googleapis.com/grpc-precompiled-binaries/cronet/Cronet.framework-v#{v}.zip"}
s.preserve_paths = "Cronet.framework"
s.public_header_files = "Cronet.framework/Headers/**/*{.h}"
- (NSDictionary *)channelArgs {
NSMutableDictionary *args = [NSMutableDictionary new];
- NSString *userAgent = @"grpc-objc/" GRPC_OBJC_VERSION_STRING;
+ NSString *userAgent = [NSString
+ stringWithFormat:@"grpc-objc-%@/%@", [self getTransportTypeString], GRPC_OBJC_VERSION_STRING];
NSString *userAgentPrefix = _callOptions.userAgentPrefix;
if (userAgentPrefix.length != 0) {
args[@GRPC_ARG_PRIMARY_USER_AGENT_STRING] =
return args;
}
+- (NSString *)getTransportTypeString {
+ switch (_callOptions.transportType) {
+ case GRPCTransportTypeCronet:
+ return @"cronet";
+ case GRPCTransportTypeInsecure:
+ case GRPCTransportTypeChttp2BoringSSL:
+ return @"cfstream";
+ default:
+ return @"unknown";
+ }
+}
+
- (id)copyWithZone:(NSZone *)zone {
GRPCChannelConfiguration *newConfig =
[[GRPCChannelConfiguration alloc] initWithHost:_host callOptions:_callOptions];
// instead. This file can be regenerated from the template by running
// `tools/buildgen/generate_projects.sh`.
-#define GRPC_OBJC_VERSION_STRING @"1.33.2"
+#define GRPC_OBJC_VERSION_STRING @"1.34.0"
[![Cocoapods](https://img.shields.io/cocoapods/v/gRPC.svg)](https://cocoapods.org/pods/gRPC)
# gRPC for Objective-C
gRPC Objective C library provides Objective C API for users to make gRPC calls on iOS or OS X
-platforms. Currently, the minimum supported iOS version is 7.0 and OS X version is 10.9 (Mavericks).
+platforms. Currently, the minimum supported iOS version is 9.0 and OS X version is 10.10 (Yosemite).
While gRPC doesn't require the use of an IDL to describe the API of services, using one simplifies
usage and adds some interoperability guarantees. Here we use [Protocol Buffers][], and provide a
s.summary = '...'
s.source = { :git => 'https://github.com/...' }
- s.ios.deployment_target = '7.1'
- s.osx.deployment_target = '10.9'
+ s.ios.deployment_target = '9.0'
+ s.osx.deployment_target = '10.10'
# Base directory where the .proto files are.
src = '.'
"ipad",
],
infoplists = ["Sample/Sample/Info.plist"],
- minimum_os_version = "8.0",
+ minimum_os_version = "9.0",
visibility = ["//visibility:public"],
deps = ["Sample-lib"],
)
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
- IPHONEOS_DEPLOYMENT_TARGET = 12.1;
+ IPHONEOS_DEPLOYMENT_TARGET = 9.0;
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
MTL_FAST_MATH = YES;
ONLY_ACTIVE_ARCH = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
- IPHONEOS_DEPLOYMENT_TARGET = 12.1;
+ IPHONEOS_DEPLOYMENT_TARGET = 9.0;
MTL_ENABLE_DEBUG_INFO = NO;
MTL_FAST_MATH = YES;
SDKROOT = iphoneos;
-platform :ios, '8.0'
+platform :ios, '9.0'
install! 'cocoapods', :deterministic_uuids => false
s.summary = 'RemoteTest example'
s.source = { :git => 'https://github.com/grpc/grpc.git' }
- s.ios.deployment_target = '7.1'
- s.osx.deployment_target = '10.9'
+ s.ios.deployment_target = '9.0'
+ s.osx.deployment_target = '10.10'
s.tvos.deployment_target = '10.0'
s.watchos.deployment_target = '4.0'
source 'https://github.com/CocoaPods/Specs.git'
-platform :ios, '8.0'
+platform :ios, '9.0'
install! 'cocoapods', :deterministic_uuids => false
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
- IPHONEOS_DEPLOYMENT_TARGET = 8.1;
+ IPHONEOS_DEPLOYMENT_TARGET = 9.0;
MTL_ENABLE_DEBUG_INFO = YES;
ONLY_ACTIVE_ARCH = YES;
SDKROOT = iphoneos;
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
- IPHONEOS_DEPLOYMENT_TARGET = 8.1;
+ IPHONEOS_DEPLOYMENT_TARGET = 9.0;
MTL_ENABLE_DEBUG_INFO = NO;
SDKROOT = iphoneos;
TARGETED_DEVICE_FAMILY = "1,2";
source 'https://github.com/CocoaPods/Specs.git'
-platform :ios, '8.0'
+platform :ios, '9.0'
install! 'cocoapods', :deterministic_uuids => false
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
- IPHONEOS_DEPLOYMENT_TARGET = 8.4;
+ IPHONEOS_DEPLOYMENT_TARGET = 9.0;
MTL_ENABLE_DEBUG_INFO = YES;
ONLY_ACTIVE_ARCH = YES;
SDKROOT = iphoneos;
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
- IPHONEOS_DEPLOYMENT_TARGET = 8.4;
+ IPHONEOS_DEPLOYMENT_TARGET = 9.0;
MTL_ENABLE_DEBUG_INFO = NO;
SDKROOT = iphoneos;
SWIFT_VERSION = 2.3;
MTL_ENABLE_DEBUG_INFO = YES;
ONLY_ACTIVE_ARCH = YES;
SDKROOT = appletvos;
- TVOS_DEPLOYMENT_TARGET = 11.2;
+ TVOS_DEPLOYMENT_TARGET = 10.0;
};
name = Debug;
};
GCC_WARN_UNUSED_VARIABLE = YES;
MTL_ENABLE_DEBUG_INFO = NO;
SDKROOT = appletvos;
- TVOS_DEPLOYMENT_TARGET = 11.2;
+ TVOS_DEPLOYMENT_TARGET = 10.0;
VALIDATE_PRODUCT = YES;
};
name = Release;
end
target 'watchOS-sample' do
-platform :ios, '8.0'
+platform :ios, '9.0'
grpc_deps
end
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
- IPHONEOS_DEPLOYMENT_TARGET = 11.2;
+ IPHONEOS_DEPLOYMENT_TARGET = 9.0;
MTL_ENABLE_DEBUG_INFO = YES;
ONLY_ACTIVE_ARCH = YES;
SDKROOT = iphoneos;
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
- IPHONEOS_DEPLOYMENT_TARGET = 11.2;
+ IPHONEOS_DEPLOYMENT_TARGET = 9.0;
MTL_ENABLE_DEBUG_INFO = NO;
SDKROOT = iphoneos;
VALIDATE_PRODUCT = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
- IPHONEOS_DEPLOYMENT_TARGET = 12.0;
+ IPHONEOS_DEPLOYMENT_TARGET = 9.0;
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
MTL_FAST_MATH = YES;
ONLY_ACTIVE_ARCH = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
- IPHONEOS_DEPLOYMENT_TARGET = 12.0;
+ IPHONEOS_DEPLOYMENT_TARGET = 9.0;
MTL_ENABLE_DEBUG_INFO = NO;
MTL_FAST_MATH = YES;
SDKROOT = iphoneos;
CODE_SIGN_STYLE = Manual;
DEVELOPMENT_TEAM = EQHXZ8M8AV;
INFOPLIST_FILE = Info.plist;
- IPHONEOS_DEPLOYMENT_TARGET = 11.0;
+ IPHONEOS_DEPLOYMENT_TARGET = 9.0;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
CODE_SIGN_STYLE = Manual;
DEVELOPMENT_TEAM = EQHXZ8M8AV;
INFOPLIST_FILE = Info.plist;
- IPHONEOS_DEPLOYMENT_TARGET = 11.0;
+ IPHONEOS_DEPLOYMENT_TARGET = 9.0;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
source 'https://github.com/CocoaPods/Specs.git'
-platform :ios, '8.0'
+platform :ios, '9.0'
install! 'cocoapods', :deterministic_uuids => false
ios_unit_test(
name = "UnitTests",
- minimum_os_version = "8.0",
+ minimum_os_version = "9.0",
test_host = ":ios-host",
deps = [
":APIv2Tests-lib",
ios_unit_test(
name = "InteropTests",
- minimum_os_version = "8.0",
+ minimum_os_version = "9.0",
test_host = ":ios-host",
deps = [
":InteropTestsLocalCleartext-lib",
macos_unit_test(
name = "MacTests",
- minimum_os_version = "10.9",
+ minimum_os_version = "10.10",
deps = [
":APIv2Tests-lib",
":InteropTestsLocalCleartext-lib",
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
- IPHONEOS_DEPLOYMENT_TARGET = 11.2;
+ IPHONEOS_DEPLOYMENT_TARGET = 9.0;
MTL_ENABLE_DEBUG_INFO = YES;
ONLY_ACTIVE_ARCH = YES;
SDKROOT = iphoneos;
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
- IPHONEOS_DEPLOYMENT_TARGET = 11.2;
+ IPHONEOS_DEPLOYMENT_TARGET = 9.0;
MTL_ENABLE_DEBUG_INFO = NO;
SDKROOT = iphoneos;
VALIDATE_PRODUCT = YES;
install! 'cocoapods', :deterministic_uuids => false
-platform :ios, '8.0'
+platform :ios, '9.0'
# Location of gRPC's repo root relative to this file.
GRPC_LOCAL_SRC = '../../../..'
[self waitForExpectationsWithTimeout:TEST_TIMEOUT handler:nil];
}
-/* TODO(yulin-liang) - Re-enable after fixing https://github.com/grpc/grpc/issues/24039
- (void)testKeepaliveWithV2API {
XCTAssertNotNil([[self class] host]);
if ([[self class] transport] == gGRPCCoreCronetID) {
[self waitForExpectationsWithTimeout:TEST_TIMEOUT handler:nil];
[call finish];
-}*/
+}
- (void)testDefaultInterceptor {
XCTAssertNotNil([[self class] host]);
pod 'BoringSSL-GRPC', :podspec => "#{GRPC_LOCAL_SRC}/src/objective-c", :inhibit_warnings => true
pod 'gRPC/InternalTesting', :path => GRPC_LOCAL_SRC
- pod 'gRPC-Core', :path => GRPC_LOCAL_SRC
+ pod 'gRPC-Core', :path => GRPC_LOCAL_SRC, :inhibit_warnings => true
pod 'gRPC-RxLibrary', :path => GRPC_LOCAL_SRC
pod 'gRPC-ProtoRPC', :path => GRPC_LOCAL_SRC, :inhibit_warnings => true
pod 'RemoteTest', :path => "RemoteTestClient", :inhibit_warnings => true
InteropTests
).each do |target_name|
target target_name do
- platform :ios, '8.0'
+ platform :ios, '9.0'
grpc_deps
end
end
target 'CronetTests' do
- platform :ios, '8.0'
+ platform :ios, '9.0'
grpc_deps
pod 'gRPC/GRPCCoreCronet', :path => GRPC_LOCAL_SRC
end
target 'PerfTests' do
- platform :ios, '8.0'
+ platform :ios, '9.0'
grpc_deps
pod 'gRPC/GRPCCoreCronet', :path => GRPC_LOCAL_SRC
s.summary = "RemoteTest example"
s.source = { :git => 'https://github.com/grpc/grpc.git' }
- s.ios.deployment_target = '7.1'
- s.osx.deployment_target = '10.9'
+ s.ios.deployment_target = '9.0'
+ s.osx.deployment_target = '10.10'
s.tvos.deployment_target = '10.0'
s.watchos.deployment_target = '4.0'
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
- IPHONEOS_DEPLOYMENT_TARGET = 8.3;
+ IPHONEOS_DEPLOYMENT_TARGET = 9.0;
MTL_ENABLE_DEBUG_INFO = YES;
ONLY_ACTIVE_ARCH = YES;
SDKROOT = iphoneos;
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
- IPHONEOS_DEPLOYMENT_TARGET = 8.3;
+ IPHONEOS_DEPLOYMENT_TARGET = 9.0;
MTL_ENABLE_DEBUG_INFO = YES;
ONLY_ACTIVE_ARCH = YES;
SDKROOT = iphoneos;
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
- IPHONEOS_DEPLOYMENT_TARGET = 8.3;
+ IPHONEOS_DEPLOYMENT_TARGET = 9.0;
MTL_ENABLE_DEBUG_INFO = YES;
ONLY_ACTIVE_ARCH = YES;
SDKROOT = iphoneos;
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
- IPHONEOS_DEPLOYMENT_TARGET = 8.3;
+ IPHONEOS_DEPLOYMENT_TARGET = 9.0;
MTL_ENABLE_DEBUG_INFO = NO;
SDKROOT = iphoneos;
VALIDATE_PRODUCT = YES;
GCC_C_LANGUAGE_STANDARD = gnu11;
INFOPLIST_FILE = MacTests/Info.plist;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks";
- MACOSX_DEPLOYMENT_TARGET = 10.13;
+ MACOSX_DEPLOYMENT_TARGET = 10.10;
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
MTL_FAST_MATH = YES;
PRODUCT_BUNDLE_IDENTIFIER = io.grpc.MacTests;
);
INFOPLIST_FILE = MacTests/Info.plist;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks";
- MACOSX_DEPLOYMENT_TARGET = 10.13;
+ MACOSX_DEPLOYMENT_TARGET = 10.10;
MTL_FAST_MATH = YES;
PRODUCT_BUNDLE_IDENTIFIER = io.grpc.MacTests;
PRODUCT_NAME = "$(TARGET_NAME)";
GCC_C_LANGUAGE_STANDARD = gnu11;
INFOPLIST_FILE = MacTests/Info.plist;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks";
- MACOSX_DEPLOYMENT_TARGET = 10.13;
+ MACOSX_DEPLOYMENT_TARGET = 10.10;
MTL_FAST_MATH = YES;
PRODUCT_BUNDLE_IDENTIFIER = io.grpc.MacTests;
PRODUCT_NAME = "$(TARGET_NAME)";
GCC_C_LANGUAGE_STANDARD = gnu11;
INFOPLIST_FILE = MacTests/Info.plist;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks";
- MACOSX_DEPLOYMENT_TARGET = 10.13;
+ MACOSX_DEPLOYMENT_TARGET = 10.10;
MTL_FAST_MATH = YES;
PRODUCT_BUNDLE_IDENTIFIER = io.grpc.MacTests;
PRODUCT_NAME = "$(TARGET_NAME)";
DEBUG_INFORMATION_FORMAT = dwarf;
ENABLE_TESTABILITY = YES;
GCC_C_LANGUAGE_STANDARD = gnu11;
- IPHONEOS_DEPLOYMENT_TARGET = 12.1;
+ IPHONEOS_DEPLOYMENT_TARGET = 9.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
MTL_FAST_MATH = YES;
CODE_SIGN_IDENTITY = "iPhone Developer";
CODE_SIGN_STYLE = Automatic;
GCC_C_LANGUAGE_STANDARD = gnu11;
- IPHONEOS_DEPLOYMENT_TARGET = 12.1;
+ IPHONEOS_DEPLOYMENT_TARGET = 9.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
MTL_FAST_MATH = YES;
PRODUCT_BUNDLE_IDENTIFIER = org.grpc.PerfTests;
CODE_SIGN_IDENTITY = "iPhone Developer";
CODE_SIGN_STYLE = Automatic;
GCC_C_LANGUAGE_STANDARD = gnu11;
- IPHONEOS_DEPLOYMENT_TARGET = 12.1;
+ IPHONEOS_DEPLOYMENT_TARGET = 9.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
MTL_FAST_MATH = YES;
PRODUCT_BUNDLE_IDENTIFIER = org.grpc.PerfTests;
CODE_SIGN_IDENTITY = "iPhone Developer";
CODE_SIGN_STYLE = Automatic;
GCC_C_LANGUAGE_STANDARD = gnu11;
- IPHONEOS_DEPLOYMENT_TARGET = 12.1;
+ IPHONEOS_DEPLOYMENT_TARGET = 9.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
MTL_FAST_MATH = YES;
PRODUCT_BUNDLE_IDENTIFIER = org.grpc.PerfTests;
initWithInitialMetadataCallback:^(NSDictionary *initialMetadata) {
NSString *userAgent = initialMetadata[@"x-grpc-test-echo-useragent"];
// Test the regex is correct
- NSString *expectedUserAgent = @"Foo grpc-objc/";
+ NSString *expectedUserAgent = @"Foo grpc-objc-cfstream/";
expectedUserAgent =
[expectedUserAgent stringByAppendingString:GRPC_OBJC_VERSION_STRING];
expectedUserAgent = [expectedUserAgent stringByAppendingString:@" grpc-c/"];
NSError *error = nil;
// Test the regex is correct
- NSString *expectedUserAgent = @"Foo grpc-objc/";
+ NSString *expectedUserAgent = @"Foo grpc-objc-cfstream/";
expectedUserAgent = [expectedUserAgent stringByAppendingString:GRPC_OBJC_VERSION_STRING];
expectedUserAgent = [expectedUserAgent stringByAppendingString:@" grpc-c/"];
expectedUserAgent = [expectedUserAgent stringByAppendingString:GRPC_C_VERSION_STRING];
// instead. This file can be regenerated from the template by running
// `tools/buildgen/generate_projects.sh`.
-#define GRPC_OBJC_VERSION_STRING @"1.33.2"
-#define GRPC_C_VERSION_STRING @"13.0.0"
+#define GRPC_OBJC_VERSION_STRING @"1.34.0"
+#define GRPC_C_VERSION_STRING @"14.0.0"
cd $(dirname $0)/../../..
ALL_IMAGES=( grpc-ext grpc-src alpine centos7 php-src php-future php-zts
- fork-support i386 )
+ fork-support i386 php8 )
if [[ "$1" == "--cmds" ]]; then
for arg in "${ALL_IMAGES[@]}"
cd $(dirname $0)/../../..
ALL_IMAGES=( grpc-ext grpc-src alpine centos7 php-src php-future php-zts
- fork-support i386 )
+ fork-support i386 php8 )
if [[ "$1" == "--cmds" ]]; then
for arg in "${ALL_IMAGES[@]}"
"name": "grpc/grpc-dev",
"description": "gRPC library for PHP - for Development use only",
"license": "Apache-2.0",
- "version": "1.33.2",
+ "version": "1.34.0",
"require": {
- "php": ">=5.5.0",
+ "php": ">=7.0.0",
"google/protobuf": "^v3.3.0"
},
"require-dev": {
WORKDIR /tmp
-RUN wget https://phar.phpunit.de/phpunit-5.7.27.phar && \
- mv phpunit-5.7.27.phar /usr/local/bin/phpunit && \
+RUN wget https://phar.phpunit.de/phpunit-8.5.8.phar && \
+ mv phpunit-8.5.8.phar /usr/local/bin/phpunit && \
chmod +x /usr/local/bin/phpunit
WORKDIR /tmp
-RUN wget https://phar.phpunit.de/phpunit-5.7.27.phar && \
- mv phpunit-5.7.27.phar /usr/local/bin/phpunit && \
+RUN wget https://phar.phpunit.de/phpunit-8.5.8.phar && \
+ mv phpunit-8.5.8.phar /usr/local/bin/phpunit && \
chmod +x /usr/local/bin/phpunit
WORKDIR /tmp
-RUN wget https://phar.phpunit.de/phpunit-5.7.27.phar && \
- mv phpunit-5.7.27.phar /usr/local/bin/phpunit && \
+RUN wget https://phar.phpunit.de/phpunit-8.5.8.phar && \
+ mv phpunit-8.5.8.phar /usr/local/bin/phpunit && \
chmod +x /usr/local/bin/phpunit
WORKDIR /tmp
-RUN wget https://phar.phpunit.de/phpunit-5.7.27.phar && \
- mv phpunit-5.7.27.phar /usr/local/bin/phpunit && \
+RUN wget https://phar.phpunit.de/phpunit-8.5.8.phar && \
+ mv phpunit-8.5.8.phar /usr/local/bin/phpunit && \
chmod +x /usr/local/bin/phpunit
WORKDIR /tmp
-RUN wget https://phar.phpunit.de/phpunit-5.7.27.phar && \
- mv phpunit-5.7.27.phar /usr/local/bin/phpunit && \
+RUN wget https://phar.phpunit.de/phpunit-8.5.8.phar && \
+ mv phpunit-8.5.8.phar /usr/local/bin/phpunit && \
chmod +x /usr/local/bin/phpunit
# See the License for the specific language governing permissions and
# limitations under the License.
-FROM php:7.4.5-buster
+FROM php:7.4.11-buster
RUN apt-get -qq update && apt-get -qq install -y \
autoconf automake git libtool pkg-config \
WORKDIR /tmp
-RUN wget https://phar.phpunit.de/phpunit-5.7.27.phar && \
- mv phpunit-5.7.27.phar /usr/local/bin/phpunit && \
+RUN wget https://phar.phpunit.de/phpunit-8.5.8.phar && \
+ mv phpunit-8.5.8.phar /usr/local/bin/phpunit && \
chmod +x /usr/local/bin/phpunit
WORKDIR /tmp
-RUN wget https://phar.phpunit.de/phpunit-5.7.27.phar && \
- mv phpunit-5.7.27.phar /usr/local/bin/phpunit && \
+RUN wget https://phar.phpunit.de/phpunit-8.5.8.phar && \
+ mv phpunit-8.5.8.phar /usr/local/bin/phpunit && \
chmod +x /usr/local/bin/phpunit
WORKDIR /tmp
-RUN wget https://phar.phpunit.de/phpunit-5.7.27.phar && \
- mv phpunit-5.7.27.phar /usr/local/bin/phpunit && \
+RUN wget https://phar.phpunit.de/phpunit-8.5.8.phar && \
+ mv phpunit-8.5.8.phar /usr/local/bin/phpunit && \
chmod +x /usr/local/bin/phpunit
--- /dev/null
+# Copyright 2020 gRPC authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+FROM php:8.0.0RC3-cli-buster
+
+RUN apt-get -qq update && apt-get -qq install -y \
+ autoconf automake git libtool pkg-config \
+ valgrind wget zlib1g-dev
+
+ARG MAKEFLAGS=-j8
+
+
+WORKDIR /tmp
+
+# install pear
+RUN apt-get install expect -y && \
+ curl -LO http://pear.php.net/go-pear.phar && \
+ expect -c 'spawn php ./go-pear.phar; expect "or Enter to continue:"; send "\n"; expect "Currently used php.ini"; send "\n"; expect eof' && \
+ rm go-pear.phar
+
+WORKDIR /github/grpc
+
+COPY . .
+
+RUN pear package && \
+ find . -name grpc-*.tgz | xargs -I{} pecl install {}
+
+
+CMD php -d extension=grpc.so -r '$a = new \Grpc\Channel("dummy", []); echo get_class($a)."\n";'
return buffer;
}
-#if PHP_MAJOR_VERSION < 7
-
-void byte_buffer_to_string(grpc_byte_buffer *buffer, char **out_string,
- size_t *out_length) {
- grpc_byte_buffer_reader reader;
- if (buffer == NULL || !grpc_byte_buffer_reader_init(&reader, buffer)) {
- /* TODO(dgq): distinguish between the error cases. */
- *out_string = NULL;
- *out_length = 0;
- return;
- }
-
- grpc_slice slice = grpc_byte_buffer_reader_readall(&reader);
- size_t length = GRPC_SLICE_LENGTH(slice);
- char *string = ecalloc(length + 1, sizeof(char));
- memcpy(string, GRPC_SLICE_START_PTR(slice), length);
- grpc_slice_unref(slice);
-
- *out_string = string;
- *out_length = length;
-}
-
-#else
-
zend_string* byte_buffer_to_zend_string(grpc_byte_buffer *buffer) {
grpc_byte_buffer_reader reader;
if (buffer == NULL || !grpc_byte_buffer_reader_init(&reader, buffer)) {
return zstr;
}
-
-#endif // PHP_MAJOR_VERSION < 7
grpc_byte_buffer *string_to_byte_buffer(char *string, size_t length);
-#if PHP_MAJOR_VERSION < 7
-void byte_buffer_to_string(grpc_byte_buffer *buffer, char **out_string,
- size_t *out_length);
-#else
zend_string* byte_buffer_to_zend_string(grpc_byte_buffer *buffer);
-#endif // PHP_MAJOR_VERSION < 7
#endif /* NET_GRPC_PHP_GRPC_BYTE_BUFFER_H_ */
PHP_GRPC_FREE_STD_ZVAL(inner_array);
}
efree(str_key);
-#if PHP_MAJOR_VERSION >= 7
efree(str_val);
-#endif
}
return array;
}
int cancelled;
grpc_call_error error;
- #if PHP_MAJOR_VERSION < 7
- char *message_str;
- size_t message_len;
- #else
zend_string* zmessage = NULL;
- #endif // PHP_MAJOR_VERSION < 7
grpc_metadata_array_init(&metadata);
grpc_metadata_array_init(&trailing_metadata);
}
grpc_completion_queue_pluck(completion_queue, call->wrapped,
gpr_inf_future(GPR_CLOCK_REALTIME), NULL);
-#if PHP_MAJOR_VERSION >= 7
zval *recv_md;
-#endif
for (int i = 0; i < op_num; i++) {
switch(ops[i].op) {
case GRPC_OP_SEND_INITIAL_METADATA:
add_property_bool(result, "send_status", true);
break;
case GRPC_OP_RECV_INITIAL_METADATA:
-#if PHP_MAJOR_VERSION < 7
- array = grpc_parse_metadata_array(&recv_metadata TSRMLS_CC);
- add_property_zval(result, "metadata", array);
-#else
recv_md = grpc_parse_metadata_array(&recv_metadata);
add_property_zval(result, "metadata", recv_md);
zval_ptr_dtor(recv_md);
PHP_GRPC_FREE_STD_ZVAL(recv_md);
-#endif
PHP_GRPC_DELREF(array);
break;
case GRPC_OP_RECV_MESSAGE:
-#if PHP_MAJOR_VERSION < 7
- byte_buffer_to_string(message, &message_str, &message_len);
-#else
zmessage = byte_buffer_to_zend_string(message);
-#endif // PHP_MAJOR_VERSION < 7
-#if PHP_MAJOR_VERSION < 7
- if (message_str == NULL) {
-#else
if (zmessage == NULL) {
-#endif // PHP_MAJOR_VERSION < 7
add_property_null(result, "message");
} else {
-#if PHP_MAJOR_VERSION < 7
- php_grpc_add_property_stringl(result, "message", message_str,
- message_len, false);
-#else
zval zmessage_val;
ZVAL_NEW_STR(&zmessage_val, zmessage);
add_property_zval(result, "message", &zmessage_val);
zval_ptr_dtor(&zmessage_val);
-#endif // PHP_MAJOR_VERSION < 7
}
break;
case GRPC_OP_RECV_STATUS_ON_CLIENT:
PHP_GRPC_MAKE_STD_ZVAL(recv_status);
object_init(recv_status);
-#if PHP_MAJOR_VERSION < 7
- array = grpc_parse_metadata_array(&recv_trailing_metadata TSRMLS_CC);
- add_property_zval(recv_status, "metadata", array);
-#else
recv_md = grpc_parse_metadata_array(&recv_trailing_metadata);
add_property_zval(recv_status, "metadata", recv_md);
zval_ptr_dtor(recv_md);
PHP_GRPC_FREE_STD_ZVAL(recv_md);
-#endif
PHP_GRPC_DELREF(array);
add_property_long(recv_status, "code", status);
char *status_details_text = grpc_slice_to_c_string(recv_status_details);
true);
gpr_free(status_details_text);
add_property_zval(result, "status", recv_status);
-#if PHP_MAJOR_VERSION >= 7
zval_ptr_dtor(recv_status);
-#endif
PHP_GRPC_DELREF(recv_status);
PHP_GRPC_FREE_STD_ZVAL(recv_status);
break;
}
if (ops[i].op == GRPC_OP_RECV_MESSAGE) {
grpc_byte_buffer_destroy(message);
- #if PHP_MAJOR_VERSION < 7
- PHP_GRPC_FREE_STD_ZVAL(message_str);
- #endif // PHP_MAJOR_VERSION < 7
}
}
RETURN_DESTROY_ZVAL(result);
php_grpc_add_property_string(arg, "service_url", context.service_url, true);
php_grpc_add_property_string(arg, "method_name", context.method_name, true);
zval *retval = NULL;
-#if PHP_MAJOR_VERSION < 7
- zval **params[1];
- params[0] = &arg;
- state->fci->params = params;
- state->fci->retval_ptr_ptr = &retval;
-#else
PHP_GRPC_MAKE_STD_ZVAL(retval);
state->fci->params = arg;
state->fci->retval = retval;
-#endif
state->fci->param_count = 1;
PHP_GRPC_DELREF(arg);
}
if (retval != NULL) {
-#if PHP_MAJOR_VERSION < 7
- zval_ptr_dtor(&retval);
-#else
zval_ptr_dtor(arg);
zval_ptr_dtor(retval);
PHP_GRPC_FREE_STD_ZVAL(arg);
PHP_GRPC_FREE_STD_ZVAL(retval);
-#endif
}
if (should_return) {
return true;
plugin_state *state = (plugin_state *)ptr;
free(state->fci);
free(state->fci_cache);
-#if PHP_MAJOR_VERSION < 7
- PHP_GRPC_FREE_STD_ZVAL(state->fci->params);
- PHP_GRPC_FREE_STD_ZVAL(state->fci->retval);
-#endif
free(state);
}
#include <ext/standard/php_var.h>
#include <ext/standard/sha1.h>
-#if PHP_MAJOR_VERSION < 7
-#include <ext/standard/php_smart_str.h>
-#else
#include <zend_smart_str.h>
-#endif
#include <ext/spl/spl_exceptions.h>
#include <zend_exceptions.h>
gpr_mu_init(&global_persistent_list_mu);
le_plink = zend_register_list_destructors_ex(
NULL, php_grpc_channel_plink_dtor, "Persistent Channel", module_number);
- zend_hash_init_ex(&grpc_persistent_list, 20, NULL,
- EG(persistent_list).pDestructor, 1, 0);
+ ZEND_HASH_INIT(&grpc_persistent_list, 20, EG(persistent_list).pDestructor, 1);
// Register the target->upper_bound map.
le_bound = zend_register_list_destructors_ex(
NULL, php_grpc_target_bound_dtor, "Target Bound", module_number);
- zend_hash_init_ex(&grpc_target_upper_bound_map, 20, NULL,
- EG(persistent_list).pDestructor, 1, 0);
-
+ ZEND_HASH_INIT(&grpc_target_upper_bound_map, 20, EG(persistent_list).pDestructor, 1);
+
PHP_GRPC_INIT_HANDLER(wrapped_grpc_channel, channel_ce_handlers);
return SUCCESS;
}
#include "channel_credentials.h"
#include "php_grpc.h"
+#if PHP_MAJOR_VERSION >= 8
+#define ZEND_HASH_INIT(hash_table, limit, descriptor, zend_bool) _zend_hash_init(hash_table, limit, descriptor, zend_bool);
+#else
+#define ZEND_HASH_INIT(hash_table, limit, descriptor, zend_bool) zend_hash_init_ex(hash_table, limit, NULL, descriptor, zend_bool, 0);
+#endif
+
/* Class entry for the PHP Channel class */
extern zend_class_entry *grpc_ce_channel;
#include <grpc/grpc.h>
+#if PHP_MAJOR_VERSION >= 8
+#define TSRMLS_D
+#endif
+
/* The global completion queue for all operations */
extern grpc_completion_queue *completion_queue;
#ifndef PHP7_WRAPPER_GRPC_H
#define PHP7_WRAPPER_GRPC_H
-#if PHP_MAJOR_VERSION < 7
-
-#define php_grpc_int int
-#define php_grpc_long long
-#define php_grpc_ulong ulong
-#define php_grpc_zend_object zend_object_value
-#define php_grpc_add_property_string(arg, name, context, b) \
- add_property_string(arg, name, context, b)
-#define php_grpc_add_property_stringl(res, name, str, len, b) \
- add_property_stringl(res, name, str, len, b)
-#define php_grpc_add_property_zval(res, name, val) \
- add_property_zval(res, name, val)
-#define php_grpc_add_next_index_stringl(data, str, len, b) \
- add_next_index_stringl(data, str, len, b)
-
-#define PHP_GRPC_RETVAL_STRING(val, dup) RETVAL_STRING(val, dup)
-#define PHP_GRPC_RETURN_STRING(val, dup) RETURN_STRING(val, dup)
-#define PHP_GRPC_MAKE_STD_ZVAL(pzv) MAKE_STD_ZVAL(pzv)
-#define PHP_GRPC_FREE_STD_ZVAL(pzv)
-#define PHP_GRPC_DELREF(zv) Z_DELREF_P(zv)
-#define PHP_GRPC_ADD_STRING_TO_ARRAY(val, key, key_len, str, dup) \
- add_assoc_string_ex(val, key, key_len , str, dup);
-#define PHP_GRPC_ADD_LONG_TO_ARRAY(val, key, key_len, str) \
- add_assoc_long_ex(val, key, key_len, str);
-#define PHP_GRPC_ADD_BOOL_TO_ARRAY(val, key, key_len, str) \
- add_assoc_bool_ex(val, key, key_len, str);
-#define PHP_GRPC_ADD_LONG_TO_RETVAL(val, key, key_len, str) \
- add_assoc_long_ex(val, key, key_len+1, str);
-
-#define RETURN_DESTROY_ZVAL(val) \
- RETURN_ZVAL(val, false /* Don't execute copy constructor */, \
- true /* Dealloc original before returning */)
-
-#define PHP_GRPC_WRAP_OBJECT_START(name) \
- typedef struct name { \
- zend_object std;
-#define PHP_GRPC_WRAP_OBJECT_END(name) \
- } name;
-
-#define PHP_GRPC_FREE_WRAPPED_FUNC_START(class_object) \
- void free_##class_object(void *object TSRMLS_DC) { \
- class_object *p = (class_object *)object;
-#define PHP_GRPC_FREE_WRAPPED_FUNC_END() \
- zend_object_std_dtor(&p->std TSRMLS_CC); \
- efree(p); \
- }
-
-#define PHP_GRPC_ALLOC_CLASS_OBJECT(class_object) \
- class_object *intern; \
- zend_object_value retval; \
- intern = (class_object *)emalloc(sizeof(class_object)); \
- memset(intern, 0, sizeof(class_object));
-
-#define PHP_GRPC_FREE_CLASS_OBJECT(class_object, handler) \
- retval.handle = zend_objects_store_put( \
- intern, (zend_objects_store_dtor_t)zend_objects_destroy_object, \
- free_##class_object, NULL TSRMLS_CC); \
- retval.handlers = zend_get_std_object_handlers(); \
- return retval;
-
-#define PHP_GRPC_HASH_FOREACH_VAL_START(ht, data) \
- zval **tmp_data = NULL; \
- for (zend_hash_internal_pointer_reset(ht); \
- zend_hash_get_current_data(ht, (void**)&tmp_data) == SUCCESS; \
- zend_hash_move_forward(ht)) { \
- data = *tmp_data;
-
-#define PHP_GRPC_HASH_FOREACH_STR_KEY_VAL_START(ht, key, key_type, data) \
- zval **tmp##key = NULL; \
- ulong index##key; \
- uint len##key; \
- for (zend_hash_internal_pointer_reset(ht); \
- zend_hash_get_current_data(ht, (void**)&tmp##key) == SUCCESS; \
- zend_hash_move_forward(ht)) { \
- key_type = zend_hash_get_current_key_ex(ht, &key, &len##key, &index##key,\
- 0, NULL); \
- data = *tmp##key;
-
-#define PHP_GRPC_HASH_VALPTR_TO_VAL(data) \
- &data;
-
-#define PHP_GRPC_HASH_FOREACH_LONG_KEY_VAL_START(ht, key, key_type, index,\
- data) \
- zval **tmp##key = NULL; \
- uint len##key; \
- for (zend_hash_internal_pointer_reset(ht); \
- zend_hash_get_current_data(ht, (void**)&tmp##key) == SUCCESS; \
- zend_hash_move_forward(ht)) { \
- key_type = zend_hash_get_current_key_ex(ht, &key, &len##key, &index,\
- 0, NULL); \
- data = *tmp##key;
-
-#define PHP_GRPC_HASH_FOREACH_END() }
-
-static inline int php_grpc_zend_hash_find(HashTable *ht, char *key, int len,
- void **value) {
- zval **data = NULL;
- if (zend_hash_find(ht, key, len, (void **)&data) == SUCCESS) {
- *value = *data;
- return SUCCESS;
- } else {
- *value = NULL;
- return FAILURE;
- }
-}
-
-#define php_grpc_zend_hash_del zend_hash_del
-#define php_grpc_zend_resource zend_rsrc_list_entry
-
-#define PHP_GRPC_BVAL_IS_TRUE(zv) Z_LVAL_P(zv)
-#define PHP_GRPC_VAR_SERIALIZE(buf, zv, hash) \
- php_var_serialize(buf, &zv, hash TSRMLS_CC)
-#define PHP_GRPC_SERIALIZED_BUF_STR(buf) buf.c
-#define PHP_GRPC_SERIALIZED_BUF_LEN(buf) buf.len
-#define PHP_GRPC_SHA1Update(cxt, str, len) \
- PHP_SHA1Update(cxt, (const unsigned char *)str, len)
-#define PHP_GRPC_PERSISTENT_LIST_FIND(plist, key, len, rsrc) \
- zend_hash_find(plist, key, len+1, (void **)&rsrc) != FAILURE
-#define PHP_GRPC_PERSISTENT_LIST_UPDATE(plist, key, len, rsrc) \
- zend_hash_update(plist, key, len+1, rsrc, sizeof(php_grpc_zend_resource), \
- NULL)
-#define PHP_GRPC_PERSISTENT_LIST_SIZE(plist) \
- *plist.nNumOfElements
-
-#define PHP_GRPC_GET_CLASS_ENTRY(object) zend_get_class_entry(object TSRMLS_CC)
-
-#define PHP_GRPC_INIT_HANDLER(class_object, handler_name)
-
-#define PHP_GRPC_DECLARE_OBJECT_HANDLER(handler_name)
-
-#define PHP_GRPC_GET_WRAPPED_OBJECT(class_object, zv) \
- (class_object *)zend_object_store_get_object(zv TSRMLS_CC)
-
-#else
#define php_grpc_int size_t
#define php_grpc_long zend_long
#define PHP_GRPC_GET_WRAPPED_OBJECT(class_object, zv) \
class_object##_from_obj(Z_OBJ_P((zv)))
-#endif /* PHP_MAJOR_VERSION */
-
#endif /* PHP7_WRAPPER_GRPC_H */
grpc_php_shutdown_completion_queue(TSRMLS_C);
// clean-up grpc_core
- grpc_shutdown_blocking();
+ grpc_shutdown();
if (grpc_is_initialized() > 0) {
zend_throw_exception(spl_ce_UnexpectedValueException,
"Oops, failed to shutdown gRPC Core after fork()",
zend_hash_destroy(&grpc_target_upper_bound_map);
grpc_shutdown_timeval(TSRMLS_C);
grpc_php_shutdown_completion_queue(TSRMLS_C);
- grpc_shutdown_blocking();
+ grpc_shutdown();
GRPC_G(initialized) = 0;
}
return SUCCESS;
#define PHP_GRPC_API
#endif
+#if PHP_MAJOR_VERSION >= 8
+#define TSRMLS_CC
+#define TSRMLS_C
+#define TSRMLS_DC
+#define TSRMLS_D
+#define TSRMLS_FETCH()
+#endif
+
#ifdef ZTS
#include "TSRM.h"
#endif
#ifndef VERSION_H
#define VERSION_H
-#define PHP_GRPC_VERSION "1.33.2"
+#define PHP_GRPC_VERSION "1.34.0"
#endif /* VERSION_H */
@include_once dirname(__FILE__).'/math.pb.php';
@include_once dirname(__FILE__).'/math_grpc_pb.php';
-abstract class AbstractGeneratedCodeTest extends PHPUnit_Framework_TestCase
+abstract class AbstractGeneratedCodeTest extends \PHPUnit\Framework\TestCase
{
/**
* These tests require that a server exporting the math service must be
class GeneratedCodeTest extends AbstractGeneratedCodeTest
{
- public function setUp()
+ public function setUp(): void
{
self::$client = new Math\MathClient(
getenv('GRPC_TEST_HOST'), [
]);
}
- public function tearDown()
+ public function tearDown(): void
{
self::$client->close();
}
class GeneratedCodeWithCallbackTest extends AbstractGeneratedCodeTest
{
- public function setUp()
+ public function setUp(): void
{
self::$client = new Math\MathClient(
getenv('GRPC_TEST_HOST'),
]);
}
- public function tearDown()
+ public function tearDown(): void
{
self::$client->close();
}
$status->details);
}
+function specialStatusMessage($stub)
+{
+ $test_code = Grpc\STATUS_UNKNOWN;
+ $test_msg = "\t\ntest with whitespace\r\nand Unicode BMP ☺ and non-BMP 😈\t\n";
+
+ $echo_status = new Grpc\Testing\EchoStatus();
+ $echo_status->setCode($test_code);
+ $echo_status->setMessage($test_msg);
+
+ $request = new Grpc\Testing\SimpleRequest();
+ $request->setResponseStatus($echo_status);
+
+ $call = $stub->UnaryCall($request);
+ list($result, $status) = $call->wait();
+
+ hardAssert(
+ $status->code === $test_code,
+ 'Received unexpected UnaryCall status code: ' . $status->code
+ );
+ hardAssert(
+ $status->details === $test_msg,
+ 'Received unexpected UnaryCall status details: ' . $status->details
+ );
+}
+
# NOTE: the stub input to this function is from UnimplementedService
function unimplementedService($stub)
{
case 'status_code_and_message':
statusCodeAndMessage($stub);
break;
+ case 'special_status_message':
+ specialStatusMessage($stub);
case 'unimplemented_service':
unimplementedService($stub);
break;
*
*/
-class CallCredentials2Test extends PHPUnit_Framework_TestCase
+class CallCredentials2Test extends \PHPUnit\Framework\TestCase
{
- public function setUp()
+ public function setUp(): void
{
$credentials = Grpc\ChannelCredentials::createSsl(
file_get_contents(dirname(__FILE__).'/../data/ca.pem'));
);
}
- public function tearDown()
+ public function tearDown(): void
{
unset($this->channel);
unset($this->server);
*
*/
-class CallCredentialsTest extends PHPUnit_Framework_TestCase
+class CallCredentialsTest extends \PHPUnit\Framework\TestCase
{
- public function setUp()
+ public function setUp(): void
{
$this->credentials = Grpc\ChannelCredentials::createSsl(
file_get_contents(dirname(__FILE__).'/../data/ca.pem'));
);
}
- public function tearDown()
+ public function tearDown(): void
{
unset($this->channel);
unset($this->server);
}
}
-class CallInvokerTest extends PHPUnit_Framework_TestCase
+class CallInvokerTest extends \PHPUnit\Framework\TestCase
{
- public function setUp()
+ public function setUp(): void
{
$this->server = new Grpc\Server([]);
$this->port = $this->server->addHttp2Port('0.0.0.0:0');
$this->server->start();
}
- public function tearDown()
+ public function tearDown(): void
{
unset($this->server);
}
* limitations under the License.
*
*/
-class CallTest extends PHPUnit_Framework_TestCase
+class CallTest extends \PHPUnit\Framework\TestCase
{
public static $server;
public static $port;
- public static function setUpBeforeClass()
+ public static function setUpBeforeClass(): void
{
self::$server = new Grpc\Server([]);
self::$port = self::$server->addHttp2Port('0.0.0.0:53000');
self::$server->start();
}
- public function setUp()
+ public function setUp(): void
{
$this->channel = new Grpc\Channel('localhost:'.self::$port, [
'force_new' => true,
Grpc\Timeval::infFuture());
}
- public function tearDown()
+ public function tearDown(): void
{
$this->channel->close();
}
*
*/
-class ChanellCredentialsTest extends PHPUnit_Framework_TestCase
+class ChanellCredentialsTest extends \PHPUnit\Framework\TestCase
{
- public function setUp()
+ public function setUp(): void
{
}
- public function tearDown()
+ public function tearDown(): void
{
}
*
*/
-class ChannelTest extends PHPUnit_Framework_TestCase
+class ChannelTest extends \PHPUnit\Framework\TestCase
{
- public function setUp()
+ public function setUp(): void
{
}
- public function tearDown()
+ public function tearDown(): void
{
if (!empty($this->channel)) {
$this->channel->close();
* limitations under the License.
*
*/
-class EndToEndTest extends PHPUnit_Framework_TestCase
+class EndToEndTest extends \PHPUnit\Framework\TestCase
{
- public function setUp()
+ public function setUp(): void
{
$this->server = new Grpc\Server([]);
$this->port = $this->server->addHttp2Port('0.0.0.0:0');
$this->server->start();
}
- public function tearDown()
+ public function tearDown(): void
{
$this->channel->close();
unset($this->server);
}
}
-class InterceptorTest extends PHPUnit_Framework_TestCase
+class InterceptorTest extends \PHPUnit\Framework\TestCase
{
- public function setUp()
+ public function setUp(): void
{
$this->server = new Grpc\Server([]);
$this->port = $this->server->addHttp2Port('0.0.0.0:0');
$this->server->start();
}
- public function tearDown()
+ public function tearDown(): void
{
$this->channel->close();
unset($this->server);
/**
* @group persistent_list_bound_tests
*/
-class PersistentListTest extends PHPUnit_Framework_TestCase
+class PersistentListTest extends \PHPUnit\Framework\TestCase
{
- public function setUp()
+ public function setUp(): void
{
}
- public function tearDown()
+ public function tearDown(): void
{
$channel_clean_persistent =
new Grpc\Channel('localhost:50010', []);
* limitations under the License.
*
*/
-class SecureEndToEndTest extends PHPUnit_Framework_TestCase
+class SecureEndToEndTest extends \PHPUnit\Framework\TestCase
{
- public function setUp()
+ public function setUp(): void
{
$credentials = Grpc\ChannelCredentials::createSsl(
file_get_contents(dirname(__FILE__).'/../data/ca.pem'));
);
}
- public function tearDown()
+ public function tearDown(): void
{
$this->channel->close();
unset($this->server);
*
*/
-class ServerTest extends PHPUnit_Framework_TestCase
+class ServerTest extends \PHPUnit\Framework\TestCase
{
- public function setUp()
+ public function setUp(): void
{
$this->server = null;
}
- public function tearDown()
+ public function tearDown(): void
{
unset($this->server);
}
* limitations under the License.
*
*/
-class TimevalTest extends PHPUnit_Framework_TestCase
+class TimevalTest extends \PHPUnit\Framework\TestCase
{
- public function setUp()
+ public function setUp(): void
{
}
- public function tearDown()
+ public function tearDown(): void
{
unset($this->time);
}
# See the License for the specific language governing permissions and
# limitations under the License.
"""Generates the appropriate build.json data for all the proto files."""
-from __future__ import print_function
+
import yaml
import collections
import os
int32 num_failures = 2;
map<string, RpcsByPeer> rpcs_by_method = 3;
}
+
+// Request for retrieving a test client's accumulated stats.
+message LoadBalancerAccumulatedStatsRequest {}
+
+// Accumulated stats for RPCs sent by a test client.
+message LoadBalancerAccumulatedStatsResponse {
+ // The total number of RPCs have ever issued for each type.
+ map<string, int32> num_rpcs_started_by_method = 1;
+ // The total number of RPCs have ever completed successfully for each type.
+ map<string, int32> num_rpcs_succeeded_by_method = 2;
+ // The total number of RPCs have ever failed for each type.
+ map<string, int32> num_rpcs_failed_by_method = 3;
+}
+
+// Configurations for a test client.
+message ClientConfigureRequest {
+ // Type of RPCs to send.
+ enum RpcType {
+ EMPTY_CALL = 0;
+ UNARY_CALL = 1;
+ }
+
+ // Metadata to be attached for the given type of RPCs.
+ message Metadata {
+ RpcType type = 1;
+ string key = 2;
+ string value = 3;
+ }
+
+ // The types of RPCs the client sends.
+ repeated RpcType types = 1;
+ // The collection of custom metadata to be attached to RPCs sent by the client.
+ repeated Metadata metadata = 2;
+}
+
+// Response for updating a test client's configuration.
+message ClientConfigureResponse {}
// Gets the backend distribution for RPCs sent by a test client.
rpc GetClientStats(LoadBalancerStatsRequest)
returns (LoadBalancerStatsResponse) {}
+
+ // Gets the accumulated stats for RPCs sent by a test client.
+ rpc GetClientAccumulatedStats(LoadBalancerAccumulatedStatsRequest)
+ returns (LoadBalancerAccumulatedStatsResponse) {}
}
// A service to remotely control health status of an xDS test server.
rpc SetServing(grpc.testing.Empty) returns (grpc.testing.Empty);
rpc SetNotServing(grpc.testing.Empty) returns (grpc.testing.Empty);
}
+
+// A service to dynamically update the configuration of an xDS test client.
+service XdsUpdateClientConfigureService {
+ // Update the tes client's configuration.
+ rpc Configure(ClientConfigureRequest) returns (ClientConfigureResponse);
+}
)
grpc_proto_library(
+ name = "protocol_proto",
+ srcs = [
+ "protocol.proto",
+ ],
+ well_known_protos = True,
+)
+
+grpc_proto_library(
name = "range_proto",
srcs = [
"range.proto",
],
deps = [
"config_source_proto",
+ "protocol_proto",
"route_proto",
],
)
package envoy.extensions.filters.network.http_connection_manager.v3;
import "src/proto/grpc/testing/xds/v3/config_source.proto";
+import "src/proto/grpc/testing/xds/v3/protocol.proto";
import "src/proto/grpc/testing/xds/v3/route.proto";
// [#protodoc-title: HTTP connection manager]
// HTTP connection manager :ref:`configuration overview <config_http_conn_man>`.
// [#extension: envoy.filters.network.http_connection_manager]
-// [#next-free-field: 38]
message HttpConnectionManager {
oneof route_specifier {
// The connection manager’s route table will be dynamically loaded via the RDS API.
// specified in this message.
ScopedRoutes scoped_routes = 31;
}
+
+ // Additional settings for HTTP requests handled by the connection manager. These will be
+ // applicable to both HTTP1 and HTTP2 requests.
+ config.core.v3.HttpProtocolOptions common_http_protocol_options = 35;
}
message Rds {
--- /dev/null
+// Copyright 2020 The gRPC Authors
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// Local copy of Envoy xDS proto file, used for testing only.
+
+syntax = "proto3";
+
+package envoy.config.core.v3;
+
+import "google/protobuf/duration.proto";
+
+// [#next-free-field: 5]
+message HttpProtocolOptions {
+ // The maximum duration of a connection.
+ google.protobuf.Duration max_stream_duration = 4;
+}
import "src/proto/grpc/testing/xds/v3/percent.proto";
import "src/proto/grpc/testing/xds/v3/range.proto";
+import "google/protobuf/duration.proto";
import "google/protobuf/wrappers.proto";
// [#protodoc-title: HTTP route components]
repeated QueryParameterMatcher query_parameters = 7;
}
-// [#next-free-field: 34]
+message MaxStreamDuration {
+ // Specifies the maximum duration allowed for streams on the route. If not specified, the value
+ // from the :ref:`max_stream_duration
+ // <envoy_api_field_config.core.v3.HttpProtocolOptions.max_stream_duration>` field in
+ // :ref:`HttpConnectionManager.common_http_protocol_options
+ // <envoy_api_field_extensions.filters.network.http_connection_manager.v3.HttpConnectionManager.common_http_protocol_options>`
+ // is used. If this field is set explicitly to zero, any
+ // HttpConnectionManager max_stream_duration timeout will be disabled for
+ // this route.
+ google.protobuf.Duration max_stream_duration = 1;
+
+ // If present, and the request contains a `grpc-timeout header
+ // <https://github.com/grpc/grpc/blob/master/doc/PROTOCOL-HTTP2.md>`_, use that value as the
+ // *max_stream_duration*, but limit the applied timeout to the maximum value specified here.
+ // If set to 0, the `grpc-timeout` header is used without modification.
+ google.protobuf.Duration grpc_timeout_header_max = 2;
+}
+
+// [#next-free-field: 37]
message RouteAction {
oneof cluster_specifier {
// Indicates the upstream cluster to which the request should be routed
// for additional documentation.
WeightedCluster weighted_clusters = 3;
}
+ // Specifies the maximum stream duration for this route.
+ MaxStreamDuration max_stream_duration = 36;
}
// .. attention::
"""Test if default compiler is okay with specifying c++ version
when invoked in C mode. GCC is okay with this, while clang is not.
"""
- if platform.system() != 'Windows':
+ try:
+ # TODO(lidiz) Remove the generated a.out for success tests.
+ cc_test = subprocess.Popen(['cc', '-x', 'c', '-std=c++11', '-'],
+ stdin=subprocess.PIPE,
+ stdout=subprocess.PIPE,
+ stderr=subprocess.PIPE)
+ _, cc_err = cc_test.communicate(input=b'int main(){return 0;}')
+ return not 'invalid argument' in str(cc_err)
+ except:
+ sys.stderr.write('Non-fatal exception:' +
+ traceback.format_exc() + '\n')
return False
- # TODO(lidiz) Remove the generated a.out for success tests.
- cc_test = subprocess.Popen(['cc', '-x', 'c', '-std=c++11', '-'],
- stdin=subprocess.PIPE,
- stdout=subprocess.PIPE,
- stderr=subprocess.PIPE)
- _, cc_err = cc_test.communicate(input=b'int main(){return 0;}')
- return not 'invalid argument' in str(cc_err)
# This special conditioning is here due to difference of compiler
# behavior in gcc and clang. The clang doesn't take --stdc++11
Define functions are not allowed in "cdef" functions, and Cython complains
about a simple lambda with a C function.
"""
- grpc_shutdown_blocking()
+ grpc_shutdown()
cdef _actual_aio_shutdown():
future.add_done_callback(_grpc_shutdown_wrapper)
elif _global_aio_state.engine is AsyncIOEngine.POLLER:
(<PollerCompletionQueue>_global_aio_state.cq).shutdown()
- grpc_shutdown_blocking()
+ grpc_shutdown()
else:
raise ValueError('Unsupported engine type [%s]' % _global_aio_state.engine)
def _serving_task_crash_handler(self, object task):
"""Shutdown the server immediately if unexpectedly exited."""
+ if task.cancelled():
+ return
if task.exception() is None:
return
if self._status != AIO_SERVER_STATUS_STOPPING:
with nogil:
if self.c_call != NULL:
grpc_call_unref(self.c_call)
- grpc_shutdown_blocking()
+ grpc_shutdown()
# The object *should* always be valid from Python. Used for debugging.
@property
_destroy_c_completion_queue(state.c_connectivity_completion_queue)
grpc_channel_destroy(state.c_channel)
state.c_channel = NULL
- grpc_shutdown_blocking()
+ grpc_shutdown()
state.condition.notify_all()
else:
# Another call to close already completed in the past or is currently
self.c_completion_queue, c_deadline, NULL)
self._interpret_event(event)
grpc_completion_queue_destroy(self.c_completion_queue)
- grpc_shutdown_blocking()
+ grpc_shutdown()
cdef void _destroy(void *state) except * with gil:
cpython.Py_DECREF(<object>state)
- grpc_shutdown_blocking()
+ grpc_shutdown()
cdef class MetadataPluginCallCredentials(CallCredentials):
def __dealloc__(self):
if self._cache != NULL:
grpc_ssl_session_cache_destroy(self._cache)
- grpc_shutdown_blocking()
+ grpc_shutdown()
cdef class SSLChannelCredentials(ChannelCredentials):
def __dealloc__(self):
grpc_ssl_server_certificate_config_destroy(self.c_cert_config)
gpr_free(self.c_ssl_pem_key_cert_pairs)
- grpc_shutdown_blocking()
+ grpc_shutdown()
cdef class ServerCredentials:
def __dealloc__(self):
if self.c_credentials != NULL:
grpc_server_credentials_release(self.c_credentials)
- grpc_shutdown_blocking()
+ grpc_shutdown()
cdef const char* _get_c_pem_root_certs(pem_root_certs):
if pem_root_certs is None:
grpc_op_data data
void grpc_init() nogil
+ void grpc_shutdown() nogil
void grpc_shutdown_blocking() nogil
int grpc_is_initialized() nogil
self.len = 0
def __dealloc__(self):
- grpc_shutdown_blocking()
+ grpc_shutdown()
cdef grpc_error* socket_init(grpc_custom_socket* socket, int domain) with gil:
sw = SocketWrapper()
self.c_port = NULL
def __dealloc__(self):
- grpc_shutdown_blocking()
+ grpc_shutdown()
cdef socket_resolve_async_cython(ResolveWrapper resolve_wrapper):
try:
self.timer.stop()
def __dealloc__(self):
- grpc_shutdown_blocking()
+ grpc_shutdown()
cdef void timer_start(grpc_custom_timer* t) with gil:
timer = TimerWrapper(t.timeout_ms / 1000.0)
def __dealloc__(self):
with nogil:
grpc_call_details_destroy(&self.c_details)
- grpc_shutdown_blocking()
+ grpc_shutdown()
@property
def method(self):
def __dealloc__(self):
if self.c_server == NULL:
- grpc_shutdown_blocking()
+ grpc_shutdown()
# AUTO-GENERATED FROM `$REPO_ROOT/templates/src/python/grpcio/grpc/_grpcio_metadata.py.template`!!!
-__version__ = """1.33.2"""
+__version__ = """1.34.0"""
'src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc',
'src/core/ext/filters/client_channel/lb_policy/xds/cds.cc',
'src/core/ext/filters/client_channel/lb_policy/xds/eds.cc',
- 'src/core/ext/filters/client_channel/lb_policy/xds/eds_drop.cc',
+ 'src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc',
'src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc',
'src/core/ext/filters/client_channel/lb_policy_registry.cc',
'src/core/ext/filters/client_channel/local_subchannel_pool.cc',
'src/core/ext/upb-generated/udpa/core/v1/resource_name.upb.c',
'src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.c',
'src/core/ext/upb-generated/validate/validate.upb.c',
+ 'src/core/ext/upbdefs-generated/envoy/annotations/deprecation.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/annotations/resource.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/config/cluster/v3/filter.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/config/core/v3/backoff.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/config/core/v3/event_service_config.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_service.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/config/core/v3/http_uri.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/load_report.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/config/listener/v3/api_listener.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/service/cluster/v3/cds.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/service/endpoint/v3/eds.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/service/listener/v3/lds.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/service/route/v3/rds.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/service/route/v3/srds.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/type/matcher/v3/metadata.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/type/matcher/v3/number.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/type/matcher/v3/path.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/type/matcher/v3/value.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/type/metadata/v3/metadata.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/type/tracing/v3/custom_tag.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/type/v3/http.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/type/v3/percent.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/type/v3/range.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/type/v3/semantic_version.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/google/api/annotations.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/google/api/http.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/google/protobuf/any.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/google/protobuf/duration.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/google/protobuf/empty.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/google/protobuf/struct.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/google/protobuf/timestamp.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/udpa/core/v1/authority.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/udpa/core/v1/collection_entry.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/udpa/core/v1/context_params.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/udpa/core/v1/resource.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/udpa/core/v1/resource_locator.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/udpa/core/v1/resource_name.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/validate/validate.upbdefs.c',
'src/core/ext/xds/certificate_provider_registry.cc',
+ 'src/core/ext/xds/certificate_provider_store.cc',
+ 'src/core/ext/xds/file_watcher_certificate_provider_factory.cc',
'src/core/ext/xds/google_mesh_ca_certificate_provider_factory.cc',
'src/core/ext/xds/xds_api.cc',
'src/core/ext/xds/xds_bootstrap.cc',
+ 'src/core/ext/xds/xds_certificate_provider.cc',
'src/core/ext/xds/xds_client.cc',
'src/core/ext/xds/xds_client_stats.cc',
'src/core/lib/avl/avl.cc',
'src/core/lib/gpr/tmpfile_windows.cc',
'src/core/lib/gpr/wrap_memcpy.cc',
'src/core/lib/gprpp/arena.cc',
+ 'src/core/lib/gprpp/examine_stack.cc',
'src/core/lib/gprpp/fork.cc',
'src/core/lib/gprpp/global_config_env.cc',
'src/core/lib/gprpp/host_port.cc',
'src/core/lib/gprpp/mpscq.cc',
+ 'src/core/lib/gprpp/stat_posix.cc',
+ 'src/core/lib/gprpp/stat_windows.cc',
'src/core/lib/gprpp/thd_posix.cc',
'src/core/lib/gprpp/thd_windows.cc',
'src/core/lib/http/format_request.cc',
'src/core/lib/security/credentials/composite/composite_credentials.cc',
'src/core/lib/security/credentials/credentials.cc',
'src/core/lib/security/credentials/credentials_metadata.cc',
+ 'src/core/lib/security/credentials/external/aws_request_signer.cc',
+ 'src/core/lib/security/credentials/external/external_account_credentials.cc',
+ 'src/core/lib/security/credentials/external/file_external_account_credentials.cc',
+ 'src/core/lib/security/credentials/external/url_external_account_credentials.cc',
'src/core/lib/security/credentials/fake/fake_credentials.cc',
'src/core/lib/security/credentials/google_default/credentials_generic.cc',
'src/core/lib/security/credentials/google_default/google_default_credentials.cc',
'src/core/lib/security/credentials/iam/iam_credentials.cc',
+ 'src/core/lib/security/credentials/insecure/insecure_credentials.cc',
'src/core/lib/security/credentials/jwt/json_token.cc',
'src/core/lib/security/credentials/jwt/jwt_credentials.cc',
'src/core/lib/security/credentials/jwt/jwt_verifier.cc',
'src/core/lib/security/credentials/plugin/plugin_credentials.cc',
'src/core/lib/security/credentials/ssl/ssl_credentials.cc',
'src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc',
+ 'src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc',
'src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc',
'src/core/lib/security/credentials/tls/tls_credentials.cc',
'src/core/lib/security/credentials/xds/xds_credentials.cc',
'src/core/lib/security/security_connector/alts/alts_security_connector.cc',
'src/core/lib/security/security_connector/fake/fake_security_connector.cc',
+ 'src/core/lib/security/security_connector/insecure/insecure_security_connector.cc',
'src/core/lib/security/security_connector/load_system_roots_fallback.cc',
'src/core/lib/security/security_connector/load_system_roots_linux.cc',
'src/core/lib/security/security_connector/local/local_security_connector.cc',
'src/core/tsi/ssl_transport_security.cc',
'src/core/tsi/transport_security.cc',
'src/core/tsi/transport_security_grpc.cc',
- 'third_party/abseil-cpp/absl/base/dynamic_annotations.cc',
'third_party/abseil-cpp/absl/base/internal/cycleclock.cc',
'third_party/abseil-cpp/absl/base/internal/exponential_biased.cc',
'third_party/abseil-cpp/absl/base/internal/low_level_alloc.cc',
'third_party/boringssl-with-bazel/src/crypto/thread_win.c',
'third_party/boringssl-with-bazel/src/crypto/trust_token/pmbtoken.c',
'third_party/boringssl-with-bazel/src/crypto/trust_token/trust_token.c',
+ 'third_party/boringssl-with-bazel/src/crypto/trust_token/voprf.c',
'third_party/boringssl-with-bazel/src/crypto/x509/a_digest.c',
'third_party/boringssl-with-bazel/src/crypto/x509/a_sign.c',
'third_party/boringssl-with-bazel/src/crypto/x509/a_strex.c',
'third_party/re2/util/rune.cc',
'third_party/re2/util/strutil.cc',
'third_party/upb/upb/decode.c',
+ 'third_party/upb/upb/def.c',
'third_party/upb/upb/encode.c',
'third_party/upb/upb/msg.c',
'third_party/upb/upb/port.c',
+ 'third_party/upb/upb/reflection.c',
'third_party/upb/upb/table.c',
+ 'third_party/upb/upb/text_encode.c',
'third_party/upb/upb/upb.c',
'third_party/zlib/adler32.c',
'third_party/zlib/compress.c',
'third_party/boringssl-with-bazel/ios-aarch64/crypto/fipsmodule/vpaes-armv8.S',
'third_party/boringssl-with-bazel/ios-aarch64/crypto/test/trampoline-armv8.S',
],
- 'crypto_mac_x86_64': [
- 'third_party/boringssl-with-bazel/mac-x86_64/crypto/chacha/chacha-x86_64.S',
- 'third_party/boringssl-with-bazel/mac-x86_64/crypto/cipher_extra/aes128gcmsiv-x86_64.S',
- 'third_party/boringssl-with-bazel/mac-x86_64/crypto/cipher_extra/chacha20_poly1305_x86_64.S',
- 'third_party/boringssl-with-bazel/mac-x86_64/crypto/fipsmodule/aesni-gcm-x86_64.S',
- 'third_party/boringssl-with-bazel/mac-x86_64/crypto/fipsmodule/aesni-x86_64.S',
- 'third_party/boringssl-with-bazel/mac-x86_64/crypto/fipsmodule/ghash-ssse3-x86_64.S',
- 'third_party/boringssl-with-bazel/mac-x86_64/crypto/fipsmodule/ghash-x86_64.S',
- 'third_party/boringssl-with-bazel/mac-x86_64/crypto/fipsmodule/md5-x86_64.S',
- 'third_party/boringssl-with-bazel/mac-x86_64/crypto/fipsmodule/p256-x86_64-asm.S',
- 'third_party/boringssl-with-bazel/mac-x86_64/crypto/fipsmodule/p256_beeu-x86_64-asm.S',
- 'third_party/boringssl-with-bazel/mac-x86_64/crypto/fipsmodule/rdrand-x86_64.S',
- 'third_party/boringssl-with-bazel/mac-x86_64/crypto/fipsmodule/rsaz-avx2.S',
- 'third_party/boringssl-with-bazel/mac-x86_64/crypto/fipsmodule/sha1-x86_64.S',
- 'third_party/boringssl-with-bazel/mac-x86_64/crypto/fipsmodule/sha256-x86_64.S',
- 'third_party/boringssl-with-bazel/mac-x86_64/crypto/fipsmodule/sha512-x86_64.S',
- 'third_party/boringssl-with-bazel/mac-x86_64/crypto/fipsmodule/vpaes-x86_64.S',
- 'third_party/boringssl-with-bazel/mac-x86_64/crypto/fipsmodule/x86_64-mont.S',
- 'third_party/boringssl-with-bazel/mac-x86_64/crypto/fipsmodule/x86_64-mont5.S',
- 'third_party/boringssl-with-bazel/mac-x86_64/crypto/test/trampoline-x86_64.S',
+ 'crypto_ios_arm': [
+ 'third_party/boringssl-with-bazel/ios-arm/crypto/chacha/chacha-armv4.S',
+ 'third_party/boringssl-with-bazel/ios-arm/crypto/fipsmodule/aesv8-armx32.S',
+ 'third_party/boringssl-with-bazel/ios-arm/crypto/fipsmodule/armv4-mont.S',
+ 'third_party/boringssl-with-bazel/ios-arm/crypto/fipsmodule/bsaes-armv7.S',
+ 'third_party/boringssl-with-bazel/ios-arm/crypto/fipsmodule/ghash-armv4.S',
+ 'third_party/boringssl-with-bazel/ios-arm/crypto/fipsmodule/ghashv8-armx32.S',
+ 'third_party/boringssl-with-bazel/ios-arm/crypto/fipsmodule/sha1-armv4-large.S',
+ 'third_party/boringssl-with-bazel/ios-arm/crypto/fipsmodule/sha256-armv4.S',
+ 'third_party/boringssl-with-bazel/ios-arm/crypto/fipsmodule/sha512-armv4.S',
+ 'third_party/boringssl-with-bazel/ios-arm/crypto/fipsmodule/vpaes-armv7.S',
+ 'third_party/boringssl-with-bazel/ios-arm/crypto/test/trampoline-armv4.S',
],
- 'crypto_win_x86': [
- 'third_party/boringssl-with-bazel/win-x86/crypto/chacha/chacha-x86.asm',
- 'third_party/boringssl-with-bazel/win-x86/crypto/fipsmodule/aesni-x86.asm',
- 'third_party/boringssl-with-bazel/win-x86/crypto/fipsmodule/bn-586.asm',
- 'third_party/boringssl-with-bazel/win-x86/crypto/fipsmodule/co-586.asm',
- 'third_party/boringssl-with-bazel/win-x86/crypto/fipsmodule/ghash-ssse3-x86.asm',
- 'third_party/boringssl-with-bazel/win-x86/crypto/fipsmodule/ghash-x86.asm',
- 'third_party/boringssl-with-bazel/win-x86/crypto/fipsmodule/md5-586.asm',
- 'third_party/boringssl-with-bazel/win-x86/crypto/fipsmodule/sha1-586.asm',
- 'third_party/boringssl-with-bazel/win-x86/crypto/fipsmodule/sha256-586.asm',
- 'third_party/boringssl-with-bazel/win-x86/crypto/fipsmodule/sha512-586.asm',
- 'third_party/boringssl-with-bazel/win-x86/crypto/fipsmodule/vpaes-x86.asm',
- 'third_party/boringssl-with-bazel/win-x86/crypto/fipsmodule/x86-mont.asm',
- 'third_party/boringssl-with-bazel/win-x86/crypto/test/trampoline-x86.asm',
+ 'crypto_linux_aarch64': [
+ 'third_party/boringssl-with-bazel/linux-aarch64/crypto/chacha/chacha-armv8.S',
+ 'third_party/boringssl-with-bazel/linux-aarch64/crypto/fipsmodule/aesv8-armx64.S',
+ 'third_party/boringssl-with-bazel/linux-aarch64/crypto/fipsmodule/armv8-mont.S',
+ 'third_party/boringssl-with-bazel/linux-aarch64/crypto/fipsmodule/ghash-neon-armv8.S',
+ 'third_party/boringssl-with-bazel/linux-aarch64/crypto/fipsmodule/ghashv8-armx64.S',
+ 'third_party/boringssl-with-bazel/linux-aarch64/crypto/fipsmodule/sha1-armv8.S',
+ 'third_party/boringssl-with-bazel/linux-aarch64/crypto/fipsmodule/sha256-armv8.S',
+ 'third_party/boringssl-with-bazel/linux-aarch64/crypto/fipsmodule/sha512-armv8.S',
+ 'third_party/boringssl-with-bazel/linux-aarch64/crypto/fipsmodule/vpaes-armv8.S',
+ 'third_party/boringssl-with-bazel/linux-aarch64/crypto/test/trampoline-armv8.S',
+ ],
+ 'crypto_linux_arm': [
+ 'third_party/boringssl-with-bazel/linux-arm/crypto/chacha/chacha-armv4.S',
+ 'third_party/boringssl-with-bazel/linux-arm/crypto/fipsmodule/aesv8-armx32.S',
+ 'third_party/boringssl-with-bazel/linux-arm/crypto/fipsmodule/armv4-mont.S',
+ 'third_party/boringssl-with-bazel/linux-arm/crypto/fipsmodule/bsaes-armv7.S',
+ 'third_party/boringssl-with-bazel/linux-arm/crypto/fipsmodule/ghash-armv4.S',
+ 'third_party/boringssl-with-bazel/linux-arm/crypto/fipsmodule/ghashv8-armx32.S',
+ 'third_party/boringssl-with-bazel/linux-arm/crypto/fipsmodule/sha1-armv4-large.S',
+ 'third_party/boringssl-with-bazel/linux-arm/crypto/fipsmodule/sha256-armv4.S',
+ 'third_party/boringssl-with-bazel/linux-arm/crypto/fipsmodule/sha512-armv4.S',
+ 'third_party/boringssl-with-bazel/linux-arm/crypto/fipsmodule/vpaes-armv7.S',
+ 'third_party/boringssl-with-bazel/linux-arm/crypto/test/trampoline-armv4.S',
+ 'third_party/boringssl-with-bazel/src/crypto/curve25519/asm/x25519-asm-arm.S',
+ 'third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305_arm_asm.S',
],
'crypto_linux_ppc64le': [
'third_party/boringssl-with-bazel/linux-ppc64le/crypto/fipsmodule/aesp8-ppc.S',
'third_party/boringssl-with-bazel/linux-ppc64le/crypto/fipsmodule/ghashp8-ppc.S',
'third_party/boringssl-with-bazel/linux-ppc64le/crypto/test/trampoline-ppc.S',
],
- 'crypto_mac_x86': [
- 'third_party/boringssl-with-bazel/mac-x86/crypto/chacha/chacha-x86.S',
- 'third_party/boringssl-with-bazel/mac-x86/crypto/fipsmodule/aesni-x86.S',
- 'third_party/boringssl-with-bazel/mac-x86/crypto/fipsmodule/bn-586.S',
- 'third_party/boringssl-with-bazel/mac-x86/crypto/fipsmodule/co-586.S',
- 'third_party/boringssl-with-bazel/mac-x86/crypto/fipsmodule/ghash-ssse3-x86.S',
- 'third_party/boringssl-with-bazel/mac-x86/crypto/fipsmodule/ghash-x86.S',
- 'third_party/boringssl-with-bazel/mac-x86/crypto/fipsmodule/md5-586.S',
- 'third_party/boringssl-with-bazel/mac-x86/crypto/fipsmodule/sha1-586.S',
- 'third_party/boringssl-with-bazel/mac-x86/crypto/fipsmodule/sha256-586.S',
- 'third_party/boringssl-with-bazel/mac-x86/crypto/fipsmodule/sha512-586.S',
- 'third_party/boringssl-with-bazel/mac-x86/crypto/fipsmodule/vpaes-x86.S',
- 'third_party/boringssl-with-bazel/mac-x86/crypto/fipsmodule/x86-mont.S',
- 'third_party/boringssl-with-bazel/mac-x86/crypto/test/trampoline-x86.S',
- ],
'crypto_linux_x86': [
'third_party/boringssl-with-bazel/linux-x86/crypto/chacha/chacha-x86.S',
'third_party/boringssl-with-bazel/linux-x86/crypto/fipsmodule/aesni-x86.S',
'third_party/boringssl-with-bazel/linux-x86/crypto/fipsmodule/x86-mont.S',
'third_party/boringssl-with-bazel/linux-x86/crypto/test/trampoline-x86.S',
],
- 'crypto_ios_arm': [
- 'third_party/boringssl-with-bazel/ios-arm/crypto/chacha/chacha-armv4.S',
- 'third_party/boringssl-with-bazel/ios-arm/crypto/fipsmodule/aesv8-armx32.S',
- 'third_party/boringssl-with-bazel/ios-arm/crypto/fipsmodule/armv4-mont.S',
- 'third_party/boringssl-with-bazel/ios-arm/crypto/fipsmodule/bsaes-armv7.S',
- 'third_party/boringssl-with-bazel/ios-arm/crypto/fipsmodule/ghash-armv4.S',
- 'third_party/boringssl-with-bazel/ios-arm/crypto/fipsmodule/ghashv8-armx32.S',
- 'third_party/boringssl-with-bazel/ios-arm/crypto/fipsmodule/sha1-armv4-large.S',
- 'third_party/boringssl-with-bazel/ios-arm/crypto/fipsmodule/sha256-armv4.S',
- 'third_party/boringssl-with-bazel/ios-arm/crypto/fipsmodule/sha512-armv4.S',
- 'third_party/boringssl-with-bazel/ios-arm/crypto/fipsmodule/vpaes-armv7.S',
- 'third_party/boringssl-with-bazel/ios-arm/crypto/test/trampoline-armv4.S',
- ],
'crypto_linux_x86_64': [
'third_party/boringssl-with-bazel/linux-x86_64/crypto/chacha/chacha-x86_64.S',
'third_party/boringssl-with-bazel/linux-x86_64/crypto/cipher_extra/aes128gcmsiv-x86_64.S',
'third_party/boringssl-with-bazel/linux-x86_64/crypto/test/trampoline-x86_64.S',
'third_party/boringssl-with-bazel/src/crypto/hrss/asm/poly_rq_mul.S',
],
+ 'crypto_mac_x86': [
+ 'third_party/boringssl-with-bazel/mac-x86/crypto/chacha/chacha-x86.S',
+ 'third_party/boringssl-with-bazel/mac-x86/crypto/fipsmodule/aesni-x86.S',
+ 'third_party/boringssl-with-bazel/mac-x86/crypto/fipsmodule/bn-586.S',
+ 'third_party/boringssl-with-bazel/mac-x86/crypto/fipsmodule/co-586.S',
+ 'third_party/boringssl-with-bazel/mac-x86/crypto/fipsmodule/ghash-ssse3-x86.S',
+ 'third_party/boringssl-with-bazel/mac-x86/crypto/fipsmodule/ghash-x86.S',
+ 'third_party/boringssl-with-bazel/mac-x86/crypto/fipsmodule/md5-586.S',
+ 'third_party/boringssl-with-bazel/mac-x86/crypto/fipsmodule/sha1-586.S',
+ 'third_party/boringssl-with-bazel/mac-x86/crypto/fipsmodule/sha256-586.S',
+ 'third_party/boringssl-with-bazel/mac-x86/crypto/fipsmodule/sha512-586.S',
+ 'third_party/boringssl-with-bazel/mac-x86/crypto/fipsmodule/vpaes-x86.S',
+ 'third_party/boringssl-with-bazel/mac-x86/crypto/fipsmodule/x86-mont.S',
+ 'third_party/boringssl-with-bazel/mac-x86/crypto/test/trampoline-x86.S',
+ ],
+ 'crypto_mac_x86_64': [
+ 'third_party/boringssl-with-bazel/mac-x86_64/crypto/chacha/chacha-x86_64.S',
+ 'third_party/boringssl-with-bazel/mac-x86_64/crypto/cipher_extra/aes128gcmsiv-x86_64.S',
+ 'third_party/boringssl-with-bazel/mac-x86_64/crypto/cipher_extra/chacha20_poly1305_x86_64.S',
+ 'third_party/boringssl-with-bazel/mac-x86_64/crypto/fipsmodule/aesni-gcm-x86_64.S',
+ 'third_party/boringssl-with-bazel/mac-x86_64/crypto/fipsmodule/aesni-x86_64.S',
+ 'third_party/boringssl-with-bazel/mac-x86_64/crypto/fipsmodule/ghash-ssse3-x86_64.S',
+ 'third_party/boringssl-with-bazel/mac-x86_64/crypto/fipsmodule/ghash-x86_64.S',
+ 'third_party/boringssl-with-bazel/mac-x86_64/crypto/fipsmodule/md5-x86_64.S',
+ 'third_party/boringssl-with-bazel/mac-x86_64/crypto/fipsmodule/p256-x86_64-asm.S',
+ 'third_party/boringssl-with-bazel/mac-x86_64/crypto/fipsmodule/p256_beeu-x86_64-asm.S',
+ 'third_party/boringssl-with-bazel/mac-x86_64/crypto/fipsmodule/rdrand-x86_64.S',
+ 'third_party/boringssl-with-bazel/mac-x86_64/crypto/fipsmodule/rsaz-avx2.S',
+ 'third_party/boringssl-with-bazel/mac-x86_64/crypto/fipsmodule/sha1-x86_64.S',
+ 'third_party/boringssl-with-bazel/mac-x86_64/crypto/fipsmodule/sha256-x86_64.S',
+ 'third_party/boringssl-with-bazel/mac-x86_64/crypto/fipsmodule/sha512-x86_64.S',
+ 'third_party/boringssl-with-bazel/mac-x86_64/crypto/fipsmodule/vpaes-x86_64.S',
+ 'third_party/boringssl-with-bazel/mac-x86_64/crypto/fipsmodule/x86_64-mont.S',
+ 'third_party/boringssl-with-bazel/mac-x86_64/crypto/fipsmodule/x86_64-mont5.S',
+ 'third_party/boringssl-with-bazel/mac-x86_64/crypto/test/trampoline-x86_64.S',
+ ],
+ 'crypto_win_x86': [
+ 'third_party/boringssl-with-bazel/win-x86/crypto/chacha/chacha-x86.asm',
+ 'third_party/boringssl-with-bazel/win-x86/crypto/fipsmodule/aesni-x86.asm',
+ 'third_party/boringssl-with-bazel/win-x86/crypto/fipsmodule/bn-586.asm',
+ 'third_party/boringssl-with-bazel/win-x86/crypto/fipsmodule/co-586.asm',
+ 'third_party/boringssl-with-bazel/win-x86/crypto/fipsmodule/ghash-ssse3-x86.asm',
+ 'third_party/boringssl-with-bazel/win-x86/crypto/fipsmodule/ghash-x86.asm',
+ 'third_party/boringssl-with-bazel/win-x86/crypto/fipsmodule/md5-586.asm',
+ 'third_party/boringssl-with-bazel/win-x86/crypto/fipsmodule/sha1-586.asm',
+ 'third_party/boringssl-with-bazel/win-x86/crypto/fipsmodule/sha256-586.asm',
+ 'third_party/boringssl-with-bazel/win-x86/crypto/fipsmodule/sha512-586.asm',
+ 'third_party/boringssl-with-bazel/win-x86/crypto/fipsmodule/vpaes-x86.asm',
+ 'third_party/boringssl-with-bazel/win-x86/crypto/fipsmodule/x86-mont.asm',
+ 'third_party/boringssl-with-bazel/win-x86/crypto/test/trampoline-x86.asm',
+ ],
'crypto_win_x86_64': [
'third_party/boringssl-with-bazel/win-x86_64/crypto/chacha/chacha-x86_64.asm',
'third_party/boringssl-with-bazel/win-x86_64/crypto/cipher_extra/aes128gcmsiv-x86_64.asm',
'third_party/boringssl-with-bazel/win-x86_64/crypto/fipsmodule/x86_64-mont5.asm',
'third_party/boringssl-with-bazel/win-x86_64/crypto/test/trampoline-x86_64.asm',
],
- 'crypto_linux_aarch64': [
- 'third_party/boringssl-with-bazel/linux-aarch64/crypto/chacha/chacha-armv8.S',
- 'third_party/boringssl-with-bazel/linux-aarch64/crypto/fipsmodule/aesv8-armx64.S',
- 'third_party/boringssl-with-bazel/linux-aarch64/crypto/fipsmodule/armv8-mont.S',
- 'third_party/boringssl-with-bazel/linux-aarch64/crypto/fipsmodule/ghash-neon-armv8.S',
- 'third_party/boringssl-with-bazel/linux-aarch64/crypto/fipsmodule/ghashv8-armx64.S',
- 'third_party/boringssl-with-bazel/linux-aarch64/crypto/fipsmodule/sha1-armv8.S',
- 'third_party/boringssl-with-bazel/linux-aarch64/crypto/fipsmodule/sha256-armv8.S',
- 'third_party/boringssl-with-bazel/linux-aarch64/crypto/fipsmodule/sha512-armv8.S',
- 'third_party/boringssl-with-bazel/linux-aarch64/crypto/fipsmodule/vpaes-armv8.S',
- 'third_party/boringssl-with-bazel/linux-aarch64/crypto/test/trampoline-armv8.S',
- ],
- 'crypto_linux_arm': [
- 'third_party/boringssl-with-bazel/linux-arm/crypto/chacha/chacha-armv4.S',
- 'third_party/boringssl-with-bazel/linux-arm/crypto/fipsmodule/aesv8-armx32.S',
- 'third_party/boringssl-with-bazel/linux-arm/crypto/fipsmodule/armv4-mont.S',
- 'third_party/boringssl-with-bazel/linux-arm/crypto/fipsmodule/bsaes-armv7.S',
- 'third_party/boringssl-with-bazel/linux-arm/crypto/fipsmodule/ghash-armv4.S',
- 'third_party/boringssl-with-bazel/linux-arm/crypto/fipsmodule/ghashv8-armx32.S',
- 'third_party/boringssl-with-bazel/linux-arm/crypto/fipsmodule/sha1-armv4-large.S',
- 'third_party/boringssl-with-bazel/linux-arm/crypto/fipsmodule/sha256-armv4.S',
- 'third_party/boringssl-with-bazel/linux-arm/crypto/fipsmodule/sha512-armv4.S',
- 'third_party/boringssl-with-bazel/linux-arm/crypto/fipsmodule/vpaes-armv7.S',
- 'third_party/boringssl-with-bazel/linux-arm/crypto/test/trampoline-armv4.S',
- 'third_party/boringssl-with-bazel/src/crypto/curve25519/asm/x25519-asm-arm.S',
- 'third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305_arm_asm.S',
- ],
}
# AUTO-GENERATED FROM `$REPO_ROOT/templates/src/python/grpcio/grpc_version.py.template`!!!
-VERSION = '1.33.2'
+VERSION = '1.34.0'
# AUTO-GENERATED FROM `$REPO_ROOT/templates/src/python/grpcio_channelz/grpc_version.py.template`!!!
-VERSION = '1.33.2'
+VERSION = '1.34.0'
# AUTO-GENERATED FROM `$REPO_ROOT/templates/src/python/grpcio_health_checking/grpc_version.py.template`!!!
-VERSION = '1.33.2'
+VERSION = '1.34.0'
# AUTO-GENERATED FROM `$REPO_ROOT/templates/src/python/grpcio_reflection/grpc_version.py.template`!!!
-VERSION = '1.33.2'
+VERSION = '1.34.0'
# AUTO-GENERATED FROM `$REPO_ROOT/templates/src/python/grpcio_status/grpc_version.py.template`!!!
-VERSION = '1.33.2'
+VERSION = '1.34.0'
# AUTO-GENERATED FROM `$REPO_ROOT/templates/src/python/grpcio_testing/grpc_version.py.template`!!!
-VERSION = '1.33.2'
+VERSION = '1.34.0'
# AUTO-GENERATED FROM `$REPO_ROOT/templates/src/python/grpcio_tests/grpc_version.py.template`!!!
-VERSION = '1.33.2'
+VERSION = '1.34.0'
value (str): What to write to the original file.
"""
if six.PY3 and not isinstance(value, six.binary_type):
- value = bytes(value, 'ascii')
+ value = value.encode('ascii')
if self._saved_fd is None:
os.write(self._redirect_fd, value)
else:
import six
import subprocess
import sys
+import tempfile
import threading
import unittest
from grpc._cython import cygrpc
while True:
time.sleep(1)
"""
+ streams = tuple(tempfile.TemporaryFile() for _ in range(2))
self._server_process = subprocess.Popen(
[sys.executable, '-c', start_server_script],
- stdout=subprocess.PIPE,
- stderr=subprocess.PIPE)
+ stdout=streams[0],
+ stderr=streams[1])
timer = threading.Timer(_SUBPROCESS_TIMEOUT_S,
self._server_process.kill)
try:
timer.start()
- self._port = int(self._server_process.stdout.readline())
+ while True:
+ streams[0].seek(0)
+ s = streams[0].readline()
+ if not s:
+ continue
+ else:
+ self._port = int(s)
+ break
except ValueError:
raise Exception('Failed to get port from server')
finally:
def _verifyTestCase(self, test_case):
script = _CLIENT_FORK_SCRIPT_TEMPLATE % (test_case.name, self._port)
+ streams = tuple(tempfile.TemporaryFile() for _ in range(2))
process = subprocess.Popen([sys.executable, '-c', script],
- stdout=subprocess.PIPE,
- stderr=subprocess.PIPE)
+ stdout=streams[0],
+ stderr=streams[1])
timer = threading.Timer(_SUBPROCESS_TIMEOUT_S, process.kill)
- try:
- timer.start()
- try:
- out, err = process.communicate(timeout=_SUBPROCESS_TIMEOUT_S)
- except TypeError:
- # The timeout parameter was added in Python 3.3.
- out, err = process.communicate()
- except subprocess.TimeoutExpired:
- process.kill()
- raise RuntimeError('Process failed to terminate')
- finally:
- timer.cancel()
+ timer.start()
+ process.wait()
+ timer.cancel()
+ outputs = []
+ for stream in streams:
+ stream.seek(0)
+ outputs.append(stream.read())
self.assertEqual(
0, process.returncode,
- 'process failed with exit code %d (stdout: %s, stderr: %s)' %
- (process.returncode, out, err))
+ 'process failed with exit code %d (stdout: "%s", stderr: "%s")' %
+ (process.returncode, outputs[0], outputs[1]))
if __name__ == '__main__':
self._process.exitcode)
try:
exception = self._exceptions.get(block=False)
- raise ValueError('Child process failed: %s' % exception)
+ raise ValueError('Child process failed: "%s": "%s"' %
+ (repr(exception), exception))
except queue.Empty:
pass
def __init__(self, channel):
self.UnaryCall = channel.unary_unary(
'/grpc.testing.BenchmarkService/UnaryCall')
+ self.StreamingFromServer = channel.unary_stream(
+ '/grpc.testing.BenchmarkService/StreamingFromServer')
self.StreamingCall = channel.stream_stream(
'/grpc.testing.BenchmarkService/StreamingCall')
stream.stop()
self._pool.shutdown(wait=True)
self._stub = None
+
+
+class ServerStreamingSyncBenchmarkClient(BenchmarkClient):
+
+ def __init__(self, server, config, hist):
+ super(ServerStreamingSyncBenchmarkClient,
+ self).__init__(server, config, hist)
+ if config.outstanding_rpcs_per_channel == 1:
+ self._pool = None
+ else:
+ self._pool = futures.ThreadPoolExecutor(
+ max_workers=config.outstanding_rpcs_per_channel)
+ self._rpcs = []
+ self._sender = None
+
+ def send_request(self):
+ if self._pool is None:
+ self._sender = threading.Thread(
+ target=self._one_stream_streaming_rpc, daemon=True)
+ self._sender.start()
+ else:
+ self._pool.submit(self._one_stream_streaming_rpc)
+
+ def _one_stream_streaming_rpc(self):
+ response_stream = self._stub.StreamingFromServer(
+ self._request, _TIMEOUT)
+ self._rpcs.append(response_stream)
+ start_time = time.time()
+ for _ in response_stream:
+ self._handle_response(self, time.time() - start_time)
+ start_time = time.time()
+
+ def stop(self):
+ for call in self._rpcs:
+ call.cancel()
+ if self._sender is not None:
+ self._sender.join()
+ if self._pool is not None:
+ self._pool.shutdown(wait=False)
+ self._stub = None
class ClosedLoopClientRunner(ClientRunner):
- def __init__(self, client, request_count):
+ def __init__(self, client, request_count, no_ping_pong):
super(ClosedLoopClientRunner, self).__init__(client)
self._is_running = False
self._request_count = request_count
- # Send a new request on each response for closed loop
- self._client.add_response_callback(self._send_request)
+ # For server-streaming RPC, don't spawn new RPC after each responses.
+ # This yield at most ~17% for single RPC scenarios.
+ if not no_ping_pong:
+ # Send a new request on each response for closed loop
+ self._client.add_response_callback(self._send_request)
def start(self):
self._is_running = True
self._client.stop()
self._client = None
- def _send_request(self, client, response_time):
+ def _send_request(self, client, unused_response_time):
if self._is_running:
client.send_request()
"""The entry point for the qps worker."""
import argparse
+import logging
import time
import grpc
from tests.unit import test_common
-def run_worker_server(port):
+def run_worker_server(driver_port, server_port):
server = test_common.test_server()
- servicer = worker_server.WorkerServer()
+ servicer = worker_server.WorkerServer(server_port)
worker_service_pb2_grpc.add_WorkerServiceServicer_to_server(
servicer, server)
- server.add_insecure_port('[::]:{}'.format(port))
+ server.add_insecure_port('[::]:{}'.format(driver_port))
server.start()
servicer.wait_for_quit()
server.stop(0)
if __name__ == '__main__':
+ logging.basicConfig(level=logging.DEBUG)
parser = argparse.ArgumentParser(
description='gRPC Python performance testing worker')
- parser.add_argument('--driver_port',
- type=int,
- dest='port',
- help='The port the worker should listen on')
+ parser.add_argument(
+ '--driver_port',
+ type=int,
+ dest='driver_port',
+ help='The port for the worker to expose for driver communication')
+ parser.add_argument(
+ '--server_port',
+ type=int,
+ default=None,
+ dest='server_port',
+ help='The port for the server if not specified by server config message'
+ )
args = parser.parse_args()
- run_worker_server(args.port)
+ run_worker_server(args.driver_port, args.server_port)
class WorkerServer(worker_service_pb2_grpc.WorkerServiceServicer):
"""Python Worker Server implementation."""
- def __init__(self):
+ def __init__(self, server_port=None):
self._quit_event = threading.Event()
+ self._server_port = server_port
def RunServer(self, request_iterator, context):
config = next(request_iterator).setup #pylint: disable=stop-iteration-return
raise Exception('Unsupported server type {}'.format(
config.server_type))
+ if self._server_port is not None and config.port == 0:
+ server_port = self._server_port
+ else:
+ server_port = config.port
+
if config.HasField('security_params'): # Use SSL
server_creds = grpc.ssl_server_credentials(
((resources.private_key(), resources.certificate_chain()),))
- port = server.add_secure_port('[::]:{}'.format(config.port),
+ port = server.add_secure_port('[::]:{}'.format(server_port),
server_creds)
else:
- port = server.add_insecure_port('[::]:{}'.format(config.port))
+ port = server.add_insecure_port('[::]:{}'.format(server_port))
return (server, port)
return control_pb2.ClientStatus(stats=stats)
def _create_client_runner(self, server, config, qps_data):
+ no_ping_pong = False
if config.client_type == control_pb2.SYNC_CLIENT:
if config.rpc_type == control_pb2.UNARY:
client = benchmark_client.UnarySyncBenchmarkClient(
elif config.rpc_type == control_pb2.STREAMING:
client = benchmark_client.StreamingSyncBenchmarkClient(
server, config, qps_data)
+ elif config.rpc_type == control_pb2.STREAMING_FROM_SERVER:
+ no_ping_pong = True
+ client = benchmark_client.ServerStreamingSyncBenchmarkClient(
+ server, config, qps_data)
elif config.client_type == control_pb2.ASYNC_CLIENT:
if config.rpc_type == control_pb2.UNARY:
client = benchmark_client.UnaryAsyncBenchmarkClient(
load_factor = float(config.client_channels)
if config.load_params.WhichOneof('load') == 'closed_loop':
runner = client_runner.ClosedLoopClientRunner(
- client, config.outstanding_rpcs_per_channel)
+ client, config.outstanding_rpcs_per_channel, no_ping_pong)
else: # Open loop Poisson
alpha = config.load_params.poisson.offered_load / load_factor
srcs = ["_dynamic_stubs_test.py"],
data = [
"data/foo/bar.proto",
+ "data/foo/bar_with_wkt.proto",
],
imports = ["../../"],
main = "_dynamic_stubs_test.py",
import sys
import unittest
+_DATA_DIR = os.path.join("tests", "unit", "data")
+
@contextlib.contextmanager
def _grpc_tools_unimportable():
return _wrapped
+def _python3_check(fn):
+
+ @functools.wraps(fn)
+ def _wrapped():
+ if sys.version_info[0] == 3:
+ fn()
+ else:
+ _assert_unimplemented("Python 3")
+
+ return _wrapped
+
+
def _run_in_subprocess(test_case):
sys.path.insert(
0, os.path.join(os.path.realpath(os.path.dirname(__file__)), ".."))
@_collect_errors
+@_python3_check
def _test_sunny_day():
- if sys.version_info[0] == 3:
- import grpc
- protos, services = grpc.protos_and_services(
- os.path.join("tests", "unit", "data", "foo", "bar.proto"))
- assert protos.BarMessage is not None
- assert services.BarStub is not None
- else:
- _assert_unimplemented("Python 3")
+ import grpc
+ protos, services = grpc.protos_and_services(
+ os.path.join(_DATA_DIR, "foo", "bar.proto"))
+ assert protos.BarMessage is not None
+ assert services.BarStub is not None
@_collect_errors
+@_python3_check
+def _test_well_known_types():
+ import grpc
+ protos, services = grpc.protos_and_services(
+ os.path.join(_DATA_DIR, "foo", "bar_with_wkt.proto"))
+ assert protos.BarMessage is not None
+ assert services.BarStub is not None
+
+
+@_collect_errors
+@_python3_check
def _test_grpc_tools_unimportable():
with _grpc_tools_unimportable():
- if sys.version_info[0] == 3:
- _assert_unimplemented("grpcio-tools")
- else:
- _assert_unimplemented("Python 3")
+ _assert_unimplemented("grpcio-tools")
# NOTE(rbellevi): multiprocessing.Process fails to pickle function objects
def test_sunny_day(self):
_run_in_subprocess(_test_sunny_day)
+ def test_well_known_types(self):
+ _run_in_subprocess(_test_well_known_types)
+
def test_grpc_tools_unimportable(self):
_run_in_subprocess(_test_grpc_tools_unimportable)
--- /dev/null
+// Copyright 2020 The gRPC authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+syntax = "proto3";
+
+package tests.unit.data.foo.bar;
+
+import "google/protobuf/any.proto";
+
+message BarMessage {
+ string a = 1;
+ google.protobuf.Any b = 2;
+};
+
+service Bar {
+ rpc GetBar(BarMessage) returns (BarMessage);
+};
def __init__(self, channel: aio.Channel):
self.UnaryCall = channel.unary_unary(
'/grpc.testing.BenchmarkService/UnaryCall')
+ self.StreamingFromServer = channel.unary_stream(
+ '/grpc.testing.BenchmarkService/StreamingFromServer')
self.StreamingCall = channel.stream_stream(
'/grpc.testing.BenchmarkService/StreamingCall')
self._running = False
await self._stopped.wait()
await super().stop()
+
+
+class ServerStreamingAsyncBenchmarkClient(BenchmarkClient):
+
+ def __init__(self, address: str, config: control_pb2.ClientConfig,
+ hist: histogram.Histogram):
+ super().__init__(address, config, hist)
+ self._running = None
+ self._stopped = asyncio.Event()
+
+ async def _one_server_streaming_call(self):
+ call = self._stub.StreamingFromServer(self._request)
+ while self._running:
+ start_time = time.time()
+ await call.read()
+ self._record_query_time(time.time() - start_time)
+
+ async def run(self):
+ await super().run()
+ self._running = True
+ senders = (
+ self._one_server_streaming_call() for _ in range(self._concurrency))
+ await asyncio.gather(*senders)
+ self._stopped.set()
+
+ async def stop(self):
+ self._running = False
+ await self._stopped.wait()
+ await super().stop()
client_type = benchmark_client.UnaryAsyncBenchmarkClient
elif config.rpc_type == control_pb2.STREAMING:
client_type = benchmark_client.StreamingAsyncBenchmarkClient
+ elif config.rpc_type == control_pb2.STREAMING_FROM_SERVER:
+ client_type = benchmark_client.ServerStreamingAsyncBenchmarkClient
else:
raise NotImplementedError(
f'Unsupported rpc_type [{config.rpc_type}]')
# See the License for the specific language governing permissions and
# limitations under the License.
-from __future__ import print_function
import os
import sys
import glob
grpc_config = ENV['GRPC_CONFIG'] || 'opt'
-ENV['MACOSX_DEPLOYMENT_TARGET'] = '10.7'
+ENV['MACOSX_DEPLOYMENT_TARGET'] = '10.10'
if ENV['AR'].nil? || ENV['AR'].size == 0
ENV['AR'] = RbConfig::CONFIG['AR']
grpc_alts_server_credentials_create_type grpc_alts_server_credentials_create_import;
grpc_local_credentials_create_type grpc_local_credentials_create_import;
grpc_local_server_credentials_create_type grpc_local_server_credentials_create_import;
+grpc_tls_identity_pairs_create_type grpc_tls_identity_pairs_create_import;
+grpc_tls_identity_pairs_add_pair_type grpc_tls_identity_pairs_add_pair_import;
+grpc_tls_identity_pairs_destroy_type grpc_tls_identity_pairs_destroy_import;
+grpc_tls_certificate_provider_static_data_create_type grpc_tls_certificate_provider_static_data_create_import;
+grpc_tls_certificate_provider_release_type grpc_tls_certificate_provider_release_import;
grpc_tls_credentials_options_create_type grpc_tls_credentials_options_create_import;
grpc_tls_credentials_options_set_cert_request_type_type grpc_tls_credentials_options_set_cert_request_type_import;
grpc_tls_credentials_options_set_server_verification_option_type grpc_tls_credentials_options_set_server_verification_option_import;
-grpc_tls_credentials_options_set_key_materials_config_type grpc_tls_credentials_options_set_key_materials_config_import;
-grpc_tls_credentials_options_set_credential_reload_config_type grpc_tls_credentials_options_set_credential_reload_config_import;
+grpc_tls_credentials_options_set_certificate_provider_type grpc_tls_credentials_options_set_certificate_provider_import;
+grpc_tls_credentials_options_watch_root_certs_type grpc_tls_credentials_options_watch_root_certs_import;
+grpc_tls_credentials_options_set_root_cert_name_type grpc_tls_credentials_options_set_root_cert_name_import;
+grpc_tls_credentials_options_watch_identity_key_cert_pairs_type grpc_tls_credentials_options_watch_identity_key_cert_pairs_import;
+grpc_tls_credentials_options_set_identity_cert_name_type grpc_tls_credentials_options_set_identity_cert_name_import;
grpc_tls_credentials_options_set_server_authorization_check_config_type grpc_tls_credentials_options_set_server_authorization_check_config_import;
-grpc_tls_key_materials_config_create_type grpc_tls_key_materials_config_create_import;
-grpc_tls_key_materials_config_set_key_materials_type grpc_tls_key_materials_config_set_key_materials_import;
-grpc_tls_key_materials_config_set_version_type grpc_tls_key_materials_config_set_version_import;
-grpc_tls_key_materials_config_get_version_type grpc_tls_key_materials_config_get_version_import;
-grpc_tls_credential_reload_config_create_type grpc_tls_credential_reload_config_create_import;
grpc_tls_server_authorization_check_config_create_type grpc_tls_server_authorization_check_config_create_import;
+grpc_tls_server_authorization_check_config_release_type grpc_tls_server_authorization_check_config_release_import;
grpc_xds_credentials_create_type grpc_xds_credentials_create_import;
grpc_raw_byte_buffer_create_type grpc_raw_byte_buffer_create_import;
grpc_raw_compressed_byte_buffer_create_type grpc_raw_compressed_byte_buffer_create_import;
grpc_alts_server_credentials_create_import = (grpc_alts_server_credentials_create_type) GetProcAddress(library, "grpc_alts_server_credentials_create");
grpc_local_credentials_create_import = (grpc_local_credentials_create_type) GetProcAddress(library, "grpc_local_credentials_create");
grpc_local_server_credentials_create_import = (grpc_local_server_credentials_create_type) GetProcAddress(library, "grpc_local_server_credentials_create");
+ grpc_tls_identity_pairs_create_import = (grpc_tls_identity_pairs_create_type) GetProcAddress(library, "grpc_tls_identity_pairs_create");
+ grpc_tls_identity_pairs_add_pair_import = (grpc_tls_identity_pairs_add_pair_type) GetProcAddress(library, "grpc_tls_identity_pairs_add_pair");
+ grpc_tls_identity_pairs_destroy_import = (grpc_tls_identity_pairs_destroy_type) GetProcAddress(library, "grpc_tls_identity_pairs_destroy");
+ grpc_tls_certificate_provider_static_data_create_import = (grpc_tls_certificate_provider_static_data_create_type) GetProcAddress(library, "grpc_tls_certificate_provider_static_data_create");
+ grpc_tls_certificate_provider_release_import = (grpc_tls_certificate_provider_release_type) GetProcAddress(library, "grpc_tls_certificate_provider_release");
grpc_tls_credentials_options_create_import = (grpc_tls_credentials_options_create_type) GetProcAddress(library, "grpc_tls_credentials_options_create");
grpc_tls_credentials_options_set_cert_request_type_import = (grpc_tls_credentials_options_set_cert_request_type_type) GetProcAddress(library, "grpc_tls_credentials_options_set_cert_request_type");
grpc_tls_credentials_options_set_server_verification_option_import = (grpc_tls_credentials_options_set_server_verification_option_type) GetProcAddress(library, "grpc_tls_credentials_options_set_server_verification_option");
- grpc_tls_credentials_options_set_key_materials_config_import = (grpc_tls_credentials_options_set_key_materials_config_type) GetProcAddress(library, "grpc_tls_credentials_options_set_key_materials_config");
- grpc_tls_credentials_options_set_credential_reload_config_import = (grpc_tls_credentials_options_set_credential_reload_config_type) GetProcAddress(library, "grpc_tls_credentials_options_set_credential_reload_config");
+ grpc_tls_credentials_options_set_certificate_provider_import = (grpc_tls_credentials_options_set_certificate_provider_type) GetProcAddress(library, "grpc_tls_credentials_options_set_certificate_provider");
+ grpc_tls_credentials_options_watch_root_certs_import = (grpc_tls_credentials_options_watch_root_certs_type) GetProcAddress(library, "grpc_tls_credentials_options_watch_root_certs");
+ grpc_tls_credentials_options_set_root_cert_name_import = (grpc_tls_credentials_options_set_root_cert_name_type) GetProcAddress(library, "grpc_tls_credentials_options_set_root_cert_name");
+ grpc_tls_credentials_options_watch_identity_key_cert_pairs_import = (grpc_tls_credentials_options_watch_identity_key_cert_pairs_type) GetProcAddress(library, "grpc_tls_credentials_options_watch_identity_key_cert_pairs");
+ grpc_tls_credentials_options_set_identity_cert_name_import = (grpc_tls_credentials_options_set_identity_cert_name_type) GetProcAddress(library, "grpc_tls_credentials_options_set_identity_cert_name");
grpc_tls_credentials_options_set_server_authorization_check_config_import = (grpc_tls_credentials_options_set_server_authorization_check_config_type) GetProcAddress(library, "grpc_tls_credentials_options_set_server_authorization_check_config");
- grpc_tls_key_materials_config_create_import = (grpc_tls_key_materials_config_create_type) GetProcAddress(library, "grpc_tls_key_materials_config_create");
- grpc_tls_key_materials_config_set_key_materials_import = (grpc_tls_key_materials_config_set_key_materials_type) GetProcAddress(library, "grpc_tls_key_materials_config_set_key_materials");
- grpc_tls_key_materials_config_set_version_import = (grpc_tls_key_materials_config_set_version_type) GetProcAddress(library, "grpc_tls_key_materials_config_set_version");
- grpc_tls_key_materials_config_get_version_import = (grpc_tls_key_materials_config_get_version_type) GetProcAddress(library, "grpc_tls_key_materials_config_get_version");
- grpc_tls_credential_reload_config_create_import = (grpc_tls_credential_reload_config_create_type) GetProcAddress(library, "grpc_tls_credential_reload_config_create");
grpc_tls_server_authorization_check_config_create_import = (grpc_tls_server_authorization_check_config_create_type) GetProcAddress(library, "grpc_tls_server_authorization_check_config_create");
+ grpc_tls_server_authorization_check_config_release_import = (grpc_tls_server_authorization_check_config_release_type) GetProcAddress(library, "grpc_tls_server_authorization_check_config_release");
grpc_xds_credentials_create_import = (grpc_xds_credentials_create_type) GetProcAddress(library, "grpc_xds_credentials_create");
grpc_raw_byte_buffer_create_import = (grpc_raw_byte_buffer_create_type) GetProcAddress(library, "grpc_raw_byte_buffer_create");
grpc_raw_compressed_byte_buffer_create_import = (grpc_raw_compressed_byte_buffer_create_type) GetProcAddress(library, "grpc_raw_compressed_byte_buffer_create");
typedef grpc_server_credentials*(*grpc_local_server_credentials_create_type)(grpc_local_connect_type type);
extern grpc_local_server_credentials_create_type grpc_local_server_credentials_create_import;
#define grpc_local_server_credentials_create grpc_local_server_credentials_create_import
+typedef grpc_tls_identity_pairs*(*grpc_tls_identity_pairs_create_type)();
+extern grpc_tls_identity_pairs_create_type grpc_tls_identity_pairs_create_import;
+#define grpc_tls_identity_pairs_create grpc_tls_identity_pairs_create_import
+typedef void(*grpc_tls_identity_pairs_add_pair_type)(grpc_tls_identity_pairs* pairs, const char* private_key, const char* cert_chain);
+extern grpc_tls_identity_pairs_add_pair_type grpc_tls_identity_pairs_add_pair_import;
+#define grpc_tls_identity_pairs_add_pair grpc_tls_identity_pairs_add_pair_import
+typedef void(*grpc_tls_identity_pairs_destroy_type)(grpc_tls_identity_pairs* pairs);
+extern grpc_tls_identity_pairs_destroy_type grpc_tls_identity_pairs_destroy_import;
+#define grpc_tls_identity_pairs_destroy grpc_tls_identity_pairs_destroy_import
+typedef grpc_tls_certificate_provider*(*grpc_tls_certificate_provider_static_data_create_type)(const char* root_certificate, grpc_tls_identity_pairs* pem_key_cert_pairs);
+extern grpc_tls_certificate_provider_static_data_create_type grpc_tls_certificate_provider_static_data_create_import;
+#define grpc_tls_certificate_provider_static_data_create grpc_tls_certificate_provider_static_data_create_import
+typedef void(*grpc_tls_certificate_provider_release_type)(grpc_tls_certificate_provider* provider);
+extern grpc_tls_certificate_provider_release_type grpc_tls_certificate_provider_release_import;
+#define grpc_tls_certificate_provider_release grpc_tls_certificate_provider_release_import
typedef grpc_tls_credentials_options*(*grpc_tls_credentials_options_create_type)(void);
extern grpc_tls_credentials_options_create_type grpc_tls_credentials_options_create_import;
#define grpc_tls_credentials_options_create grpc_tls_credentials_options_create_import
-typedef int(*grpc_tls_credentials_options_set_cert_request_type_type)(grpc_tls_credentials_options* options, grpc_ssl_client_certificate_request_type type);
+typedef void(*grpc_tls_credentials_options_set_cert_request_type_type)(grpc_tls_credentials_options* options, grpc_ssl_client_certificate_request_type type);
extern grpc_tls_credentials_options_set_cert_request_type_type grpc_tls_credentials_options_set_cert_request_type_import;
#define grpc_tls_credentials_options_set_cert_request_type grpc_tls_credentials_options_set_cert_request_type_import
-typedef int(*grpc_tls_credentials_options_set_server_verification_option_type)(grpc_tls_credentials_options* options, grpc_tls_server_verification_option server_verification_option);
+typedef void(*grpc_tls_credentials_options_set_server_verification_option_type)(grpc_tls_credentials_options* options, grpc_tls_server_verification_option server_verification_option);
extern grpc_tls_credentials_options_set_server_verification_option_type grpc_tls_credentials_options_set_server_verification_option_import;
#define grpc_tls_credentials_options_set_server_verification_option grpc_tls_credentials_options_set_server_verification_option_import
-typedef int(*grpc_tls_credentials_options_set_key_materials_config_type)(grpc_tls_credentials_options* options, grpc_tls_key_materials_config* config);
-extern grpc_tls_credentials_options_set_key_materials_config_type grpc_tls_credentials_options_set_key_materials_config_import;
-#define grpc_tls_credentials_options_set_key_materials_config grpc_tls_credentials_options_set_key_materials_config_import
-typedef int(*grpc_tls_credentials_options_set_credential_reload_config_type)(grpc_tls_credentials_options* options, grpc_tls_credential_reload_config* config);
-extern grpc_tls_credentials_options_set_credential_reload_config_type grpc_tls_credentials_options_set_credential_reload_config_import;
-#define grpc_tls_credentials_options_set_credential_reload_config grpc_tls_credentials_options_set_credential_reload_config_import
-typedef int(*grpc_tls_credentials_options_set_server_authorization_check_config_type)(grpc_tls_credentials_options* options, grpc_tls_server_authorization_check_config* config);
+typedef void(*grpc_tls_credentials_options_set_certificate_provider_type)(grpc_tls_credentials_options* options, grpc_tls_certificate_provider* provider);
+extern grpc_tls_credentials_options_set_certificate_provider_type grpc_tls_credentials_options_set_certificate_provider_import;
+#define grpc_tls_credentials_options_set_certificate_provider grpc_tls_credentials_options_set_certificate_provider_import
+typedef void(*grpc_tls_credentials_options_watch_root_certs_type)(grpc_tls_credentials_options* options);
+extern grpc_tls_credentials_options_watch_root_certs_type grpc_tls_credentials_options_watch_root_certs_import;
+#define grpc_tls_credentials_options_watch_root_certs grpc_tls_credentials_options_watch_root_certs_import
+typedef void(*grpc_tls_credentials_options_set_root_cert_name_type)(grpc_tls_credentials_options* options, const char* root_cert_name);
+extern grpc_tls_credentials_options_set_root_cert_name_type grpc_tls_credentials_options_set_root_cert_name_import;
+#define grpc_tls_credentials_options_set_root_cert_name grpc_tls_credentials_options_set_root_cert_name_import
+typedef void(*grpc_tls_credentials_options_watch_identity_key_cert_pairs_type)(grpc_tls_credentials_options* options);
+extern grpc_tls_credentials_options_watch_identity_key_cert_pairs_type grpc_tls_credentials_options_watch_identity_key_cert_pairs_import;
+#define grpc_tls_credentials_options_watch_identity_key_cert_pairs grpc_tls_credentials_options_watch_identity_key_cert_pairs_import
+typedef void(*grpc_tls_credentials_options_set_identity_cert_name_type)(grpc_tls_credentials_options* options, const char* identity_cert_name);
+extern grpc_tls_credentials_options_set_identity_cert_name_type grpc_tls_credentials_options_set_identity_cert_name_import;
+#define grpc_tls_credentials_options_set_identity_cert_name grpc_tls_credentials_options_set_identity_cert_name_import
+typedef void(*grpc_tls_credentials_options_set_server_authorization_check_config_type)(grpc_tls_credentials_options* options, grpc_tls_server_authorization_check_config* config);
extern grpc_tls_credentials_options_set_server_authorization_check_config_type grpc_tls_credentials_options_set_server_authorization_check_config_import;
#define grpc_tls_credentials_options_set_server_authorization_check_config grpc_tls_credentials_options_set_server_authorization_check_config_import
-typedef grpc_tls_key_materials_config*(*grpc_tls_key_materials_config_create_type)(void);
-extern grpc_tls_key_materials_config_create_type grpc_tls_key_materials_config_create_import;
-#define grpc_tls_key_materials_config_create grpc_tls_key_materials_config_create_import
-typedef int(*grpc_tls_key_materials_config_set_key_materials_type)(grpc_tls_key_materials_config* config, const char* pem_root_certs, const grpc_ssl_pem_key_cert_pair** pem_key_cert_pairs, size_t num_key_cert_pairs);
-extern grpc_tls_key_materials_config_set_key_materials_type grpc_tls_key_materials_config_set_key_materials_import;
-#define grpc_tls_key_materials_config_set_key_materials grpc_tls_key_materials_config_set_key_materials_import
-typedef int(*grpc_tls_key_materials_config_set_version_type)(grpc_tls_key_materials_config* config, int version);
-extern grpc_tls_key_materials_config_set_version_type grpc_tls_key_materials_config_set_version_import;
-#define grpc_tls_key_materials_config_set_version grpc_tls_key_materials_config_set_version_import
-typedef int(*grpc_tls_key_materials_config_get_version_type)(grpc_tls_key_materials_config* config);
-extern grpc_tls_key_materials_config_get_version_type grpc_tls_key_materials_config_get_version_import;
-#define grpc_tls_key_materials_config_get_version grpc_tls_key_materials_config_get_version_import
-typedef grpc_tls_credential_reload_config*(*grpc_tls_credential_reload_config_create_type)(const void* config_user_data, int (*schedule)(void* config_user_data, grpc_tls_credential_reload_arg* arg), void (*cancel)(void* config_user_data, grpc_tls_credential_reload_arg* arg), void (*destruct)(void* config_user_data));
-extern grpc_tls_credential_reload_config_create_type grpc_tls_credential_reload_config_create_import;
-#define grpc_tls_credential_reload_config_create grpc_tls_credential_reload_config_create_import
typedef grpc_tls_server_authorization_check_config*(*grpc_tls_server_authorization_check_config_create_type)(const void* config_user_data, int (*schedule)(void* config_user_data, grpc_tls_server_authorization_check_arg* arg), void (*cancel)(void* config_user_data, grpc_tls_server_authorization_check_arg* arg), void (*destruct)(void* config_user_data));
extern grpc_tls_server_authorization_check_config_create_type grpc_tls_server_authorization_check_config_create_import;
#define grpc_tls_server_authorization_check_config_create grpc_tls_server_authorization_check_config_create_import
+typedef void(*grpc_tls_server_authorization_check_config_release_type)(grpc_tls_server_authorization_check_config* config);
+extern grpc_tls_server_authorization_check_config_release_type grpc_tls_server_authorization_check_config_release_import;
+#define grpc_tls_server_authorization_check_config_release grpc_tls_server_authorization_check_config_release_import
typedef grpc_channel_credentials*(*grpc_xds_credentials_create_type)(grpc_channel_credentials* fallback_credentials);
extern grpc_xds_credentials_create_type grpc_xds_credentials_create_import;
#define grpc_xds_credentials_create grpc_xds_credentials_create_import
# GRPC contains the General RPC module.
module GRPC
- VERSION = '1.33.2'
+ VERSION = '1.34.0'
end
module GRPC
module Tools
- VERSION = '1.33.2'
+ VERSION = '1.34.0'
end
end
# TODO: This should ideally be in upb submodule to avoid hardcoding this here.
-from __future__ import print_function
import re
import os
import sys
"third_party/upb/upb/port.c",
"third_party/upb/upb/table.c",
"third_party/upb/upb/upb.c",
+ "third_party/upb/upb/def.c",
+ "third_party/upb/upb/reflection.c",
+ "third_party/upb/upb/text_encode.c",
+ "src/core/ext/upb-generated/google/protobuf/any.upb.c",
+ "src/core/ext/upb-generated/google/protobuf/descriptor.upb.c",
+ "src/core/ext/upb-generated/google/protobuf/duration.upb.c",
+ "src/core/ext/upb-generated/google/protobuf/empty.upb.c",
+ "src/core/ext/upb-generated/google/protobuf/struct.upb.c",
+ "src/core/ext/upb-generated/google/protobuf/timestamp.upb.c",
+ "src/core/ext/upb-generated/google/protobuf/wrappers.upb.c",
+ "src/core/ext/upbdefs-generated/google/protobuf/any.upbdefs.c",
+ "src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.c",
+ "src/core/ext/upbdefs-generated/google/protobuf/duration.upbdefs.c",
+ "src/core/ext/upbdefs-generated/google/protobuf/empty.upbdefs.c",
+ "src/core/ext/upbdefs-generated/google/protobuf/struct.upbdefs.c",
+ "src/core/ext/upbdefs-generated/google/protobuf/timestamp.upbdefs.c",
+ "src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.c",
],
'headers': [
"third_party/upb/upb/decode.h",
"third_party/upb/upb/table.int.h",
"third_party/upb/upb/upb.h",
"third_party/upb/upb/upb.hpp",
+ "third_party/upb/upb/def.h",
+ "third_party/upb/upb/def.hpp",
+ "third_party/upb/upb/reflection.h",
+ "third_party/upb/upb/text_encode.h",
+ "src/core/ext/upb-generated/google/protobuf/any.upb.h",
+ "src/core/ext/upb-generated/google/protobuf/descriptor.upb.h",
+ "src/core/ext/upb-generated/google/protobuf/duration.upb.h",
+ "src/core/ext/upb-generated/google/protobuf/empty.upb.h",
+ "src/core/ext/upb-generated/google/protobuf/struct.upb.h",
+ "src/core/ext/upb-generated/google/protobuf/timestamp.upb.h",
+ "src/core/ext/upb-generated/google/protobuf/wrappers.upb.h",
+ "src/core/ext/upbdefs-generated/google/protobuf/any.upbdefs.h",
+ "src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.h",
+ "src/core/ext/upbdefs-generated/google/protobuf/duration.upbdefs.h",
+ "src/core/ext/upbdefs-generated/google/protobuf/empty.upbdefs.h",
+ "src/core/ext/upbdefs-generated/google/protobuf/struct.upbdefs.h",
+ "src/core/ext/upbdefs-generated/google/protobuf/timestamp.upbdefs.h",
+ "src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.h",
],
'secure': False,
}]
except:
pass
-print yaml.dump(out)
+print(yaml.dump(out))
deps.append(get_absl_dep(d))
else:
deps.append(d)
- if (target_dict.build == 'test' or target_dict.build == 'private') and target_dict.language == 'c++':
- deps.append("${_gRPC_GFLAGS_LIBRARIES}")
return deps
def get_platforms_condition_begin(platforms):
set_property(CACHE gRPC_PROTOBUF_PACKAGE_TYPE PROPERTY STRINGS "CONFIG" "MODULE")
if(gRPC_BUILD_TESTS)
- set(gRPC_GFLAGS_PROVIDER "module" CACHE STRING "Provider of gflags library")
- set_property(CACHE gRPC_GFLAGS_PROVIDER PROPERTY STRINGS "module" "package")
-
set(gRPC_BENCHMARK_PROVIDER "module" CACHE STRING "Provider of benchmark library")
set_property(CACHE gRPC_BENCHMARK_PROVIDER PROPERTY STRINGS "module" "package")
else()
- set(gRPC_GFLAGS_PROVIDER "none")
set(gRPC_BENCHMARK_PROVIDER "none")
endif()
if(gRPC_BACKWARDS_COMPATIBILITY_MODE)
add_definitions(-DGPR_BACKWARDS_COMPATIBILITY_MODE)
if(_gRPC_PLATFORM_MAC)
- # some C++11 constructs not supported before OS X 10.9
- set(CMAKE_OSX_DEPLOYMENT_TARGET 10.9)
+ # some C++11 constructs not supported before OS X 10.10
+ set(CMAKE_OSX_DEPLOYMENT_TARGET 10.10)
endif()
endif()
include(cmake/address_sorting.cmake)
include(cmake/benchmark.cmake)
include(cmake/cares.cmake)
- include(cmake/gflags.cmake)
include(cmake/protobuf.cmake)
include(cmake/re2.cmake)
include(cmake/ssl.cmake)
# Configurations (as defined under "configs" section in build_handwritten.yaml)
- % for name, args in configs.iteritems():
+ % for name, args in configs.items():
VALID_CONFIG_${name} = 1
% if args.get('compile_the_world', False):
REQUIRE_CUSTOM_LIBRARIES_${name} = 1
LIB${lib.name.upper()}_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(LIB${lib.name.upper()}_SRC))))
% if lib.get('defaults', None):
- % for name, value in defaults.get(lib.defaults).iteritems():
+ % for name, value in defaults.get(lib.defaults).items():
$(LIB${lib.name.upper()}_OBJS): ${name} += ${value}
% endfor
% endif
% endif
% if tgt.get('defaults', None):
- % for name, value in defaults.get(tgt.defaults).iteritems():
+ % for name, value in defaults.get(tgt.defaults).items():
$(${tgt.name.upper()}_OBJS): ${name} += ${value}
% endfor
% endif
"homepage": "https://grpc.io",
"license": "Apache-2.0",
"require": {
- "php": ">=5.5.0"
+ "php": ">=7.0.0"
},
"require-dev": {
"google/auth": "^v1.3.0"
"/I"+configure_module_dirname+" "+
"/I"+configure_module_dirname+"\\include "+
"/I"+configure_module_dirname+"\\src\\core\\ext\\upb-generated "+
+ "/I"+configure_module_dirname+"\\src\\core\\ext\\upbdefs-generated "+
"/I"+configure_module_dirname+"\\src\\php\\ext\\grpc "+
"/I"+configure_module_dirname+"\\third_party\\abseil-cpp "+
"/I"+configure_module_dirname+"\\third_party\\address_sorting\\include "+
:tag => "v#{version}",
}
- s.ios.deployment_target = '7.0'
- s.osx.deployment_target = '10.9'
+ s.ios.deployment_target = '9.0'
+ s.osx.deployment_target = '10.10'
s.tvos.deployment_target = '10.0'
s.requires_arc = false
ss.header_mappings_dir = '.'
ss.dependency "#{s.name}/Interface", version
ss.dependency 'gRPC-Core', version
- abseil_version = '1.20200225.0'
+ abseil_version = '1.20200923.2'
% for abseil_spec in grpcpp_abseil_specs:
ss.dependency '${abseil_spec}', abseil_version
% endfor
# which was released in Cocoapods v1.2.0.
s.cocoapods_version = '>= 1.2.0'
- s.ios.deployment_target = '7.0'
- s.osx.deployment_target = '10.9'
+ s.ios.deployment_target = '9.0'
+ s.osx.deployment_target = '10.10'
s.tvos.deployment_target = '10.0'
s.watchos.deployment_target = '4.0'
s.requires_arc = false
name = 'grpc'
- abseil_version = '1.20200225.0'
+ abseil_version = '1.20200923.2'
# When creating a dynamic framework, name it grpc.framework instead of gRPC-Core.framework.
# This lets users write their includes like `#include <grpc/grpc.h>` as opposed to `#include
ss.header_mappings_dir = '.'
ss.libraries = 'z'
ss.dependency "#{s.name}/Interface", version
- ss.dependency 'BoringSSL-GRPC', '0.0.13'
+ ss.dependency 'BoringSSL-GRPC', '0.0.14'
% for abseil_spec in grpc_abseil_specs:
ss.dependency '${abseil_spec}', abseil_version
% endfor
:tag => "v#{version}",
}
- s.ios.deployment_target = '7.0'
- s.osx.deployment_target = '10.9'
+ s.ios.deployment_target = '9.0'
+ s.osx.deployment_target = '10.10'
s.tvos.deployment_target = '10.0'
s.watchos.deployment_target = '4.0'
:tag => "v#{version}",
}
- s.ios.deployment_target = '7.0'
- s.osx.deployment_target = '10.9'
+ s.ios.deployment_target = '9.0'
+ s.osx.deployment_target = '10.10'
s.tvos.deployment_target = '10.0'
s.watchos.deployment_target = '4.0'
'CLANG_WARN_STRICT_PROTOTYPES' => 'NO',
}
- s.ios.deployment_target = '7.0'
- s.osx.deployment_target = '10.9'
+ s.ios.deployment_target = '9.0'
+ s.osx.deployment_target = '10.10'
s.tvos.deployment_target = '10.0'
s.watchos.deployment_target = '4.0'
"src/objective-c/GRPCClient/GRPCTypes.m"
ss.dependency "gRPC-RxLibrary/Interface", version
- ss.ios.deployment_target = '7.0'
- ss.osx.deployment_target = '10.9'
+ ss.ios.deployment_target = '9.0'
+ ss.osx.deployment_target = '10.10'
ss.tvos.deployment_target = '10.0'
ss.watchos.deployment_target = '4.0'
end
ss.dependency "#{s.name}/Interface-Legacy", version
- ss.ios.deployment_target = '7.0'
- ss.osx.deployment_target = '10.9'
+ ss.ios.deployment_target = '9.0'
+ ss.osx.deployment_target = '10.10'
ss.tvos.deployment_target = '10.0'
ss.watchos.deployment_target = '4.0'
end
ss.dependency 'gRPC-Core', version
ss.dependency 'gRPC-RxLibrary', version
- ss.ios.deployment_target = '7.0'
- ss.osx.deployment_target = '10.9'
+ ss.ios.deployment_target = '9.0'
+ ss.osx.deployment_target = '10.10'
ss.tvos.deployment_target = '10.0'
ss.watchos.deployment_target = '4.0'
end
ss.dependency 'gRPC-Core/Cronet-Implementation', version
ss.dependency 'CronetFramework'
- ss.ios.deployment_target = '8.0'
+ ss.ios.deployment_target = '9.0'
end
# CFStream is now default. Leaving this subspec only for compatibility purpose.
s.subspec 'CFStream' do |ss|
ss.dependency "#{s.name}/GRPCCore", version
- ss.ios.deployment_target = '7.0'
- ss.osx.deployment_target = '10.9'
+ ss.ios.deployment_target = '9.0'
+ ss.osx.deployment_target = '10.10'
ss.tvos.deployment_target = '10.0'
ss.watchos.deployment_target = '4.0'
end
ss.source_files = 'src/objective-c/GRPCClient/internal_testing/*.{h,m}'
ss.header_mappings_dir = 'src/objective-c/GRPCClient'
- ss.ios.deployment_target = '7.0'
- ss.osx.deployment_target = '10.9'
+ ss.ios.deployment_target = '9.0'
+ ss.osx.deployment_target = '10.10'
ss.tvos.deployment_target = '10.0'
ss.watchos.deployment_target = '4.0'
end
},
'target_defaults': {
'configurations': {
- % for name, args in configs.iteritems():
+ % for name, args in configs.items():
% if name in ['dbg', 'opt']:
'${{'dbg':'Debug', 'opt': 'Release'}[name]}': {
% for arg, prop in [('CPPFLAGS', 'cflags'), ('DEFINES', 'defines')]:
<dependencies>
<required>
<php>
- <min>5.5.0</min>
+ <min>7.0.0</min>
</php>
<pearinstaller>
<min>1.4.0</min>
% endfor
}
+ public NativeMethods(DllImportsFromSharedLib_x86 unusedInstance)
+ {
+ % for method in get_native_methods():
+ this.${method['name']} = DllImportsFromSharedLib_x86.${method['name']};
+ % endfor
+ }
+
+ public NativeMethods(DllImportsFromSharedLib_x64 unusedInstance)
+ {
+ % for method in get_native_methods():
+ this.${method['name']} = DllImportsFromSharedLib_x64.${method['name']};
+ % endfor
+ }
+
+ public NativeMethods(DllImportsFromSharedLib_x86_dll unusedInstance)
+ {
+ % for method in get_native_methods():
+ this.${method['name']} = DllImportsFromSharedLib_x86_dll.${method['name']};
+ % endfor
+ }
+
+ public NativeMethods(DllImportsFromSharedLib_x64_dll unusedInstance)
+ {
+ % for method in get_native_methods():
+ this.${method['name']} = DllImportsFromSharedLib_x64_dll.${method['name']};
+ % endfor
+ }
+
/// <summary>
/// Delegate types for all published native methods. Declared under inner class to prevent scope pollution.
/// </summary>
}
/// <summary>
- /// grpc_csharp_ext used a shared library (e.g on Unity Standalone and Android).
+ /// grpc_csharp_ext used as a shared library (e.g on Unity Standalone and Android).
/// </summary>
internal class DllImportsFromSharedLib
{
public static extern ${method['returntype']} ${method['name']}(${method['params']});
% endfor
}
+
+ /// <summary>
+ /// grpc_csharp_ext used as a shared library (with x86 suffix)
+ /// </summary>
+ internal class DllImportsFromSharedLib_x86
+ {
+ private const string ImportName = "grpc_csharp_ext.x86";
+ % for method in get_native_methods():
+
+ [DllImport(ImportName)]
+ public static extern ${method['returntype']} ${method['name']}(${method['params']});
+ % endfor
+ }
+
+ /// <summary>
+ /// grpc_csharp_ext used as a shared library (with x64 suffix)
+ /// </summary>
+ internal class DllImportsFromSharedLib_x64
+ {
+ private const string ImportName = "grpc_csharp_ext.x64";
+ % for method in get_native_methods():
+
+ [DllImport(ImportName)]
+ public static extern ${method['returntype']} ${method['name']}(${method['params']});
+ % endfor
+ }
+
+ /// <summary>
+ /// grpc_csharp_ext used as a shared library (with x86.dll suffix)
+ /// </summary>
+ internal class DllImportsFromSharedLib_x86_dll
+ {
+ private const string ImportName = "grpc_csharp_ext.x86.dll";
+ % for method in get_native_methods():
+
+ [DllImport(ImportName)]
+ public static extern ${method['returntype']} ${method['name']}(${method['params']});
+ % endfor
+ }
+
+ /// <summary>
+ /// grpc_csharp_ext used as a shared library (with x64.dll suffix)
+ /// </summary>
+ internal class DllImportsFromSharedLib_x64_dll
+ {
+ private const string ImportName = "grpc_csharp_ext.x64.dll";
+ % for method in get_native_methods():
+
+ [DllImport(ImportName)]
+ public static extern ${method['returntype']} ${method['name']}(${method['params']});
+ % endfor
+ }
}
}
+++ /dev/null
-%YAML 1.2
---- |
- @rem Copyright 2018 The gRPC Authors
- @rem
- @rem Licensed under the Apache License, Version 2.0 (the "License");
- @rem you may not use this file except in compliance with the License.
- @rem You may obtain a copy of the License at
- @rem
- @rem http://www.apache.org/licenses/LICENSE-2.0
- @rem
- @rem Unless required by applicable law or agreed to in writing, software
- @rem distributed under the License is distributed on an "AS IS" BASIS,
- @rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- @rem See the License for the specific language governing permissions and
- @rem limitations under the License.
-
- @rem Current package versions
- set VERSION=${settings.csharp_version}
-
- @rem Adjust the location of nuget.exe
- set NUGET=nuget
- set DOTNET=dotnet
-
- mkdir ..\..\artifacts
-
- @rem Collect the artifacts built by the previous build step
- mkdir nativelibs
- powershell -Command "cp -r ..\..\input_artifacts\csharp_ext_* nativelibs"
-
- @rem Collect protoc artifacts built by the previous build step
- mkdir protoc_plugins
- powershell -Command "cp -r ..\..\input_artifacts\protoc_* protoc_plugins"
-
- %%DOTNET% restore Grpc.sln || goto :error
-
- @rem To be able to build, we also need to put grpc_csharp_ext to its normal location
- xcopy /Y /I nativelibs\csharp_ext_windows_x64\grpc_csharp_ext.dll ..\..\cmake\build\x64\Release${"\\"}
-
- %%DOTNET% build --configuration Release Grpc.Core || goto :error
- @rem build HealthCheck to get hold of Google.Protobuf.dll assembly
- %%DOTNET% build --configuration Release Grpc.HealthCheck || goto :error
-
- @rem copy Grpc assemblies to the unity package skeleton
- @rem TODO(jtattermusch): Add Grpc.Auth assembly and its dependencies
- copy /Y Grpc.Core.Api\bin\Release\net45\Grpc.Core.Api.dll unitypackage\unitypackage_skeleton\Plugins\Grpc.Core.Api\lib\net45\Grpc.Core.Api.dll || goto :error
- copy /Y Grpc.Core.Api\bin\Release\net45\Grpc.Core.Api.pdb unitypackage\unitypackage_skeleton\Plugins\Grpc.Core.Api\lib\net45\Grpc.Core.Api.pdb || goto :error
- copy /Y Grpc.Core.Api\bin\Release\net45\Grpc.Core.Api.xml unitypackage\unitypackage_skeleton\Plugins\Grpc.Core.Api\lib\net45\Grpc.Core.Api.xml || goto :error
- copy /Y Grpc.Core\bin\Release\net45\Grpc.Core.dll unitypackage\unitypackage_skeleton\Plugins\Grpc.Core\lib\net45\Grpc.Core.dll || goto :error
- copy /Y Grpc.Core\bin\Release\net45\Grpc.Core.pdb unitypackage\unitypackage_skeleton\Plugins\Grpc.Core\lib\net45\Grpc.Core.pdb || goto :error
- copy /Y Grpc.Core\bin\Release\net45\Grpc.Core.xml unitypackage\unitypackage_skeleton\Plugins\Grpc.Core\lib\net45\Grpc.Core.xml || goto :error
-
- @rem copy desktop native libraries to the unity package skeleton
- copy /Y nativelibs\csharp_ext_linux_x86\libgrpc_csharp_ext.so unitypackage\unitypackage_skeleton\Plugins\Grpc.Core\runtimes\linux\x86\libgrpc_csharp_ext.so || goto :error
- copy /Y nativelibs\csharp_ext_linux_x64\libgrpc_csharp_ext.so unitypackage\unitypackage_skeleton\Plugins\Grpc.Core\runtimes\linux\x64\libgrpc_csharp_ext.so || goto :error
- copy /Y nativelibs\csharp_ext_macos_x86\libgrpc_csharp_ext.dylib unitypackage\unitypackage_skeleton\Plugins\Grpc.Core\runtimes\osx\x86\grpc_csharp_ext.bundle || goto :error
- copy /Y nativelibs\csharp_ext_macos_x64\libgrpc_csharp_ext.dylib unitypackage\unitypackage_skeleton\Plugins\Grpc.Core\runtimes\osx\x64\grpc_csharp_ext.bundle || goto :error
- copy /Y nativelibs\csharp_ext_windows_x86\grpc_csharp_ext.dll unitypackage\unitypackage_skeleton\Plugins\Grpc.Core\runtimes\win\x86\grpc_csharp_ext.dll || goto :error
- copy /Y nativelibs\csharp_ext_windows_x64\grpc_csharp_ext.dll unitypackage\unitypackage_skeleton\Plugins\Grpc.Core\runtimes\win\x64\grpc_csharp_ext.dll || goto :error
-
- @rem add Android and iOS native libraries
- copy /Y nativelibs\csharp_ext_linux_android_armeabi-v7a\libgrpc_csharp_ext.so unitypackage\unitypackage_skeleton\Plugins\Grpc.Core\runtimes\android\armeabi-v7a\libgrpc_csharp_ext.so || goto :error
- copy /Y nativelibs\csharp_ext_linux_android_arm64-v8a\libgrpc_csharp_ext.so unitypackage\unitypackage_skeleton\Plugins\Grpc.Core\runtimes\android\arm64-v8a\libgrpc_csharp_ext.so || goto :error
- copy /Y nativelibs\csharp_ext_linux_android_x86\libgrpc_csharp_ext.so unitypackage\unitypackage_skeleton\Plugins\Grpc.Core\runtimes\android\x86\libgrpc_csharp_ext.so || goto :error
- copy /Y nativelibs\csharp_ext_macos_ios\libgrpc_csharp_ext.a unitypackage\unitypackage_skeleton\Plugins\Grpc.Core\runtimes\ios\libgrpc_csharp_ext.a || goto :error
- copy /Y nativelibs\csharp_ext_macos_ios\libgrpc.a unitypackage\unitypackage_skeleton\Plugins\Grpc.Core\runtimes\ios\libgrpc.a || goto :error
-
- @rem add gRPC dependencies
- @rem TODO(jtattermusch): also include XMLdoc
- copy /Y Grpc.Core\bin\Release\net45\System.Runtime.CompilerServices.Unsafe.dll unitypackage\unitypackage_skeleton\Plugins\System.Runtime.CompilerServices.Unsafe\lib\net45\System.Runtime.CompilerServices.Unsafe.dll || goto :error
- copy /Y Grpc.Core\bin\Release\net45\System.Buffers.dll unitypackage\unitypackage_skeleton\Plugins\System.Buffers\lib\net45\System.Buffers.dll || goto :error
- copy /Y Grpc.Core\bin\Release\net45\System.Memory.dll unitypackage\unitypackage_skeleton\Plugins\System.Memory\lib\net45\System.Memory.dll || goto :error
-
- @rem add Google.Protobuf
- @rem TODO(jtattermusch): also include XMLdoc
- copy /Y Grpc.HealthCheck\bin\Release\net45\Google.Protobuf.dll unitypackage\unitypackage_skeleton\Plugins\Google.Protobuf\lib\net45\Google.Protobuf.dll || goto :error
-
- @rem create a zipfile that will act as a Unity package
- cd unitypackage\unitypackage_skeleton
- zip -r ..\..\grpc_unity_package.zip Plugins
- cd ..\..
- copy /Y grpc_unity_package.zip ..\..\artifacts\grpc_unity_package.%VERSION%.zip || goto :error
-
- goto :EOF
-
- :error
- echo Failed!
- exit /b %errorlevel%
# Restrict the protoc version to the one supported by this plugin.
s.dependency '!ProtoCompiler', '3.13.0'
# For the Protobuf dependency not to complain:
- s.ios.deployment_target = '7.0'
- s.osx.deployment_target = '10.9'
+ s.ios.deployment_target = '9.0'
+ s.osx.deployment_target = '10.10'
s.tvos.deployment_target = '10.0'
s.watchos.deployment_target = '2.0'
# Restrict the protoc version to the one supported by this plugin.
s.dependency '!ProtoCompiler', '3.13.0'
# For the Protobuf dependency not to complain:
- s.ios.deployment_target = '7.0'
- s.osx.deployment_target = '10.9'
+ s.ios.deployment_target = '9.0'
+ s.osx.deployment_target = '10.10'
s.tvos.deployment_target = '10.0'
# watchOS is disabled due to #20258.
Pod::Spec.new do |s|
s.name = 'BoringSSL-GRPC'
- version = '0.0.13'
+ version = '0.0.14'
s.version = version
s.summary = 'BoringSSL is a fork of OpenSSL that is designed to meet Google\'s needs.'
# Adapted from the homepage:
:commit => "${boringssl_commit}",
}
- s.ios.deployment_target = '7.0'
- s.osx.deployment_target = '10.7'
+ s.ios.deployment_target = '9.0'
+ s.osx.deployment_target = '10.10'
s.tvos.deployment_target = '10.0'
s.watchos.deployment_target = '4.0'
# the correct location in BoringSSL.
base64 -D <<EOF | gunzip > src/include/openssl/boringssl_prefix_symbols.h
% for line in compress_boringssl_prefix_header():
- ${line}
+ ${line.decode('utf-8')}
% endfor
EOF
"license": "Apache-2.0",
"version": "${settings.php_version.php_composer()}",
"require": {
- "php": ">=5.5.0",
+ "php": ">=7.0.0",
"google/protobuf": "^v3.3.0"
},
"require-dev": {
-RUN wget https://phar.phpunit.de/phpunit-5.7.27.phar && ${'\\'}
- mv phpunit-5.7.27.phar /usr/local/bin/phpunit && ${'\\'}
+RUN wget https://phar.phpunit.de/phpunit-8.5.8.phar && ${'\\'}
+ mv phpunit-8.5.8.phar /usr/local/bin/phpunit && ${'\\'}
chmod +x /usr/local/bin/phpunit
# See the License for the specific language governing permissions and
# limitations under the License.
- FROM php:7.4.5-buster
+ FROM php:7.4.11-buster
RUN apt-get -qq update && apt-get -qq install -y ${'\\'}
autoconf automake git libtool pkg-config ${'\\'}
--- /dev/null
+%YAML 1.2
+--- |
+ # Copyright 2020 gRPC authors.
+ #
+ # Licensed under the Apache License, Version 2.0 (the "License");
+ # you may not use this file except in compliance with the License.
+ # You may obtain a copy of the License at
+ #
+ # http://www.apache.org/licenses/LICENSE-2.0
+ #
+ # Unless required by applicable law or agreed to in writing, software
+ # distributed under the License is distributed on an "AS IS" BASIS,
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ # See the License for the specific language governing permissions and
+ # limitations under the License.
+
+ FROM php:8.0.0RC3-cli-buster
+
+ RUN apt-get -qq update && apt-get -qq install -y ${'\\'}
+ autoconf automake git libtool pkg-config ${'\\'}
+ valgrind wget zlib1g-dev
+
+ ARG MAKEFLAGS=-j8
+
+
+ WORKDIR /tmp
+
+ # install pear
+ RUN apt-get install expect -y && ${'\\'}
+ curl -LO http://pear.php.net/go-pear.phar && ${'\\'}
+ expect -c 'spawn php ./go-pear.phar; expect "or Enter to continue:"; send "\n"; expect "Currently used php.ini"; send "\n"; expect eof' && ${'\\'}
+ rm go-pear.phar
+
+ <%include file="../pecl_ext_build_src.include" />
+
+ CMD php -d extension=grpc.so -r '$a = new \Grpc\Channel("dummy", []); echo get_class($a)."\n";'
]
ASM_SOURCE_FILES = {
- % for asm, asm_src in asm_srcs.iteritems():
+ % for asm, asm_src in asm_srcs.items():
'${asm}': [
% for src in asm_src:
'${src}',
%YAML 1.2
--- |
<%namespace file="end2end_defs.include" import="*"/>\
- ${end2end_selector(k for k, v in core_end2end_tests.iteritems() if not v)}
+ ${end2end_selector(k for k, v in core_end2end_tests.items() if not v)}
# Builds Go interop server and client in a base image.
set -e
+# Turn on support for Go modules.
+export GO111MODULE=on
+
# Clone just the grpc-go source code without any dependencies.
# We are cloning from a local git repo that contains the right revision
# to test instead of using "go get" to download from Github directly.
git clone --recursive /var/local/jenkins/grpc-go src/google.golang.org/grpc
-# Get all gRPC Go dependencies
-(cd src/google.golang.org/grpc && make deps && make testdeps)
-
# copy service account keys if available
cp -r /var/local/jenkins/service_account $HOME || true
FROM debian:10
- RUN apt-get update && apt-get install -y clang-format
+ # Add buster-backports for more recent clang packages
+ RUN echo "deb http://deb.debian.org/debian buster-backports main" | tee /etc/apt/sources.list.d/buster-backports.list
+
+ # Install clang-format
+ RUN apt-get update && apt-get install -y clang-format-8
+ ENV CLANG_FORMAT=clang-format-8
+
ADD clang_format_all_the_things.sh /
# When running locally, we'll be impersonating the current user, so we need
<%include file="../python_debian10.include"/>
- # Install clang-tidy 6.0
- # This is because clang-tidy 7.0 started treating compiler errors as tidy errors
- # and there are a couple of files which are not properly compiled via tidy so it
- # should be using 6.0 version until all compilation errors are addressed.
- RUN apt-get update && apt-get install -y clang-tidy-6.0
- ENV CLANG_TIDY=clang-tidy-6.0
+ # Add buster-backports for more recent clang packages
+ RUN echo "deb http://deb.debian.org/debian buster-backports main" | tee /etc/apt/sources.list.d/buster-backports.list
+
+ # Install clang-tidy 7
+ RUN apt-get update && apt-get install -y clang-tidy-8 jq
+ ENV CLANG_TIDY=clang-tidy-8
ADD clang_tidy_all_the_things.sh /
+++ /dev/null
-%YAML 1.2
---- |
- # Copyright 2017 gRPC authors.
- #
- # Licensed under the Apache License, Version 2.0 (the "License");
- # you may not use this file except in compliance with the License.
- # You may obtain a copy of the License at
- #
- # http://www.apache.org/licenses/LICENSE-2.0
- #
- # Unless required by applicable law or agreed to in writing, software
- # distributed under the License is distributed on an "AS IS" BASIS,
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- # See the License for the specific language governing permissions and
- # limitations under the License.
-
- FROM google/dart:2.7
-
- # Define the default command.
- CMD ["bash"]
+++ /dev/null
-%YAML 1.2
---- |
- # Copyright 2017 gRPC authors.
- #
- # Licensed under the Apache License, Version 2.0 (the "License");
- # you may not use this file except in compliance with the License.
- # You may obtain a copy of the License at
- #
- # http://www.apache.org/licenses/LICENSE-2.0
- #
- # Unless required by applicable law or agreed to in writing, software
- # distributed under the License is distributed on an "AS IS" BASIS,
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- # See the License for the specific language governing permissions and
- # limitations under the License.
-
- FROM golang:1.7
-
- <%include file="../../go_path.include"/>
- <%include file="../../python_deps.include"/>
- # Define the default command.
- CMD ["bash"]
-
+++ /dev/null
-%YAML 1.2
---- |
- <%include file="../../go_build_interop.sh.include"/>
+++ /dev/null
-%YAML 1.2
---- |
- <%include file="../../go_build_interop.sh.include"/>
RUN curl https://bootstrap.pypa.io/get-pip.py | python2.7
RUN pip install --upgrade pip==19.3.1
RUN pip install virtualenv==16.7.9
-RUN pip install futures==2.2.0 enum34==1.0.4 protobuf==3.5.2.post1 six==1.10.0 twisted==17.5.0
+RUN pip install futures==2.2.0 enum34==1.0.4 protobuf==3.5.2.post1 six==1.15.0 twisted==17.5.0
# Install Python packages from PyPI
RUN pip install --upgrade pip==19.3.1
RUN pip install virtualenv
- RUN pip install futures==2.2.0 enum34==1.0.4 protobuf==3.5.0.post1 six==1.10.0 twisted==17.5.0
+ RUN pip install futures==2.2.0 enum34==1.0.4 protobuf==3.5.0.post1 six==1.15.0 twisted==17.5.0
# Google Cloud platform API libraries
RUN pip install --upgrade google-api-python-client
- # Install gflags
- RUN git clone https://github.com/gflags/gflags.git && cd gflags && git checkout v2.2.0
- RUN cd gflags && cmake . && make && make install
- RUN ln -s /usr/local/include/gflags /usr/include/gflags
-
<%include file="../../run_tests_addons.include"/>
# Define the default command.
RUN python2 -m pip install simplejson mako virtualenv==16.7.9 lxml
RUN python3 -m pip install simplejson mako virtualenv==16.7.9 lxml
- # Install clang & clang-format
- RUN apt-get install -y clang clang-format
+ # Add buster-backports for more recent clang packages
+ RUN echo "deb http://deb.debian.org/debian buster-backports main" | tee /etc/apt/sources.list.d/buster-backports.list
- # Install clang-tidy 6.0
- # This is because clang-tidy 7.0 started treating compiler errors as tidy errors
- # and there are a couple of files which are not properly compiled via tidy so it
- # should be using 6.0 version until all compilation errors are addressed.
- RUN apt-get install -y clang-tidy-6.0
- ENV CLANG_TIDY=clang-tidy-6.0
+ # Install clang, clang-format, and clang-tidy
+ RUN apt-get update && apt-get install -y clang clang-format-8 clang-tidy-8 jq
+ ENV CLANG_FORMAT=clang-format-8
+ ENV CLANG_TIDY=clang-tidy-8
<%include file="../../bazel.include"/>
<%
import json
out_configs = []
- for name, args in configs.iteritems():
+ for name, args in configs.items():
config_args={}
config_args['config'] = name
if args.get('valgrind', None) is not None:
for (i = 3; i <= 4; i++) {
grpc_init();
run_test(args[2], i);
- grpc_shutdown_blocking();
+ grpc_shutdown();
}
gpr_subprocess_interrupt(svr);
"//test/core/util:grpc_test_util",
],
)
-
-grpc_cc_test(
- name = "xds_bootstrap_test",
- srcs = ["xds_bootstrap_test.cc"],
- external_deps = [
- "gtest",
- ],
- language = "C++",
- deps = [
- "//:gpr",
- "//:grpc",
- "//test/core/util:grpc_test_util",
- ],
-)
public:
const char* name() const override { return "fake1"; }
- std::unique_ptr<Config> CreateCertificateProviderConfig(
+ RefCountedPtr<Config> CreateCertificateProviderConfig(
const Json& config_json, grpc_error** error) override {
return nullptr;
}
RefCountedPtr<grpc_tls_certificate_provider> CreateCertificateProvider(
- std::unique_ptr<Config> config) override {
+ RefCountedPtr<Config> config) override {
return nullptr;
}
};
public:
const char* name() const override { return "fake2"; }
- std::unique_ptr<Config> CreateCertificateProviderConfig(
+ RefCountedPtr<Config> CreateCertificateProviderConfig(
const Json& config_json, grpc_error** error) override {
return nullptr;
}
RefCountedPtr<grpc_tls_certificate_provider> CreateCertificateProvider(
- std::unique_ptr<Config> config) override {
+ RefCountedPtr<Config> config) override {
return nullptr;
}
};
licenses(["notice"]) # Apache v2
grpc_cc_test(
- name = "dns_resolver_connectivity_using_ares_resolver_test",
+ name = "dns_resolver_connectivity_using_ares_test",
srcs = ["dns_resolver_connectivity_test.cc"],
args = [
"--resolver=ares",
)
grpc_cc_test(
- name = "dns_resolver_connectivity_using_native_resolver_test",
+ name = "dns_resolver_connectivity_using_native_test",
srcs = ["dns_resolver_connectivity_test.cc"],
args = [
"--resolver=native",
std::unique_ptr<grpc_core::Resolver::ResultHandler> result_handler) {
grpc_core::ResolverFactory* factory =
grpc_core::ResolverRegistry::LookupResolverFactory("dns");
- grpc_uri* uri = grpc_uri_parse(name, 0);
+ grpc_uri* uri = grpc_uri_parse(name, false);
GPR_ASSERT(uri);
grpc_core::ResolverArgs args;
args.uri = uri;
res_cb_arg->result_handler = new ResultHandler();
grpc_core::ResolverFactory* factory =
grpc_core::ResolverRegistry::LookupResolverFactory("dns");
- grpc_uri* uri = grpc_uri_parse(res_cb_arg->uri_str, 0);
+ grpc_uri* uri = grpc_uri_parse(res_cb_arg->uri_str, false);
gpr_log(GPR_DEBUG, "test: '%s' should be valid for '%s'", res_cb_arg->uri_str,
factory->scheme());
GPR_ASSERT(uri != nullptr);
test_cooldown();
- grpc_shutdown_blocking();
+ grpc_shutdown();
GPR_ASSERT(g_all_callbacks_invoked);
return 0;
}
gpr_log(GPR_DEBUG, "test: '%s' should be valid for '%s'", string,
factory->scheme());
grpc_core::ExecCtx exec_ctx;
- grpc_uri* uri = grpc_uri_parse(string, 0);
+ grpc_uri* uri = grpc_uri_parse(string, false);
GPR_ASSERT(uri);
grpc_core::ResolverArgs args;
args.uri = uri;
gpr_log(GPR_DEBUG, "test: '%s' should be invalid for '%s'", string,
factory->scheme());
grpc_core::ExecCtx exec_ctx;
- grpc_uri* uri = grpc_uri_parse(string, 0);
+ grpc_uri* uri = grpc_uri_parse(string, false);
GPR_ASSERT(uri);
grpc_core::ResolverArgs args;
args.uri = uri;
gpr_log(GPR_DEBUG, "test: '%s' should be valid for '%s'", string,
factory->scheme());
grpc_core::ExecCtx exec_ctx;
- grpc_uri* uri = grpc_uri_parse(string, 0);
+ grpc_uri* uri = grpc_uri_parse(string, false);
GPR_ASSERT(uri);
grpc_core::ResolverArgs args;
args.uri = uri;
gpr_log(GPR_DEBUG, "test: '%s' should be invalid for '%s'", string,
factory->scheme());
grpc_core::ExecCtx exec_ctx;
- grpc_uri* uri = grpc_uri_parse(string, 0);
+ grpc_uri* uri = grpc_uri_parse(string, false);
GPR_ASSERT(uri);
grpc_core::ResolverArgs args;
args.uri = uri;
test_fails(ipv6, "ipv6:[::]:123456");
test_fails(ipv6, "ipv6:www.google.com");
+#ifdef GRPC_HAVE_UNIX_SOCKET
+ grpc_core::ResolverFactory* uds =
+ grpc_core::ResolverRegistry::LookupResolverFactory("unix");
+ grpc_core::ResolverFactory* uds_abstract =
+ grpc_core::ResolverRegistry::LookupResolverFactory("unix-abstract");
+
+ test_succeeds(uds, "unix:///tmp/sockaddr_resolver_test");
+ test_succeeds(uds_abstract, "unix-abstract:sockaddr_resolver_test");
+#endif // GRPC_HAVE_UNIX_SOCKET
+
grpc_shutdown();
return 0;
*
*/
-#include <regex>
-
#include "absl/strings/str_cat.h"
+#include <gmock/gmock.h>
#include <gtest/gtest.h>
#include <grpc/grpc.h>
static const char* GlobalError() { return "ErrorParser : globalError"; }
};
-void VerifyRegexMatch(grpc_error* error, const std::regex& regex) {
- std::smatch match;
- std::string error_str = grpc_error_string(error);
- EXPECT_TRUE(std::regex_search(error_str, match, regex)) << error_str;
- GRPC_ERROR_UNREF(error);
-}
-
class ServiceConfigTest : public ::testing::Test {
protected:
void SetUp() override {
const char* test_json = "";
grpc_error* error = GRPC_ERROR_NONE;
auto svc_cfg = ServiceConfig::Create(nullptr, test_json, &error);
- std::regex regex(std::string("JSON parse error"));
- VerifyRegexMatch(error, regex);
+ EXPECT_THAT(grpc_error_string(error),
+ ::testing::ContainsRegex("JSON parse error"));
+ GRPC_ERROR_UNREF(error);
}
TEST_F(ServiceConfigTest, BasicTest1) {
"]}";
grpc_error* error = GRPC_ERROR_NONE;
auto svc_cfg = ServiceConfig::Create(nullptr, test_json, &error);
- std::regex regex(
- std::string("Service config parsing error.*referenced_errors"
- ".*Method Params.*referenced_errors"
- ".*methodConfig.*referenced_errors"
- ".*multiple method configs with same name"));
- VerifyRegexMatch(error, regex);
+ EXPECT_THAT(
+ grpc_error_string(error),
+ ::testing::ContainsRegex("Service config parsing error.*referenced_errors"
+ ".*Method Params.*referenced_errors"
+ ".*methodConfig.*referenced_errors"
+ ".*multiple method configs with same name"));
+ GRPC_ERROR_UNREF(error);
}
TEST_F(ServiceConfigTest, ErrorDuplicateMethodConfigNamesWithNullMethod) {
"]}";
grpc_error* error = GRPC_ERROR_NONE;
auto svc_cfg = ServiceConfig::Create(nullptr, test_json, &error);
- std::regex regex(
- std::string("Service config parsing error.*referenced_errors"
- ".*Method Params.*referenced_errors"
- ".*methodConfig.*referenced_errors"
- ".*multiple method configs with same name"));
- VerifyRegexMatch(error, regex);
+ EXPECT_THAT(
+ grpc_error_string(error),
+ ::testing::ContainsRegex("Service config parsing error.*referenced_errors"
+ ".*Method Params.*referenced_errors"
+ ".*methodConfig.*referenced_errors"
+ ".*multiple method configs with same name"));
+ GRPC_ERROR_UNREF(error);
}
TEST_F(ServiceConfigTest, ErrorDuplicateMethodConfigNamesWithEmptyMethod) {
"]}";
grpc_error* error = GRPC_ERROR_NONE;
auto svc_cfg = ServiceConfig::Create(nullptr, test_json, &error);
- std::regex regex(
- std::string("Service config parsing error.*referenced_errors"
- ".*Method Params.*referenced_errors"
- ".*methodConfig.*referenced_errors"
- ".*multiple method configs with same name"));
- VerifyRegexMatch(error, regex);
+ EXPECT_THAT(
+ grpc_error_string(error),
+ ::testing::ContainsRegex("Service config parsing error.*referenced_errors"
+ ".*Method Params.*referenced_errors"
+ ".*methodConfig.*referenced_errors"
+ ".*multiple method configs with same name"));
+ GRPC_ERROR_UNREF(error);
}
TEST_F(ServiceConfigTest, ErrorDuplicateDefaultMethodConfigs) {
"]}";
grpc_error* error = GRPC_ERROR_NONE;
auto svc_cfg = ServiceConfig::Create(nullptr, test_json, &error);
- std::regex regex(
- std::string("Service config parsing error.*referenced_errors"
- ".*Method Params.*referenced_errors"
- ".*methodConfig.*referenced_errors"
- ".*multiple default method configs"));
- VerifyRegexMatch(error, regex);
+ EXPECT_THAT(
+ grpc_error_string(error),
+ ::testing::ContainsRegex("Service config parsing error.*referenced_errors"
+ ".*Method Params.*referenced_errors"
+ ".*methodConfig.*referenced_errors"
+ ".*multiple default method configs"));
+ GRPC_ERROR_UNREF(error);
}
TEST_F(ServiceConfigTest, ErrorDuplicateDefaultMethodConfigsWithNullService) {
"]}";
grpc_error* error = GRPC_ERROR_NONE;
auto svc_cfg = ServiceConfig::Create(nullptr, test_json, &error);
- std::regex regex(
- std::string("Service config parsing error.*referenced_errors"
- ".*Method Params.*referenced_errors"
- ".*methodConfig.*referenced_errors"
- ".*multiple default method configs"));
- VerifyRegexMatch(error, regex);
+ EXPECT_THAT(
+ grpc_error_string(error),
+ ::testing::ContainsRegex("Service config parsing error.*referenced_errors"
+ ".*Method Params.*referenced_errors"
+ ".*methodConfig.*referenced_errors"
+ ".*multiple default method configs"));
+ GRPC_ERROR_UNREF(error);
}
TEST_F(ServiceConfigTest, ErrorDuplicateDefaultMethodConfigsWithEmptyService) {
"]}";
grpc_error* error = GRPC_ERROR_NONE;
auto svc_cfg = ServiceConfig::Create(nullptr, test_json, &error);
- std::regex regex(
- std::string("Service config parsing error.*referenced_errors"
- ".*Method Params.*referenced_errors"
- ".*methodConfig.*referenced_errors"
- ".*multiple default method configs"));
- VerifyRegexMatch(error, regex);
+ EXPECT_THAT(
+ grpc_error_string(error),
+ ::testing::ContainsRegex("Service config parsing error.*referenced_errors"
+ ".*Method Params.*referenced_errors"
+ ".*methodConfig.*referenced_errors"
+ ".*multiple default method configs"));
+ GRPC_ERROR_UNREF(error);
}
TEST_F(ServiceConfigTest, ValidMethodConfig) {
const char* test_json = "{\"global_param\":\"5\"}";
grpc_error* error = GRPC_ERROR_NONE;
auto svc_cfg = ServiceConfig::Create(nullptr, test_json, &error);
- std::regex regex(
- absl::StrCat("Service config parsing error.*referenced_errors.*"
- "Global Params.*referenced_errors.*",
- TestParser1::InvalidTypeErrorMessage()));
- VerifyRegexMatch(error, regex);
+ EXPECT_THAT(grpc_error_string(error),
+ ::testing::ContainsRegex(absl::StrCat(
+ "Service config parsing error.*referenced_errors.*"
+ "Global Params.*referenced_errors.*",
+ TestParser1::InvalidTypeErrorMessage())));
+ GRPC_ERROR_UNREF(error);
}
TEST_F(ServiceConfigTest, Parser1ErrorInvalidValue) {
const char* test_json = "{\"global_param\":-5}";
grpc_error* error = GRPC_ERROR_NONE;
auto svc_cfg = ServiceConfig::Create(nullptr, test_json, &error);
- std::regex regex(
- absl::StrCat("Service config parsing error.*referenced_errors.*"
- "Global Params.*referenced_errors.*",
- TestParser1::InvalidValueErrorMessage()));
- VerifyRegexMatch(error, regex);
+ EXPECT_THAT(grpc_error_string(error),
+ ::testing::ContainsRegex(absl::StrCat(
+ "Service config parsing error.*referenced_errors.*"
+ "Global Params.*referenced_errors.*",
+ TestParser1::InvalidValueErrorMessage())));
+ GRPC_ERROR_UNREF(error);
}
TEST_F(ServiceConfigTest, Parser2BasicTest) {
"\"method_param\":\"5\"}]}";
grpc_error* error = GRPC_ERROR_NONE;
auto svc_cfg = ServiceConfig::Create(nullptr, test_json, &error);
- std::regex regex(
- absl::StrCat("Service config parsing error.*referenced_errors\":\\[.*"
- "Method Params.*referenced_errors.*methodConfig.*"
- "referenced_errors.*",
- TestParser2::InvalidTypeErrorMessage()));
- VerifyRegexMatch(error, regex);
+ EXPECT_THAT(grpc_error_string(error),
+ ::testing::ContainsRegex(absl::StrCat(
+ "Service config parsing error.*referenced_errors\":\\[.*"
+ "Method Params.*referenced_errors.*methodConfig.*"
+ "referenced_errors.*",
+ TestParser2::InvalidTypeErrorMessage())));
+ GRPC_ERROR_UNREF(error);
}
TEST_F(ServiceConfigTest, Parser2ErrorInvalidValue) {
"\"method_param\":-5}]}";
grpc_error* error = GRPC_ERROR_NONE;
auto svc_cfg = ServiceConfig::Create(nullptr, test_json, &error);
- std::regex regex(
- absl::StrCat("Service config parsing error.*referenced_errors\":\\[.*"
- "Method Params.*referenced_errors.*methodConfig.*"
- "referenced_errors.*",
- TestParser2::InvalidValueErrorMessage()));
- VerifyRegexMatch(error, regex);
+ EXPECT_THAT(grpc_error_string(error),
+ ::testing::ContainsRegex(absl::StrCat(
+ "Service config parsing error.*referenced_errors\":\\[.*"
+ "Method Params.*referenced_errors.*methodConfig.*"
+ "referenced_errors.*",
+ TestParser2::InvalidValueErrorMessage())));
+ GRPC_ERROR_UNREF(error);
}
// Test parsing with ErrorParsers which always add errors
const char* test_json = "{}";
grpc_error* error = GRPC_ERROR_NONE;
auto svc_cfg = ServiceConfig::Create(nullptr, test_json, &error);
- std::regex regex(absl::StrCat(
- "Service config parsing error.*referenced_errors\":\\[.*"
- "Global Params.*referenced_errors.*",
- ErrorParser::GlobalError(), ".*", ErrorParser::GlobalError()));
- VerifyRegexMatch(error, regex);
+ EXPECT_THAT(
+ grpc_error_string(error),
+ ::testing::ContainsRegex(absl::StrCat(
+ "Service config parsing error.*referenced_errors\":\\[.*"
+ "Global Params.*referenced_errors.*",
+ ErrorParser::GlobalError(), ".*", ErrorParser::GlobalError())));
+ GRPC_ERROR_UNREF(error);
}
TEST_F(ErroredParsersScopingTest, MethodParams) {
const char* test_json = "{\"methodConfig\": [{}]}";
grpc_error* error = GRPC_ERROR_NONE;
auto svc_cfg = ServiceConfig::Create(nullptr, test_json, &error);
- std::regex regex(absl::StrCat(
- "Service config parsing error.*referenced_errors\":\\[.*"
- "Global Params.*referenced_errors.*",
- ErrorParser::GlobalError(), ".*", ErrorParser::GlobalError(),
- ".*Method Params.*referenced_errors.*methodConfig.*referenced_errors.*",
- ErrorParser::MethodError(), ".*", ErrorParser::MethodError()));
- VerifyRegexMatch(error, regex);
+ EXPECT_THAT(
+ grpc_error_string(error),
+ ::testing::ContainsRegex(absl::StrCat(
+ "Service config parsing error.*referenced_errors\":\\[.*"
+ "Global Params.*referenced_errors.*",
+ ErrorParser::GlobalError(), ".*", ErrorParser::GlobalError(),
+ ".*Method Params.*referenced_errors.*methodConfig.*"
+ "referenced_errors.*",
+ ErrorParser::MethodError(), ".*", ErrorParser::MethodError())));
+ GRPC_ERROR_UNREF(error);
}
class ClientChannelParserTest : public ::testing::Test {
const char* test_json = "{\"loadBalancingConfig\": [{\"unknown\":{}}]}";
grpc_error* error = GRPC_ERROR_NONE;
auto svc_cfg = ServiceConfig::Create(nullptr, test_json, &error);
- std::regex regex(
- "Service config parsing error.*referenced_errors.*"
- "Global Params.*referenced_errors.*"
- "Client channel global parser.*referenced_errors.*"
- "field:loadBalancingConfig.*referenced_errors.*"
- "No known policies in list: unknown");
- VerifyRegexMatch(error, regex);
+ EXPECT_THAT(grpc_error_string(error),
+ ::testing::ContainsRegex(
+ "Service config parsing error.*referenced_errors.*"
+ "Global Params.*referenced_errors.*"
+ "Client channel global parser.*referenced_errors.*"
+ "field:loadBalancingConfig.*referenced_errors.*"
+ "No known policies in list: unknown"));
+ GRPC_ERROR_UNREF(error);
}
TEST_F(ClientChannelParserTest, InvalidGrpclbLoadBalancingConfig) {
"]}";
grpc_error* error = GRPC_ERROR_NONE;
auto svc_cfg = ServiceConfig::Create(nullptr, test_json, &error);
- std::regex regex(
- "Service config parsing error.*referenced_errors.*"
- "Global Params.*referenced_errors.*"
- "Client channel global parser.*referenced_errors.*"
- "field:loadBalancingConfig.*referenced_errors.*"
- "GrpcLb Parser.*referenced_errors.*"
- "field:childPolicy.*referenced_errors.*"
- "type should be array");
- VerifyRegexMatch(error, regex);
+ EXPECT_THAT(grpc_error_string(error),
+ ::testing::ContainsRegex(
+ "Service config parsing error.*referenced_errors.*"
+ "Global Params.*referenced_errors.*"
+ "Client channel global parser.*referenced_errors.*"
+ "field:loadBalancingConfig.*referenced_errors.*"
+ "GrpcLb Parser.*referenced_errors.*"
+ "field:childPolicy.*referenced_errors.*"
+ "type should be array"));
+ GRPC_ERROR_UNREF(error);
}
TEST_F(ClientChannelParserTest, ValidLoadBalancingPolicy) {
const char* test_json = "{\"loadBalancingPolicy\":\"unknown\"}";
grpc_error* error = GRPC_ERROR_NONE;
auto svc_cfg = ServiceConfig::Create(nullptr, test_json, &error);
- std::regex regex(
- "Service config parsing error.*referenced_errors.*"
- "Global Params.*referenced_errors.*"
- "Client channel global parser.*referenced_errors.*"
- "field:loadBalancingPolicy error:Unknown lb policy");
- VerifyRegexMatch(error, regex);
+ EXPECT_THAT(grpc_error_string(error),
+ ::testing::ContainsRegex(
+ "Service config parsing error.*referenced_errors.*"
+ "Global Params.*referenced_errors.*"
+ "Client channel global parser.*referenced_errors.*"
+ "field:loadBalancingPolicy error:Unknown lb policy"));
+ GRPC_ERROR_UNREF(error);
}
TEST_F(ClientChannelParserTest, LoadBalancingPolicyXdsNotAllowed) {
const char* test_json = "{\"loadBalancingPolicy\":\"eds_experimental\"}";
grpc_error* error = GRPC_ERROR_NONE;
auto svc_cfg = ServiceConfig::Create(nullptr, test_json, &error);
- std::regex regex(
- "Service config parsing error.*referenced_errors.*"
- "Global Params.*referenced_errors.*"
- "Client channel global parser.*referenced_errors.*"
- "field:loadBalancingPolicy error:eds_experimental requires "
- "a config. Please use loadBalancingConfig instead.");
- VerifyRegexMatch(error, regex);
+ EXPECT_THAT(grpc_error_string(error),
+ ::testing::ContainsRegex(
+ "Service config parsing error.*referenced_errors.*"
+ "Global Params.*referenced_errors.*"
+ "Client channel global parser.*referenced_errors.*"
+ "field:loadBalancingPolicy error:eds_experimental requires "
+ "a config. Please use loadBalancingConfig instead."));
+ GRPC_ERROR_UNREF(error);
}
TEST_F(ClientChannelParserTest, ValidRetryThrottling) {
"}";
grpc_error* error = GRPC_ERROR_NONE;
auto svc_cfg = ServiceConfig::Create(nullptr, test_json, &error);
- std::regex regex(
- "Service config parsing error.*referenced_errors.*"
- "Global Params.*referenced_errors.*"
- "Client channel global parser.*referenced_errors.*"
- "field:retryThrottling field:maxTokens error:Not found.*"
- "field:retryThrottling field:tokenRatio error:Not found");
- VerifyRegexMatch(error, regex);
+ EXPECT_THAT(grpc_error_string(error),
+ ::testing::ContainsRegex(
+ "Service config parsing error.*referenced_errors.*"
+ "Global Params.*referenced_errors.*"
+ "Client channel global parser.*referenced_errors.*"
+ "field:retryThrottling field:maxTokens error:Not found.*"
+ "field:retryThrottling field:tokenRatio error:Not found"));
+ GRPC_ERROR_UNREF(error);
}
TEST_F(ClientChannelParserTest, InvalidRetryThrottlingNegativeMaxTokens) {
"}";
grpc_error* error = GRPC_ERROR_NONE;
auto svc_cfg = ServiceConfig::Create(nullptr, test_json, &error);
- std::regex regex(
- "Service config parsing error.*referenced_errors.*"
- "Global Params.*referenced_errors.*"
- "Client channel global parser.*referenced_errors.*"
- "field:retryThrottling field:maxTokens error:should "
- "be greater than zero");
- VerifyRegexMatch(error, regex);
+ EXPECT_THAT(grpc_error_string(error),
+ ::testing::ContainsRegex(
+ "Service config parsing error.*referenced_errors.*"
+ "Global Params.*referenced_errors.*"
+ "Client channel global parser.*referenced_errors.*"
+ "field:retryThrottling field:maxTokens error:should "
+ "be greater than zero"));
+ GRPC_ERROR_UNREF(error);
}
TEST_F(ClientChannelParserTest, InvalidRetryThrottlingInvalidTokenRatio) {
"}";
grpc_error* error = GRPC_ERROR_NONE;
auto svc_cfg = ServiceConfig::Create(nullptr, test_json, &error);
- std::regex regex(
- "Service config parsing error.*referenced_errors.*"
- "Global Params.*referenced_errors.*"
- "Client channel global parser.*referenced_errors.*"
- "field:retryThrottling field:tokenRatio "
- "error:Failed parsing");
- VerifyRegexMatch(error, regex);
+ EXPECT_THAT(grpc_error_string(error),
+ ::testing::ContainsRegex(
+ "Service config parsing error.*referenced_errors.*"
+ "Global Params.*referenced_errors.*"
+ "Client channel global parser.*referenced_errors.*"
+ "field:retryThrottling field:tokenRatio "
+ "error:Failed parsing"));
+ GRPC_ERROR_UNREF(error);
}
TEST_F(ClientChannelParserTest, ValidTimeout) {
"}";
grpc_error* error = GRPC_ERROR_NONE;
auto svc_cfg = ServiceConfig::Create(nullptr, test_json, &error);
- std::regex regex(
- "Service config parsing error.*referenced_errors.*"
- "Method Params.*referenced_errors.*"
- "methodConfig.*referenced_errors.*"
- "Client channel parser.*referenced_errors.*"
- "field:timeout error:Failed parsing");
- VerifyRegexMatch(error, regex);
+ EXPECT_THAT(grpc_error_string(error),
+ ::testing::ContainsRegex(
+ "Service config parsing error.*referenced_errors.*"
+ "Method Params.*referenced_errors.*"
+ "methodConfig.*referenced_errors.*"
+ "Client channel parser.*referenced_errors.*"
+ "field:timeout error:type should be STRING of the form given "
+ "by google.proto.Duration"));
+ GRPC_ERROR_UNREF(error);
}
TEST_F(ClientChannelParserTest, ValidWaitForReady) {
"}";
grpc_error* error = GRPC_ERROR_NONE;
auto svc_cfg = ServiceConfig::Create(nullptr, test_json, &error);
- std::regex regex(
- "Service config parsing error.*referenced_errors.*"
- "Method Params.*referenced_errors.*"
- "methodConfig.*referenced_errors.*"
- "Client channel parser.*referenced_errors.*"
- "field:waitForReady error:Type should be true/false");
- VerifyRegexMatch(error, regex);
+ EXPECT_THAT(grpc_error_string(error),
+ ::testing::ContainsRegex(
+ "Service config parsing error.*referenced_errors.*"
+ "Method Params.*referenced_errors.*"
+ "methodConfig.*referenced_errors.*"
+ "Client channel parser.*referenced_errors.*"
+ "field:waitForReady error:Type should be true/false"));
+ GRPC_ERROR_UNREF(error);
}
TEST_F(ClientChannelParserTest, ValidRetryPolicy) {
"}";
grpc_error* error = GRPC_ERROR_NONE;
auto svc_cfg = ServiceConfig::Create(nullptr, test_json, &error);
- std::regex regex(
- "Service config parsing error.*referenced_errors.*"
- "Method Params.*referenced_errors.*"
- "methodConfig.*referenced_errors.*"
- "Client channel parser.*referenced_errors.*"
- "retryPolicy.*referenced_errors.*"
- "field:maxAttempts error:should be at least 2");
- VerifyRegexMatch(error, regex);
+ EXPECT_THAT(grpc_error_string(error),
+ ::testing::ContainsRegex(
+ "Service config parsing error.*referenced_errors.*"
+ "Method Params.*referenced_errors.*"
+ "methodConfig.*referenced_errors.*"
+ "Client channel parser.*referenced_errors.*"
+ "retryPolicy.*referenced_errors.*"
+ "field:maxAttempts error:should be at least 2"));
+ GRPC_ERROR_UNREF(error);
}
TEST_F(ClientChannelParserTest, InvalidRetryPolicyInitialBackoff) {
"}";
grpc_error* error = GRPC_ERROR_NONE;
auto svc_cfg = ServiceConfig::Create(nullptr, test_json, &error);
- std::regex regex(
- "Service config parsing error.*referenced_errors.*"
- "Method Params.*referenced_errors.*"
- "methodConfig.*referenced_errors.*"
- "Client channel parser.*referenced_errors.*"
- "retryPolicy.*referenced_errors.*"
- "field:initialBackoff error:Failed to parse");
- VerifyRegexMatch(error, regex);
+ EXPECT_THAT(grpc_error_string(error),
+ ::testing::ContainsRegex(
+ "Service config parsing error.*referenced_errors.*"
+ "Method Params.*referenced_errors.*"
+ "methodConfig.*referenced_errors.*"
+ "Client channel parser.*referenced_errors.*"
+ "retryPolicy.*referenced_errors.*"
+ "field:initialBackoff error:type should be STRING of the "
+ "form given by google.proto.Duration"));
+ GRPC_ERROR_UNREF(error);
}
TEST_F(ClientChannelParserTest, InvalidRetryPolicyMaxBackoff) {
"}";
grpc_error* error = GRPC_ERROR_NONE;
auto svc_cfg = ServiceConfig::Create(nullptr, test_json, &error);
- std::regex regex(
- "Service config parsing error.*referenced_errors.*"
- "Method Params.*referenced_errors.*"
- "methodConfig.*referenced_errors.*"
- "Client channel parser.*referenced_errors.*"
- "retryPolicy.*referenced_errors.*"
- "field:maxBackoff error:failed to parse");
- VerifyRegexMatch(error, regex);
+ EXPECT_THAT(grpc_error_string(error),
+ ::testing::ContainsRegex(
+ "Service config parsing error.*referenced_errors.*"
+ "Method Params.*referenced_errors.*"
+ "methodConfig.*referenced_errors.*"
+ "Client channel parser.*referenced_errors.*"
+ "retryPolicy.*referenced_errors.*"
+ "field:maxBackoff error:type should be STRING of the form "
+ "given by google.proto.Duration"));
+ GRPC_ERROR_UNREF(error);
}
TEST_F(ClientChannelParserTest, InvalidRetryPolicyBackoffMultiplier) {
"}";
grpc_error* error = GRPC_ERROR_NONE;
auto svc_cfg = ServiceConfig::Create(nullptr, test_json, &error);
- std::regex regex(
- "Service config parsing error.*referenced_errors.*"
- "Method Params.*referenced_errors.*"
- "methodConfig.*referenced_errors.*"
- "Client channel parser.*referenced_errors.*"
- "retryPolicy.*referenced_errors.*"
- "field:backoffMultiplier error:should be of type number");
- VerifyRegexMatch(error, regex);
+ EXPECT_THAT(grpc_error_string(error),
+ ::testing::ContainsRegex(
+ "Service config parsing error.*referenced_errors.*"
+ "Method Params.*referenced_errors.*"
+ "methodConfig.*referenced_errors.*"
+ "Client channel parser.*referenced_errors.*"
+ "retryPolicy.*referenced_errors.*"
+ "field:backoffMultiplier error:should be of type number"));
+ GRPC_ERROR_UNREF(error);
}
TEST_F(ClientChannelParserTest, InvalidRetryPolicyRetryableStatusCodes) {
"}";
grpc_error* error = GRPC_ERROR_NONE;
auto svc_cfg = ServiceConfig::Create(nullptr, test_json, &error);
- std::regex regex(
- "Service config parsing error.*referenced_errors.*"
- "Method Params.*referenced_errors.*"
- "methodConfig.*referenced_errors.*"
- "Client channel parser.*referenced_errors.*"
- "retryPolicy.*referenced_errors.*"
- "field:retryableStatusCodes error:should be non-empty");
- VerifyRegexMatch(error, regex);
+ EXPECT_THAT(grpc_error_string(error),
+ ::testing::ContainsRegex(
+ "Service config parsing error.*referenced_errors.*"
+ "Method Params.*referenced_errors.*"
+ "methodConfig.*referenced_errors.*"
+ "Client channel parser.*referenced_errors.*"
+ "retryPolicy.*referenced_errors.*"
+ "field:retryableStatusCodes error:should be non-empty"));
+ GRPC_ERROR_UNREF(error);
}
TEST_F(ClientChannelParserTest, ValidHealthCheck) {
"}";
grpc_error* error = GRPC_ERROR_NONE;
auto svc_cfg = ServiceConfig::Create(nullptr, test_json, &error);
- std::regex regex(
- "JSON parsing failed.*referenced_errors.*"
- "duplicate key \"healthCheckConfig\" at index 104");
- VerifyRegexMatch(error, regex);
+ EXPECT_THAT(grpc_error_string(error),
+ ::testing::ContainsRegex(
+ "JSON parsing failed.*referenced_errors.*"
+ "duplicate key \"healthCheckConfig\" at index 104"));
+ GRPC_ERROR_UNREF(error);
}
class MessageSizeParserTest : public ::testing::Test {
"}";
grpc_error* error = GRPC_ERROR_NONE;
auto svc_cfg = ServiceConfig::Create(nullptr, test_json, &error);
- std::regex regex(
- "Service config parsing error.*referenced_errors.*"
- "Method Params.*referenced_errors.*"
- "methodConfig.*referenced_errors.*"
- "Message size parser.*referenced_errors.*"
- "field:maxRequestMessageBytes error:should be non-negative");
- VerifyRegexMatch(error, regex);
+ EXPECT_THAT(grpc_error_string(error),
+ ::testing::ContainsRegex(
+ "Service config parsing error.*referenced_errors.*"
+ "Method Params.*referenced_errors.*"
+ "methodConfig.*referenced_errors.*"
+ "Message size parser.*referenced_errors.*"
+ "field:maxRequestMessageBytes error:should be non-negative"));
+ GRPC_ERROR_UNREF(error);
}
TEST_F(MessageSizeParserTest, InvalidMaxResponseMessageBytes) {
"}";
grpc_error* error = GRPC_ERROR_NONE;
auto svc_cfg = ServiceConfig::Create(nullptr, test_json, &error);
- std::regex regex(
- "Service config parsing error.*referenced_errors.*"
- "Method Params.*referenced_errors.*"
- "methodConfig.*referenced_errors.*"
- "Message size parser.*referenced_errors.*"
- "field:maxResponseMessageBytes error:should be of type "
- "number");
- VerifyRegexMatch(error, regex);
+ EXPECT_THAT(grpc_error_string(error),
+ ::testing::ContainsRegex(
+ "Service config parsing error.*referenced_errors.*"
+ "Method Params.*referenced_errors.*"
+ "methodConfig.*referenced_errors.*"
+ "Message size parser.*referenced_errors.*"
+ "field:maxResponseMessageBytes error:should be of type "
+ "number"));
+ GRPC_ERROR_UNREF(error);
}
} // namespace testing
} // namespace grpc_core
int main(int argc, char** argv) {
-// Regexes don't work in old libstdc++ versions, so just skip testing in those
-// cases
-#if defined(__GLIBCXX__) && (__GLIBCXX__ <= 20150623)
- gpr_log(GPR_ERROR,
- "Skipping service_config_test since std::regex is not supported on "
- "this system.");
- return 0;
-#endif
::testing::InitGoogleTest(&argc, argv);
grpc::testing::TestEnvironment env(argc, argv);
grpc_init();
+++ /dev/null
-//
-// Copyright 2019 gRPC authors.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-
-#include <regex>
-
-#include <gmock/gmock.h>
-#include <gtest/gtest.h>
-
-#include <grpc/grpc.h>
-#include <grpc/slice.h>
-
-#include "src/core/ext/xds/xds_bootstrap.h"
-#include "test/core/util/test_config.h"
-
-namespace grpc_core {
-namespace testing {
-
-void VerifyRegexMatch(grpc_error* error, const std::regex& e) {
- std::smatch match;
- std::string s(grpc_error_string(error));
- EXPECT_TRUE(std::regex_search(s, match, e));
- GRPC_ERROR_UNREF(error);
-}
-
-TEST(XdsBootstrapTest, Basic) {
- const char* json_str =
- "{"
- " \"xds_servers\": ["
- " {"
- " \"server_uri\": \"fake:///lb\","
- " \"channel_creds\": ["
- " {"
- " \"type\": \"fake\","
- " \"ignore\": 0"
- " }"
- " ],"
- " \"ignore\": 0"
- " },"
- " {"
- " \"server_uri\": \"ignored\","
- " \"channel_creds\": ["
- " {"
- " \"type\": \"ignored\","
- " \"ignore\": 0"
- " }"
- " ],"
- " \"ignore\": 0"
- " }"
- " ],"
- " \"node\": {"
- " \"id\": \"foo\","
- " \"cluster\": \"bar\","
- " \"locality\": {"
- " \"region\": \"milky_way\","
- " \"zone\": \"sol_system\","
- " \"subzone\": \"earth\","
- " \"ignore\": {}"
- " },"
- " \"metadata\": {"
- " \"foo\": 1,"
- " \"bar\": 2"
- " },"
- " \"ignore\": \"whee\""
- " },"
- " \"ignore\": {}"
- "}";
- grpc_error* error = GRPC_ERROR_NONE;
- Json json = Json::Parse(json_str, &error);
- ASSERT_EQ(error, GRPC_ERROR_NONE) << grpc_error_string(error);
- grpc_core::XdsBootstrap bootstrap(std::move(json), &error);
- EXPECT_EQ(error, GRPC_ERROR_NONE) << grpc_error_string(error);
- EXPECT_EQ(bootstrap.server().server_uri, "fake:///lb");
- ASSERT_EQ(bootstrap.server().channel_creds.size(), 1UL);
- EXPECT_EQ(bootstrap.server().channel_creds[0].type, "fake");
- EXPECT_EQ(bootstrap.server().channel_creds[0].config.type(),
- Json::Type::JSON_NULL);
- ASSERT_NE(bootstrap.node(), nullptr);
- EXPECT_EQ(bootstrap.node()->id, "foo");
- EXPECT_EQ(bootstrap.node()->cluster, "bar");
- EXPECT_EQ(bootstrap.node()->locality_region, "milky_way");
- EXPECT_EQ(bootstrap.node()->locality_zone, "sol_system");
- EXPECT_EQ(bootstrap.node()->locality_subzone, "earth");
- ASSERT_EQ(bootstrap.node()->metadata.type(), Json::Type::OBJECT);
- EXPECT_THAT(bootstrap.node()->metadata.object_value(),
- ::testing::ElementsAre(
- ::testing::Pair(
- ::testing::Eq("bar"),
- ::testing::AllOf(
- ::testing::Property(&Json::type, Json::Type::NUMBER),
- ::testing::Property(&Json::string_value, "2"))),
- ::testing::Pair(
- ::testing::Eq("foo"),
- ::testing::AllOf(
- ::testing::Property(&Json::type, Json::Type::NUMBER),
- ::testing::Property(&Json::string_value, "1")))));
-}
-
-TEST(XdsBootstrapTest, ValidWithoutChannelCredsAndNode) {
- const char* json_str =
- "{"
- " \"xds_servers\": ["
- " {"
- " \"server_uri\": \"fake:///lb\""
- " }"
- " ]"
- "}";
- grpc_error* error = GRPC_ERROR_NONE;
- Json json = Json::Parse(json_str, &error);
- ASSERT_EQ(error, GRPC_ERROR_NONE) << grpc_error_string(error);
- grpc_core::XdsBootstrap bootstrap(std::move(json), &error);
- EXPECT_EQ(error, GRPC_ERROR_NONE) << grpc_error_string(error);
- EXPECT_EQ(bootstrap.server().server_uri, "fake:///lb");
- EXPECT_EQ(bootstrap.server().channel_creds.size(), 0UL);
- EXPECT_EQ(bootstrap.node(), nullptr);
-}
-
-TEST(XdsBootstrapTest, MissingXdsServers) {
- grpc_error* error = GRPC_ERROR_NONE;
- Json json = Json::Parse("{}", &error);
- ASSERT_EQ(error, GRPC_ERROR_NONE) << grpc_error_string(error);
- grpc_core::XdsBootstrap bootstrap(std::move(json), &error);
- gpr_log(GPR_ERROR, "%s", grpc_error_string(error));
- ASSERT_TRUE(error != GRPC_ERROR_NONE);
- std::regex e(std::string("\"xds_servers\" field not present"));
- VerifyRegexMatch(error, e);
-}
-
-TEST(XdsBootstrapTest, TopFieldsWrongTypes) {
- const char* json_str =
- "{"
- " \"xds_servers\":1,"
- " \"node\":1"
- "}";
- grpc_error* error = GRPC_ERROR_NONE;
- Json json = Json::Parse(json_str, &error);
- ASSERT_EQ(error, GRPC_ERROR_NONE) << grpc_error_string(error);
- grpc_core::XdsBootstrap bootstrap(std::move(json), &error);
- gpr_log(GPR_ERROR, "%s", grpc_error_string(error));
- ASSERT_TRUE(error != GRPC_ERROR_NONE);
- std::regex e(
- std::string("\"xds_servers\" field is not an array(.*)"
- "\"node\" field is not an object"));
- VerifyRegexMatch(error, e);
-}
-
-TEST(XdsBootstrapTest, XdsServerMissingServerUri) {
- const char* json_str =
- "{"
- " \"xds_servers\":[{}]"
- "}";
- grpc_error* error = GRPC_ERROR_NONE;
- Json json = Json::Parse(json_str, &error);
- ASSERT_EQ(error, GRPC_ERROR_NONE) << grpc_error_string(error);
- grpc_core::XdsBootstrap bootstrap(std::move(json), &error);
- gpr_log(GPR_ERROR, "%s", grpc_error_string(error));
- ASSERT_TRUE(error != GRPC_ERROR_NONE);
- std::regex e(
- std::string("errors parsing \"xds_servers\" array(.*)"
- "errors parsing index 0(.*)"
- "\"server_uri\" field not present"));
- VerifyRegexMatch(error, e);
-}
-
-TEST(XdsBootstrapTest, XdsServerUriAndCredsWrongTypes) {
- const char* json_str =
- "{"
- " \"xds_servers\":["
- " {"
- " \"server_uri\":1,"
- " \"channel_creds\":1"
- " }"
- " ]"
- "}";
- grpc_error* error = GRPC_ERROR_NONE;
- Json json = Json::Parse(json_str, &error);
- ASSERT_EQ(error, GRPC_ERROR_NONE) << grpc_error_string(error);
- grpc_core::XdsBootstrap bootstrap(std::move(json), &error);
- gpr_log(GPR_ERROR, "%s", grpc_error_string(error));
- ASSERT_TRUE(error != GRPC_ERROR_NONE);
- std::regex e(
- std::string("errors parsing \"xds_servers\" array(.*)"
- "errors parsing index 0(.*)"
- "\"server_uri\" field is not a string(.*)"
- "\"channel_creds\" field is not an array"));
- VerifyRegexMatch(error, e);
-}
-
-TEST(XdsBootstrapTest, ChannelCredsFieldsWrongTypes) {
- const char* json_str =
- "{"
- " \"xds_servers\":["
- " {"
- " \"server_uri\":\"foo\","
- " \"channel_creds\":["
- " {"
- " \"type\":0,"
- " \"config\":1"
- " }"
- " ]"
- " }"
- " ]"
- "}";
- grpc_error* error = GRPC_ERROR_NONE;
- Json json = Json::Parse(json_str, &error);
- ASSERT_EQ(error, GRPC_ERROR_NONE) << grpc_error_string(error);
- grpc_core::XdsBootstrap bootstrap(std::move(json), &error);
- gpr_log(GPR_ERROR, "%s", grpc_error_string(error));
- ASSERT_TRUE(error != GRPC_ERROR_NONE);
- std::regex e(
- std::string("errors parsing \"xds_servers\" array(.*)"
- "errors parsing index 0(.*)"
- "errors parsing \"channel_creds\" array(.*)"
- "errors parsing index 0(.*)"
- "\"type\" field is not a string(.*)"
- "\"config\" field is not an object"));
- VerifyRegexMatch(error, e);
-}
-
-TEST(XdsBootstrapTest, NodeFieldsWrongTypes) {
- const char* json_str =
- "{"
- " \"node\":{"
- " \"id\":0,"
- " \"cluster\":0,"
- " \"locality\":0,"
- " \"metadata\":0"
- " }"
- "}";
- grpc_error* error = GRPC_ERROR_NONE;
- Json json = Json::Parse(json_str, &error);
- ASSERT_EQ(error, GRPC_ERROR_NONE) << grpc_error_string(error);
- grpc_core::XdsBootstrap bootstrap(std::move(json), &error);
- gpr_log(GPR_ERROR, "%s", grpc_error_string(error));
- ASSERT_TRUE(error != GRPC_ERROR_NONE);
- std::regex e(
- std::string("errors parsing \"node\" object(.*)"
- "\"id\" field is not a string(.*)"
- "\"cluster\" field is not a string(.*)"
- "\"locality\" field is not an object(.*)"
- "\"metadata\" field is not an object"));
- VerifyRegexMatch(error, e);
-}
-
-TEST(XdsBootstrapTest, LocalityFieldsWrongType) {
- const char* json_str =
- "{"
- " \"node\":{"
- " \"locality\":{"
- " \"region\":0,"
- " \"zone\":0,"
- " \"subzone\":0"
- " }"
- " }"
- "}";
- grpc_error* error = GRPC_ERROR_NONE;
- Json json = Json::Parse(json_str, &error);
- ASSERT_EQ(error, GRPC_ERROR_NONE) << grpc_error_string(error);
- grpc_core::XdsBootstrap bootstrap(std::move(json), &error);
- gpr_log(GPR_ERROR, "%s", grpc_error_string(error));
- ASSERT_TRUE(error != GRPC_ERROR_NONE);
- std::regex e(
- std::string("errors parsing \"node\" object(.*)"
- "errors parsing \"locality\" object(.*)"
- "\"region\" field is not a string(.*)"
- "\"zone\" field is not a string(.*)"
- "\"subzone\" field is not a string"));
- VerifyRegexMatch(error, e);
-}
-
-} // namespace testing
-} // namespace grpc_core
-
-int main(int argc, char** argv) {
-// Regexes don't work in old libstdc++ versions, so just skip testing in those
-// cases
-#if defined(__GLIBCXX__) && (__GLIBCXX__ <= 20150623)
- gpr_log(GPR_ERROR,
- "Skipping xds_bootstrap_test since std::regex is not supported on "
- "this system.");
- return 0;
-#endif
- ::testing::InitGoogleTest(&argc, argv);
- grpc::testing::TestEnvironment env(argc, argv);
- grpc_init();
- int ret = RUN_ALL_TESTS();
- grpc_shutdown();
- return ret;
-}
grpc_slice_buffer_destroy(&input_buffer);
grpc_slice_buffer_destroy(&output_buffer);
- grpc_shutdown_blocking();
+ grpc_shutdown();
return 0;
}
grpc_slice_buffer_destroy(&input_buffer);
grpc_slice_buffer_destroy(&output_buffer);
- grpc_shutdown_blocking();
+ grpc_shutdown();
return 0;
}
grpc_stream_compression_context_destroy(context);
grpc_slice_buffer_destroy(&input_buffer);
grpc_slice_buffer_destroy(&output_buffer);
- grpc_shutdown_blocking();
+ grpc_shutdown();
return 0;
}
grpc_stream_compression_context_destroy(context);
grpc_slice_buffer_destroy(&input_buffer);
grpc_slice_buffer_destroy(&output_buffer);
- grpc_shutdown_blocking();
+ grpc_shutdown();
return 0;
}
grpc_completion_queue_shutdown(cq);
while (grpc_completion_queue_next(cq, gpr_inf_future(GPR_CLOCK_REALTIME),
nullptr)
- .type != GRPC_QUEUE_SHUTDOWN)
- ;
+ .type != GRPC_QUEUE_SHUTDOWN) {
+ }
grpc_completion_queue_destroy(cq);
grpc_call_unref(call);
grpc_channel_destroy(chan);
if (client_host[0] == 'i') {
/* for ipv4:/ipv6: addresses, concatenate the port to each of the parts */
std::vector<absl::string_view> uri_parts =
- absl::StrSplit(client_host, ",", absl::SkipEmpty());
+ absl::StrSplit(client_host, ',', absl::SkipEmpty());
std::vector<std::string> hosts_with_port;
hosts_with_port.reserve(uri_parts.size());
for (const absl::string_view& uri_part : uri_parts) {
for (size_t ind = 0; ind < thd_list.size(); ind++) {
thd_list[ind].Join();
}
+ grpc_tls_certificate_provider_release(client_provider);
+ grpc_tls_certificate_provider_release(server_provider);
}
std::string localaddr;
grpc_tls_version tls_version;
ThreadList thd_list;
+ grpc_tls_certificate_provider* client_provider = nullptr;
+ grpc_tls_certificate_provider* server_provider = nullptr;
};
static grpc_end2end_test_fixture chttp2_create_fixture_secure_fullstack(
memset(&f, 0, sizeof(f));
ffd->localaddr = grpc_core::JoinHostPort("localhost", port);
ffd->tls_version = tls_version;
+ grpc_slice root_slice, cert_slice, key_slice;
+ GPR_ASSERT(GRPC_LOG_IF_ERROR("load_file",
+ grpc_load_file(CA_CERT_PATH, 1, &root_slice)));
+ std::string root_cert =
+ std::string(grpc_core::StringViewFromSlice(root_slice));
+ GPR_ASSERT(GRPC_LOG_IF_ERROR(
+ "load_file", grpc_load_file(SERVER_CERT_PATH, 1, &cert_slice)));
+ std::string identity_cert =
+ std::string(grpc_core::StringViewFromSlice(cert_slice));
+ GPR_ASSERT(GRPC_LOG_IF_ERROR("load_file",
+ grpc_load_file(SERVER_KEY_PATH, 1, &key_slice)));
+ std::string private_key =
+ std::string(grpc_core::StringViewFromSlice(key_slice));
+ grpc_tls_identity_pairs* client_pairs = grpc_tls_identity_pairs_create();
+ grpc_tls_identity_pairs_add_pair(client_pairs, private_key.c_str(),
+ identity_cert.c_str());
+ ffd->client_provider = grpc_tls_certificate_provider_static_data_create(
+ root_cert.c_str(), client_pairs);
+ grpc_tls_identity_pairs* server_pairs = grpc_tls_identity_pairs_create();
+ grpc_tls_identity_pairs_add_pair(server_pairs, private_key.c_str(),
+ identity_cert.c_str());
+ ffd->server_provider = grpc_tls_certificate_provider_static_data_create(
+ root_cert.c_str(), server_pairs);
f.fixture_data = ffd;
f.cq = grpc_completion_queue_create_for_next(nullptr);
f.shutdown_cq = grpc_completion_queue_create_for_pluck(nullptr);
+ grpc_slice_unref(root_slice);
+ grpc_slice_unref(cert_slice);
+ grpc_slice_unref(key_slice);
return f;
}
return 1;
}
-// Synchronous implementation of schedule field in
-// grpc_tls_credential_reload_config instance that is a part of client-side
-// grpc_tls_credentials_options instance.
-static int client_cred_reload_sync(void* /*config_user_data*/,
- grpc_tls_credential_reload_arg* arg) {
- if (!arg->key_materials_config->pem_key_cert_pair_list().empty()) {
- arg->status = GRPC_SSL_CERTIFICATE_CONFIG_RELOAD_UNCHANGED;
- return 0;
- }
- grpc_slice ca_slice, cert_slice, key_slice;
- GPR_ASSERT(GRPC_LOG_IF_ERROR("load_file",
- grpc_load_file(CA_CERT_PATH, 1, &ca_slice)));
- GPR_ASSERT(GRPC_LOG_IF_ERROR(
- "load_file", grpc_load_file(SERVER_CERT_PATH, 1, &cert_slice)));
- GPR_ASSERT(GRPC_LOG_IF_ERROR("load_file",
- grpc_load_file(SERVER_KEY_PATH, 1, &key_slice)));
- const char* ca_cert =
- reinterpret_cast<const char*> GRPC_SLICE_START_PTR(ca_slice);
- const char* server_cert =
- reinterpret_cast<const char*> GRPC_SLICE_START_PTR(cert_slice);
- const char* server_key =
- reinterpret_cast<const char*> GRPC_SLICE_START_PTR(key_slice);
- grpc_ssl_pem_key_cert_pair pem_key_cert_pair = {server_key, server_cert};
- if (arg->key_materials_config->pem_key_cert_pair_list().empty()) {
- const auto* pem_key_cert_pair_ptr = &pem_key_cert_pair;
- grpc_tls_key_materials_config_set_key_materials(
- arg->key_materials_config, ca_cert, &pem_key_cert_pair_ptr, 1);
- }
- // new credential has been reloaded.
- arg->status = GRPC_SSL_CERTIFICATE_CONFIG_RELOAD_NEW;
- grpc_slice_unref(cert_slice);
- grpc_slice_unref(key_slice);
- grpc_slice_unref(ca_slice);
- return 0;
-}
-
-// Synchronous implementation of schedule field in
-// grpc_tls_credential_reload_config instance that is a part of server-side
-// grpc_tls_credentials_options instance.
-static int server_cred_reload_sync(void* /*config_user_data*/,
- grpc_tls_credential_reload_arg* arg) {
- if (!arg->key_materials_config->pem_key_cert_pair_list().empty()) {
- arg->status = GRPC_SSL_CERTIFICATE_CONFIG_RELOAD_UNCHANGED;
- return 0;
- }
- grpc_slice ca_slice, cert_slice, key_slice;
- GPR_ASSERT(GRPC_LOG_IF_ERROR("load_file",
- grpc_load_file(CA_CERT_PATH, 1, &ca_slice)));
- GPR_ASSERT(GRPC_LOG_IF_ERROR(
- "load_file", grpc_load_file(SERVER_CERT_PATH, 1, &cert_slice)));
- GPR_ASSERT(GRPC_LOG_IF_ERROR("load_file",
- grpc_load_file(SERVER_KEY_PATH, 1, &key_slice)));
- const char* ca_cert =
- reinterpret_cast<const char*> GRPC_SLICE_START_PTR(ca_slice);
- const char* server_cert =
- reinterpret_cast<const char*> GRPC_SLICE_START_PTR(cert_slice);
- const char* server_key =
- reinterpret_cast<const char*> GRPC_SLICE_START_PTR(key_slice);
- grpc_ssl_pem_key_cert_pair pem_key_cert_pair = {server_key, server_cert};
- GPR_ASSERT(arg != nullptr);
- GPR_ASSERT(arg->key_materials_config != nullptr);
- GPR_ASSERT(arg->key_materials_config->pem_key_cert_pair_list().data() !=
- nullptr);
- if (arg->key_materials_config->pem_key_cert_pair_list().empty()) {
- const auto* pem_key_cert_pair_ptr = &pem_key_cert_pair;
- grpc_tls_key_materials_config_set_key_materials(
- arg->key_materials_config, ca_cert, &pem_key_cert_pair_ptr, 1);
- }
- // new credential has been reloaded.
- arg->status = GRPC_SSL_CERTIFICATE_CONFIG_RELOAD_NEW;
- grpc_slice_unref(cert_slice);
- grpc_slice_unref(key_slice);
- grpc_slice_unref(ca_slice);
- return 0;
-}
-
// Create a TLS channel credential.
static grpc_channel_credentials* create_tls_channel_credentials(
fullstack_secure_fixture_data* ffd) {
options->set_server_verification_option(GRPC_TLS_SERVER_VERIFICATION);
options->set_min_tls_version(ffd->tls_version);
options->set_max_tls_version(ffd->tls_version);
- /* Set credential reload config. */
- grpc_tls_credential_reload_config* reload_config =
- grpc_tls_credential_reload_config_create(nullptr, client_cred_reload_sync,
- nullptr, nullptr);
- grpc_tls_credentials_options_set_credential_reload_config(options,
- reload_config);
+ // Set credential provider.
+ grpc_tls_credentials_options_set_certificate_provider(options,
+ ffd->client_provider);
+ grpc_tls_credentials_options_watch_root_certs(options);
+ grpc_tls_credentials_options_watch_identity_key_cert_pairs(options);
/* Set server authorization check config. */
grpc_tls_server_authorization_check_config* check_config =
grpc_tls_server_authorization_check_config_create(
options, check_config);
/* Create TLS channel credentials. */
grpc_channel_credentials* creds = grpc_tls_credentials_create(options);
+ grpc_tls_server_authorization_check_config_release(check_config);
return creds;
}
grpc_tls_credentials_options* options = grpc_tls_credentials_options_create();
options->set_min_tls_version(ffd->tls_version);
options->set_max_tls_version(ffd->tls_version);
- /* Set credential reload config. */
- grpc_tls_credential_reload_config* reload_config =
- grpc_tls_credential_reload_config_create(nullptr, server_cred_reload_sync,
- nullptr, nullptr);
- grpc_tls_credentials_options_set_credential_reload_config(options,
- reload_config);
+ // Set credential provider.
+ grpc_tls_credentials_options_set_certificate_provider(options,
+ ffd->server_provider);
+ grpc_tls_credentials_options_watch_root_certs(options);
+ grpc_tls_credentials_options_watch_identity_key_cert_pairs(options);
/* Set client certificate request type. */
grpc_tls_credentials_options_set_cert_request_type(
options, GRPC_SSL_REQUEST_AND_REQUIRE_CLIENT_CERTIFICATE_AND_VERIFY);
static int unique = 1;
-static grpc_end2end_test_fixture chttp2_create_fixture_fullstack(
- grpc_channel_args* /*client_args*/, grpc_channel_args* /*server_args*/) {
+static grpc_end2end_test_fixture chttp2_create_fixture_fullstack_base(
+ std::string addr) {
fullstack_fixture_data* ffd = new fullstack_fixture_data;
- ffd->localaddr = absl::StrFormat("unix:/tmp/grpc_fullstack_test.%d.%d",
- getpid(), unique++);
+ ffd->localaddr = std::move(addr);
grpc_end2end_test_fixture f;
memset(&f, 0, sizeof(f));
return f;
}
+static grpc_end2end_test_fixture chttp2_create_fixture_fullstack(
+ grpc_channel_args* /*client_args*/, grpc_channel_args* /*server_args*/) {
+ const std::string localaddr = absl::StrFormat(
+ "unix:/tmp/grpc_fullstack_test.%d.%d", getpid(), unique++);
+ return chttp2_create_fixture_fullstack_base(localaddr);
+}
+
+static grpc_end2end_test_fixture
+chttp2_create_fixture_fullstack_abstract_namespace(
+ grpc_channel_args* /*client_args*/, grpc_channel_args* /*server_args*/) {
+ const std::string localaddr = absl::StrFormat(
+ "unix-abstract:grpc_fullstack_test.%d.%d", getpid(), unique++);
+ return chttp2_create_fixture_fullstack_base(localaddr);
+}
+
void chttp2_init_client_fullstack(grpc_end2end_test_fixture* f,
grpc_channel_args* client_args) {
fullstack_fixture_data* ffd =
FEATURE_MASK_SUPPORTS_AUTHORITY_HEADER,
nullptr, chttp2_create_fixture_fullstack, chttp2_init_client_fullstack,
chttp2_init_server_fullstack, chttp2_tear_down_fullstack},
+#ifndef GPR_APPLE // Apple doesn't support an abstract socket
+ {"chttp2/fullstack_uds_abstract_namespace",
+ FEATURE_MASK_SUPPORTS_DELAYED_CONNECTION |
+ FEATURE_MASK_SUPPORTS_CLIENT_CHANNEL |
+ FEATURE_MASK_SUPPORTS_AUTHORITY_HEADER,
+ nullptr, chttp2_create_fixture_fullstack_abstract_namespace,
+ chttp2_init_client_fullstack, chttp2_init_server_fullstack,
+ chttp2_tear_down_fullstack},
+#endif
};
int main(int argc, char** argv) {
*/
static bool fail_server_auth_check(grpc_channel_args* server_args) {
size_t i;
- if (server_args == nullptr) return 0;
+ if (server_args == nullptr) return false;
for (i = 0; i < server_args->num_args; i++) {
if (strcmp(server_args->args[i].key, FAIL_AUTH_CHECK_SERVER_ARG_NAME) ==
0) {
mock_endpoint, grpc_slice_from_copied_buffer((const char*)data, size));
grpc_event ev;
- while (1) {
+ while (true) {
grpc_core::ExecCtx::Get()->Flush();
ev = grpc_completion_queue_next(cq, gpr_inf_past(GPR_CLOCK_REALTIME),
nullptr);
grpc_byte_buffer_destroy(response_payload_recv);
}
}
- grpc_shutdown_blocking();
+ grpc_shutdown();
return 0;
}
requested_calls++;
grpc_event ev;
- while (1) {
+ while (true) {
grpc_core::ExecCtx::Get()->Flush();
ev = grpc_completion_queue_next(cq, gpr_inf_past(GPR_CLOCK_REALTIME),
nullptr);
# generate_tests.bzl is now the source of truth for end2end tests.
# The .bzl file is basically a python file and we can "execute" it
# to get access to the variables it defines.
-execfile('test/core/end2end/generate_tests.bzl')
+exec(
+ compile(
+ open('test/core/end2end/generate_tests.bzl', "rb").read(),
+ 'test/core/end2end/generate_tests.bzl', 'exec'))
def main():
grpc_completion_queue_shutdown(g_state.cq);
while (grpc_completion_queue_next(g_state.cq,
gpr_inf_future(GPR_CLOCK_REALTIME), nullptr)
- .type != GRPC_QUEUE_SHUTDOWN)
- ;
+ .type != GRPC_QUEUE_SHUTDOWN) {
+ }
grpc_completion_queue_destroy(g_state.cq);
}
grpc_completion_queue_shutdown(cq);
while (grpc_completion_queue_next(cq, gpr_inf_future(GPR_CLOCK_REALTIME),
nullptr)
- .type != GRPC_QUEUE_SHUTDOWN)
- ;
+ .type != GRPC_QUEUE_SHUTDOWN) {
+ }
grpc_completion_queue_destroy(cq);
grpc_call_unref(call);
grpc_channel_destroy(chan);
#include <grpc/support/sync.h>
#include <grpc/support/time.h>
+#include "src/core/lib/channel/channel_args.h"
#include "src/core/lib/gpr/useful.h"
#include "src/core/lib/surface/channel.h"
#include "test/core/end2end/cq_verifier.h"
static void test_bad_ping(grpc_end2end_test_config config) {
grpc_end2end_test_fixture f = config.create_fixture(nullptr, nullptr);
cq_verifier* cqv = cq_verifier_create(f.cq);
- grpc_arg client_a[3];
- client_a[0].type = GRPC_ARG_INTEGER;
- client_a[0].key =
- const_cast<char*>(GRPC_ARG_HTTP2_MIN_SENT_PING_INTERVAL_WITHOUT_DATA_MS);
- client_a[0].value.integer = 10;
- client_a[1].type = GRPC_ARG_INTEGER;
- client_a[1].key = const_cast<char*>(GRPC_ARG_HTTP2_MAX_PINGS_WITHOUT_DATA);
- client_a[1].value.integer = 0;
- client_a[2].type = GRPC_ARG_INTEGER;
- client_a[2].key = const_cast<char*>(GRPC_ARG_HTTP2_BDP_PROBE);
- client_a[2].value.integer = 0;
- grpc_arg server_a[3];
- server_a[0].type = GRPC_ARG_INTEGER;
- server_a[0].key =
- const_cast<char*>(GRPC_ARG_HTTP2_MIN_RECV_PING_INTERVAL_WITHOUT_DATA_MS);
- server_a[0].value.integer = 300000 /* 5 minutes */;
- server_a[1].type = GRPC_ARG_INTEGER;
- server_a[1].key = const_cast<char*>(GRPC_ARG_HTTP2_MAX_PING_STRIKES);
- server_a[1].value.integer = MAX_PING_STRIKES;
- server_a[2].type = GRPC_ARG_INTEGER;
- server_a[2].key = const_cast<char*>(GRPC_ARG_HTTP2_BDP_PROBE);
- server_a[2].value.integer = 0;
+ grpc_arg client_a[] = {
+ grpc_channel_arg_integer_create(
+ const_cast<char*>(GRPC_ARG_HTTP2_MAX_PINGS_WITHOUT_DATA), 0),
+ grpc_channel_arg_integer_create(
+ const_cast<char*>(GRPC_ARG_HTTP2_BDP_PROBE), 0)};
+ grpc_arg server_a[] = {
+ grpc_channel_arg_integer_create(
+ const_cast<char*>(
+ GRPC_ARG_HTTP2_MIN_RECV_PING_INTERVAL_WITHOUT_DATA_MS),
+ 300000 /* 5 minutes */),
+ grpc_channel_arg_integer_create(
+ const_cast<char*>(GRPC_ARG_HTTP2_MAX_PING_STRIKES), MAX_PING_STRIKES),
+ grpc_channel_arg_integer_create(
+ const_cast<char*>(GRPC_ARG_HTTP2_BDP_PROBE), 0)};
grpc_channel_args client_args = {GPR_ARRAY_SIZE(client_a), client_a};
grpc_channel_args server_args = {GPR_ARRAY_SIZE(server_a), server_a};
static void test_pings_without_data(grpc_end2end_test_config config) {
grpc_end2end_test_fixture f = config.create_fixture(nullptr, nullptr);
cq_verifier* cqv = cq_verifier_create(f.cq);
- grpc_arg client_a[3];
- client_a[0].type = GRPC_ARG_INTEGER;
- client_a[0].key =
- const_cast<char*>(GRPC_ARG_HTTP2_MIN_SENT_PING_INTERVAL_WITHOUT_DATA_MS);
- client_a[0].value.integer = 10;
// Only allow MAX_PING_STRIKES pings without data (DATA/HEADERS/WINDOW_UPDATE)
// so that the transport will throttle the excess pings.
- client_a[1].type = GRPC_ARG_INTEGER;
- client_a[1].key = const_cast<char*>(GRPC_ARG_HTTP2_MAX_PINGS_WITHOUT_DATA);
- client_a[1].value.integer = MAX_PING_STRIKES;
- client_a[2].type = GRPC_ARG_INTEGER;
- client_a[2].key = const_cast<char*>(GRPC_ARG_HTTP2_BDP_PROBE);
- client_a[2].value.integer = 0;
- grpc_arg server_a[3];
- server_a[0].type = GRPC_ARG_INTEGER;
- server_a[0].key =
- const_cast<char*>(GRPC_ARG_HTTP2_MIN_RECV_PING_INTERVAL_WITHOUT_DATA_MS);
- server_a[0].value.integer = 300000 /* 5 minutes */;
- server_a[1].type = GRPC_ARG_INTEGER;
- server_a[1].key = const_cast<char*>(GRPC_ARG_HTTP2_MAX_PING_STRIKES);
- server_a[1].value.integer = MAX_PING_STRIKES;
- server_a[2].type = GRPC_ARG_INTEGER;
- server_a[2].key = const_cast<char*>(GRPC_ARG_HTTP2_BDP_PROBE);
- server_a[2].value.integer = 0;
+ grpc_arg client_a[] = {
+ grpc_channel_arg_integer_create(
+ const_cast<char*>(GRPC_ARG_HTTP2_MAX_PINGS_WITHOUT_DATA),
+ MAX_PING_STRIKES),
+ grpc_channel_arg_integer_create(
+ const_cast<char*>(GRPC_ARG_HTTP2_BDP_PROBE), 0)};
+ grpc_arg server_a[] = {
+ grpc_channel_arg_integer_create(
+ const_cast<char*>(
+ GRPC_ARG_HTTP2_MIN_RECV_PING_INTERVAL_WITHOUT_DATA_MS),
+ 300000 /* 5 minutes */),
+ grpc_channel_arg_integer_create(
+ const_cast<char*>(GRPC_ARG_HTTP2_MAX_PING_STRIKES), MAX_PING_STRIKES),
+ grpc_channel_arg_integer_create(
+ const_cast<char*>(GRPC_ARG_HTTP2_BDP_PROBE), 0)};
grpc_channel_args client_args = {GPR_ARRAY_SIZE(client_a), client_a};
grpc_channel_args server_args = {GPR_ARRAY_SIZE(server_a), server_a};
#ifndef GRPC_TEST_CORE_END2END_TESTS_CANCEL_TEST_HELPERS_H
#define GRPC_TEST_CORE_END2END_TESTS_CANCEL_TEST_HELPERS_H
+#include <grpc/grpc.h>
+
typedef struct {
const char* name;
grpc_call_error (*initiate_cancel)(grpc_call* call, void* reserved);
#include <grpc/support/sync.h>
#include <grpc/support/time.h>
+#include "src/core/lib/channel/channel_args.h"
#include "src/core/lib/gpr/useful.h"
#include "src/core/lib/surface/channel.h"
#include "test/core/end2end/cq_verifier.h"
grpc_connectivity_state state = GRPC_CHANNEL_IDLE;
int i;
- grpc_arg client_a[3];
- client_a[0].type = GRPC_ARG_INTEGER;
- client_a[0].key =
- const_cast<char*>(GRPC_ARG_HTTP2_MIN_SENT_PING_INTERVAL_WITHOUT_DATA_MS);
- client_a[0].value.integer = 10;
- client_a[1].type = GRPC_ARG_INTEGER;
- client_a[1].key = const_cast<char*>(GRPC_ARG_HTTP2_MAX_PINGS_WITHOUT_DATA);
- client_a[1].value.integer = 0;
- client_a[2].type = GRPC_ARG_INTEGER;
- client_a[2].key = const_cast<char*>(GRPC_ARG_KEEPALIVE_PERMIT_WITHOUT_CALLS);
- client_a[2].value.integer = 1;
- grpc_arg server_a[2];
- server_a[0].type = GRPC_ARG_INTEGER;
- server_a[0].key =
- const_cast<char*>(GRPC_ARG_HTTP2_MIN_RECV_PING_INTERVAL_WITHOUT_DATA_MS);
- server_a[0].value.integer = 0;
- server_a[1].type = GRPC_ARG_INTEGER;
- server_a[1].key = const_cast<char*>(GRPC_ARG_KEEPALIVE_PERMIT_WITHOUT_CALLS);
- server_a[1].value.integer = 1;
+ grpc_arg client_a[] = {
+ grpc_channel_arg_integer_create(
+ const_cast<char*>(GRPC_ARG_HTTP2_MAX_PINGS_WITHOUT_DATA), 0),
+ grpc_channel_arg_integer_create(
+ const_cast<char*>(GRPC_ARG_KEEPALIVE_PERMIT_WITHOUT_CALLS), 1)};
+ grpc_arg server_a[] = {
+ grpc_channel_arg_integer_create(
+ const_cast<char*>(
+ GRPC_ARG_HTTP2_MIN_RECV_PING_INTERVAL_WITHOUT_DATA_MS),
+ 0),
+ grpc_channel_arg_integer_create(
+ const_cast<char*>(GRPC_ARG_KEEPALIVE_PERMIT_WITHOUT_CALLS), 1)};
grpc_channel_args client_args = {GPR_ARRAY_SIZE(client_a), client_a};
grpc_channel_args server_args = {GPR_ARRAY_SIZE(server_a), server_a};
grpc_package(name = "test/core/gprpp")
grpc_cc_test(
+ name = "examine_stack_test",
+ srcs = ["examine_stack_test.cc"],
+ external_deps = [
+ "absl/debugging:stacktrace",
+ "absl/debugging:symbolize",
+ "gtest",
+ ],
+ language = "C++",
+ # TODO(https://github.com/grpc/grpc/issues/24627): Disable this on Windows
+ tags = ["no_windows"],
+ uses_polling = False,
+ deps = [
+ "//:gpr",
+ "//test/core/util:grpc_test_util",
+ ],
+)
+
+grpc_cc_test(
name = "fork_test",
srcs = ["fork_test.cc"],
language = "C++",
"//test/core/util:grpc_test_util",
],
)
+
+grpc_cc_test(
+ name = "stat_test",
+ srcs = ["stat_test.cc"],
+ external_deps = [
+ "gtest",
+ ],
+ language = "C++",
+ uses_polling = False,
+ deps = [
+ "//:gpr",
+ "//:grpc",
+ "//test/core/util:grpc_test_util",
+ ],
+)
class Foo : public DualRefCounted<Foo> {
public:
Foo() = default;
- ~Foo() { GPR_ASSERT(shutting_down_); }
+ ~Foo() override { GPR_ASSERT(shutting_down_); }
void Orphan() override { shutting_down_ = true; }
foo->WeakUnref();
}
-// Note: We use DebugOnlyTraceFlag instead of TraceFlag to ensure that
-// things build properly in both debug and non-debug cases.
-DebugOnlyTraceFlag foo_tracer(true, "foo");
-
class FooWithTracing : public DualRefCounted<FooWithTracing> {
public:
- FooWithTracing() : DualRefCounted(&foo_tracer) {}
- ~FooWithTracing() { GPR_ASSERT(shutting_down_); }
+ FooWithTracing() : DualRefCounted("FooWithTracing") {}
+ ~FooWithTracing() override { GPR_ASSERT(shutting_down_); }
void Orphan() override { shutting_down_ = true; }
--- /dev/null
+/*
+ *
+ * Copyright 2020 gRPC authors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+#include "src/core/lib/gprpp/examine_stack.h"
+
+#include <stdio.h>
+#include <string.h>
+
+#include <gtest/gtest.h>
+
+#include "absl/debugging/stacktrace.h"
+#include "absl/debugging/symbolize.h"
+
+#include <grpc/support/log.h>
+
+namespace {
+
+std::string SimpleCurrentStackTraceProvider() { return "stacktrace"; }
+
+std::string AbseilCurrentStackTraceProvider() {
+ std::string result = "Stack trace:\n";
+ constexpr int kNumStackFrames = 10;
+ void* stack[kNumStackFrames];
+ int frame_sizes[kNumStackFrames];
+ int depth = absl::GetStackFrames(stack, frame_sizes, kNumStackFrames, 1);
+ for (int i = 0; i < depth; i++) {
+ char tmp[1024];
+ const char* symbol = "(unknown)";
+ if (absl::Symbolize(stack[i], tmp, sizeof(tmp))) {
+ symbol = tmp;
+ }
+ result += symbol;
+ result += +"\n";
+ }
+ return result;
+}
+
+} // namespace
+
+TEST(ExamineStackTest, NullStackProvider) {
+ grpc_core::SetCurrentStackTraceProvider(nullptr);
+ EXPECT_EQ(grpc_core::GetCurrentStackTraceProvider(), nullptr);
+ EXPECT_EQ(grpc_core::GetCurrentStackTrace(), absl::nullopt);
+}
+
+TEST(ExamineStackTest, SimpleStackProvider) {
+ grpc_core::SetCurrentStackTraceProvider(&SimpleCurrentStackTraceProvider);
+ EXPECT_NE(grpc_core::GetCurrentStackTraceProvider(), nullptr);
+ EXPECT_EQ(grpc_core::GetCurrentStackTrace(), "stacktrace");
+}
+
+TEST(ExamineStackTest, AbseilStackProvider) {
+ grpc_core::SetCurrentStackTraceProvider(&AbseilCurrentStackTraceProvider);
+ EXPECT_NE(grpc_core::GetCurrentStackTraceProvider(), nullptr);
+ const absl::optional<std::string> stack_trace =
+ grpc_core::GetCurrentStackTrace();
+ EXPECT_NE(stack_trace, absl::nullopt);
+ gpr_log(GPR_INFO, "stack_trace=%s", stack_trace->c_str());
+#if !defined(NDEBUG) && !defined(GPR_MUSL_LIBC_COMPAT)
+ EXPECT_TRUE(stack_trace->find("GetCurrentStackTrace") != -1);
+#endif
+}
+
+int main(int argc, char** argv) {
+ absl::InitializeSymbolizer(argv[0]);
+ ::testing::InitGoogleTest(&argc, argv);
+ int ret = RUN_ALL_TESTS();
+ return ret;
+}
class B : public A {
public:
B() {}
- ~B() {}
+ ~B() override {}
const char* foo() override { return "B_foo"; }
char get_junk() { return junk[0]; }
class C : public B {
public:
C() {}
- ~C() {}
- virtual const char* bar() { return "C_bar"; }
+ ~C() override {}
+ const char* bar() override { return "C_bar"; }
char get_more_junk() { return more_junk[0]; }
private:
class D : public A {
public:
- virtual const char* bar() { return "D_bar"; }
+ const char* bar() override { return "D_bar"; }
};
static void basic_test() {
bar->FinishWork();
}
-// Note: We use DebugOnlyTraceFlag instead of TraceFlag to ensure that
-// things build properly in both debug and non-debug cases.
-DebugOnlyTraceFlag baz_tracer(true, "baz");
-
class Baz : public InternallyRefCounted<Baz> {
public:
Baz() : Baz(0) {}
- explicit Baz(int value)
- : InternallyRefCounted<Baz>(&baz_tracer), value_(value) {}
+ explicit Baz(int value) : InternallyRefCounted<Baz>("Baz"), value_(value) {}
void Orphan() override { Unref(); }
int value() const { return value_; }
TEST(RefCountedPtr, MoveConstructor) {
RefCountedPtr<Foo> foo(new Foo());
RefCountedPtr<Foo> foo2(std::move(foo));
- EXPECT_EQ(nullptr, foo.get()); // NOLINT
+ // NOLINTNEXTLINE(bugprone-use-after-move)
+ EXPECT_EQ(nullptr, foo.get());
EXPECT_NE(nullptr, foo2.get());
}
TEST(RefCountedPtr, MoveAssignment) {
RefCountedPtr<Foo> foo(new Foo());
RefCountedPtr<Foo> foo2 = std::move(foo);
- EXPECT_EQ(nullptr, foo.get()); // NOLINT
+ // NOLINTNEXTLINE(bugprone-use-after-move)
+ EXPECT_EQ(nullptr, foo.get());
EXPECT_NE(nullptr, foo2.get());
}
RefCountedPtr<Foo> foo(new Foo());
{
RefCountedPtr<Foo> foo2(std::move(foo));
+ // NOLINTNEXTLINE(bugprone-use-after-move)
EXPECT_EQ(nullptr, foo.get());
EXPECT_NE(nullptr, foo2.get());
}
EXPECT_EQ(3, foo->value());
}
-TraceFlag foo_tracer(true, "foo");
-
class FooWithTracing : public RefCounted<FooWithTracing> {
public:
- FooWithTracing() : RefCounted(&foo_tracer) {}
+ FooWithTracing() : RefCounted("FooWithTracing") {}
};
TEST(RefCountedPtr, RefCountedWithTracing) {
explicit Bar(int value) : value_(value) {}
- ~Bar() { GPR_ASSERT(shutting_down_); }
+ ~Bar() override { GPR_ASSERT(shutting_down_); }
void Orphan() override { shutting_down_ = true; }
WeakRefCountedPtr<Bar> bar = bar_strong->WeakRef();
{
WeakRefCountedPtr<Bar> bar2(std::move(bar));
+ // NOLINTNEXTLINE(bugprone-use-after-move)
EXPECT_EQ(nullptr, bar.get());
EXPECT_NE(nullptr, bar2.get());
}
EXPECT_EQ(bar_strong.get(), bar3.get());
}
-TraceFlag bar_tracer(true, "bar");
-
class BarWithTracing : public DualRefCounted<BarWithTracing> {
public:
- BarWithTracing() : DualRefCounted(&bar_tracer) {}
+ BarWithTracing() : DualRefCounted("BarWithTracing") {}
- ~BarWithTracing() { GPR_ASSERT(shutting_down_); }
+ ~BarWithTracing() override { GPR_ASSERT(shutting_down_); }
void Orphan() override { shutting_down_ = true; }
public:
WeakBaseClass() {}
- ~WeakBaseClass() { GPR_ASSERT(shutting_down_); }
+ ~WeakBaseClass() override { GPR_ASSERT(shutting_down_); }
void Orphan() override { shutting_down_ = true; }
foo->Unref();
}
-// Note: We use DebugOnlyTraceFlag instead of TraceFlag to ensure that
-// things build properly in both debug and non-debug cases.
-DebugOnlyTraceFlag foo_tracer(true, "foo");
-
class FooWithTracing : public RefCounted<FooWithTracing> {
public:
- FooWithTracing() : RefCounted(&foo_tracer) {}
+ FooWithTracing() : RefCounted("Foo") {}
};
TEST(RefCountedWithTracing, Basic) {
class FooNonPolymorphicWithTracing
: public RefCounted<FooNonPolymorphicWithTracing, NonPolymorphicRefCount> {
public:
- FooNonPolymorphicWithTracing() : RefCounted(&foo_tracer) {}
+ FooNonPolymorphicWithTracing() : RefCounted("FooNonPolymorphicWithTracing") {}
};
TEST(RefCountedNonPolymorphicWithTracing, Basic) {
--- /dev/null
+//
+// Copyright 2020 gRPC authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+#include <stdio.h>
+#include <string.h>
+
+#include <gmock/gmock.h>
+#include <gtest/gtest.h>
+
+#include <grpc/grpc.h>
+#include <grpc/slice.h>
+#include <grpc/support/alloc.h>
+#include <grpc/support/log.h>
+
+#include "src/core/lib/gpr/string.h"
+#include "src/core/lib/gpr/tmpfile.h"
+#include "src/core/lib/gprpp/stat.h"
+#include "src/core/lib/iomgr/load_file.h"
+#include "test/core/util/test_config.h"
+
+namespace grpc_core {
+namespace testing {
+namespace {
+
+TEST(STAT, GetTimestampOnTmpFile) {
+ // Create a temporary empty file.
+ FILE* tmp = nullptr;
+ char* tmp_name;
+ tmp = gpr_tmpfile("prefix", &tmp_name);
+ ASSERT_NE(tmp_name, nullptr);
+ ASSERT_NE(tmp, nullptr);
+ fclose(tmp);
+ // Check the last modified date is correctly set.
+ time_t timestamp = 0;
+ absl::Status status =
+ grpc_core::GetFileModificationTime(tmp_name, ×tamp);
+ EXPECT_EQ(status.code(), absl::StatusCode::kOk);
+ EXPECT_GT(timestamp, 0);
+ // Clean up.
+ remove(tmp_name);
+ gpr_free(tmp_name);
+}
+
+TEST(STAT, GetTimestampOnFailure) {
+ time_t timestamp = 0;
+ absl::Status status =
+ grpc_core::GetFileModificationTime("/DOES_NOT_EXIST", ×tamp);
+ EXPECT_EQ(status.code(), absl::StatusCode::kInternal);
+ // Check the last modified date is not set.
+ EXPECT_EQ(timestamp, 0);
+}
+
+} // namespace
+} // namespace testing
+} // namespace grpc_core
+
+int main(int argc, char** argv) {
+ grpc::testing::TestEnvironment env(argc, argv);
+ ::testing::InitGoogleTest(&argc, argv);
+ return RUN_ALL_TESTS();
+}
// Wait until the client drops its connection.
char buf;
- while (SSL_read(ssl, &buf, sizeof(buf)) > 0)
- ;
+ while (SSL_read(ssl, &buf, sizeof(buf)) > 0) {
+ }
SSL_free(ssl);
close(client);
class ReadAheadHandshaker : public Handshaker {
public:
- virtual ~ReadAheadHandshaker() {}
+ ~ReadAheadHandshaker() override {}
const char* name() const override { return "read_ahead"; }
void Shutdown(grpc_error* /*why*/) override {}
void DoHandshake(grpc_tcp_server_acceptor* /*acceptor*/,
absl::make_unique<ReadAheadHandshakerFactory>());
const char* full_alpn_list[] = {"grpc-exp", "h2"};
GPR_ASSERT(server_ssl_test(full_alpn_list, 2, "grpc-exp"));
- grpc_shutdown_blocking();
+ grpc_shutdown();
return 0;
}
ssize_t read_total = 0;
if (error != GRPC_ERROR_NONE) {
- session_shutdown_cb(arg, 1);
+ session_shutdown_cb(arg, true);
return;
}
It is possible to read nothing due to spurious edge event or data has
been drained, In such a case, read() returns -1 and set errno to EAGAIN. */
if (read_once == 0) {
- session_shutdown_cb(arg, 1);
+ session_shutdown_cb(arg, true);
} else if (read_once == -1) {
if (errno == EAGAIN) {
/* An edge triggered event is cached in the kernel until next poll.
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
- IPHONEOS_DEPLOYMENT_TARGET = 11.2;
+ IPHONEOS_DEPLOYMENT_TARGET = 9.0;
MTL_ENABLE_DEBUG_INFO = YES;
ONLY_ACTIVE_ARCH = YES;
SDKROOT = iphoneos;
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
- IPHONEOS_DEPLOYMENT_TARGET = 11.2;
+ IPHONEOS_DEPLOYMENT_TARGET = 9.0;
MTL_ENABLE_DEBUG_INFO = NO;
SDKROOT = iphoneos;
VALIDATE_PRODUCT = YES;
source 'https://github.com/CocoaPods/Specs.git'
-platform :ios, '8.0'
+platform :ios, '9.0'
install! 'cocoapods', :deterministic_uuids => false
# Install the dependencies in the main target plus all test targets.
target 'CFStreamTests' do
- pod 'gRPC-Core/CFStream-Implementation', :path => GRPC_LOCAL_SRC
+ pod 'gRPC-Core', :path => GRPC_LOCAL_SRC
pod 'BoringSSL-GRPC', :podspec => "#{GRPC_LOCAL_SRC}/src/objective-c", :inhibit_warnings => true
end
echo "TIME: $(date)"
pod install
+# ios-test-cfstream-tests flakes sometimes because of missing files in gRPC-Core,
+# add some log to help find out the root cause.
+# TODO(yulinliang): Delete it after solving the issue.
+if [ -d "./Pods/Headers/Public/gRPC-Core/grpc/impl/codegen" ]
+then
+ echo "grpc/impl/codegen/ has been imported."
+ number_of_files=$(find Pods/Headers/Public/gRPC-Core/grpc/impl/codegen -name "*.h" | wc -l)
+ echo "The number of files in Pods/Headers/Public/gRPC-Core/grpc/impl/codegen/ is $number_of_files"
+else
+ echo "Error: grpc/impl/codegen/ hasn't been imported."
+fi
+
int count = 0;
WorkItem* item;
- while ((item = static_cast<WorkItem*>(queue_->Get())) != nullptr) {
+ while ((item = static_cast<WorkItem*>(queue_->Get(nullptr))) != nullptr) {
count++;
GPR_ASSERT(!item->done);
item->done = true;
}
GPR_ASSERT(large_queue.count() == TEST_NUM_ITEMS);
for (int i = 0; i < TEST_NUM_ITEMS; ++i) {
- WorkItem* item = static_cast<WorkItem*>(large_queue.Get());
+ WorkItem* item = static_cast<WorkItem*>(large_queue.Get(nullptr));
GPR_ASSERT(i == item->index);
delete item;
}
// Queue should not have been expanded at this time.
GPR_ASSERT(queue.num_nodes() == queue.init_num_nodes());
for (int i = 0; i < queue.init_num_nodes(); ++i) {
- WorkItem* item = static_cast<WorkItem*>(queue.Get());
+ WorkItem* item = static_cast<WorkItem*>(queue.Get(nullptr));
queue.Put(item);
}
GPR_ASSERT(queue.num_nodes() == queue.init_num_nodes());
for (int i = 0; i < queue.init_num_nodes(); ++i) {
- WorkItem* item = static_cast<WorkItem*>(queue.Get());
+ WorkItem* item = static_cast<WorkItem*>(queue.Get(nullptr));
delete item;
}
// Queue never shrinks even it is empty.
// Queue should have been expanded once.
GPR_ASSERT(queue.num_nodes() == queue.init_num_nodes() * 2);
for (int i = 0; i < queue.init_num_nodes(); ++i) {
- WorkItem* item = static_cast<WorkItem*>(queue.Get());
+ WorkItem* item = static_cast<WorkItem*>(queue.Get(nullptr));
delete item;
}
GPR_ASSERT(queue.count() == queue.init_num_nodes());
// Queue should have been expanded twice.
GPR_ASSERT(queue.num_nodes() == queue.init_num_nodes() * 4);
for (int i = 0; i < queue.init_num_nodes() * 2 + 1; ++i) {
- WorkItem* item = static_cast<WorkItem*>(queue.Get());
+ WorkItem* item = static_cast<WorkItem*>(queue.Get(nullptr));
delete item;
}
GPR_ASSERT(queue.count() == 0);
static void test_grpc_parse_unix(const char* uri_text, const char* pathname) {
grpc_core::ExecCtx exec_ctx;
- grpc_uri* uri = grpc_uri_parse(uri_text, 0);
+ grpc_uri* uri = grpc_uri_parse(uri_text, false);
grpc_resolved_address addr;
- GPR_ASSERT(1 == grpc_parse_unix(uri, &addr));
+ GPR_ASSERT(1 == grpc_parse_uri(uri, &addr));
struct sockaddr_un* addr_un =
reinterpret_cast<struct sockaddr_un*>(addr.addr);
GPR_ASSERT(AF_UNIX == addr_un->sun_family);
grpc_uri_destroy(uri);
}
+static void test_grpc_parse_unix_abstract(const char* uri_text,
+ const char* pathname) {
+ grpc_core::ExecCtx exec_ctx;
+ grpc_uri* uri = grpc_uri_parse(uri_text, false);
+ grpc_resolved_address addr;
+
+ GPR_ASSERT(1 == grpc_parse_uri(uri, &addr));
+ struct sockaddr_un* addr_un =
+ reinterpret_cast<struct sockaddr_un*>(addr.addr);
+ GPR_ASSERT(AF_UNIX == addr_un->sun_family);
+ GPR_ASSERT('\0' == addr_un->sun_path[0]);
+ GPR_ASSERT(0 == strncmp(addr_un->sun_path + 1, pathname, strlen(pathname)));
+
+ grpc_uri_destroy(uri);
+}
+
#else /* GRPC_HAVE_UNIX_SOCKET */
static void test_grpc_parse_unix(const char* uri_text, const char* pathname) {}
+static void test_grpc_parse_unix_abstract(const char* uri_text,
+ const char* pathname) {}
#endif /* GRPC_HAVE_UNIX_SOCKET */
static void test_grpc_parse_ipv4(const char* uri_text, const char* host,
unsigned short port) {
grpc_core::ExecCtx exec_ctx;
- grpc_uri* uri = grpc_uri_parse(uri_text, 0);
+ grpc_uri* uri = grpc_uri_parse(uri_text, false);
grpc_resolved_address addr;
char ntop_buf[GRPC_INET_ADDRSTRLEN];
static void test_grpc_parse_ipv6(const char* uri_text, const char* host,
unsigned short port, uint32_t scope_id) {
grpc_core::ExecCtx exec_ctx;
- grpc_uri* uri = grpc_uri_parse(uri_text, 0);
+ grpc_uri* uri = grpc_uri_parse(uri_text, false);
grpc_resolved_address addr;
char ntop_buf[GRPC_INET6_ADDRSTRLEN];
/* Test parsing invalid ipv6 addresses (valid uri_text but invalid ipv6 addr) */
static void test_grpc_parse_ipv6_invalid(const char* uri_text) {
grpc_core::ExecCtx exec_ctx;
- grpc_uri* uri = grpc_uri_parse(uri_text, 0);
+ grpc_uri* uri = grpc_uri_parse(uri_text, false);
grpc_resolved_address addr;
GPR_ASSERT(!grpc_parse_ipv6(uri, &addr));
grpc_uri_destroy(uri);
grpc_init();
test_grpc_parse_unix("unix:/path/name", "/path/name");
+ test_grpc_parse_unix_abstract("unix-abstract:foobar", "foobar");
test_grpc_parse_ipv4("ipv4:192.0.2.1:12345", "192.0.2.1", 12345);
test_grpc_parse_ipv6("ipv6:[2001:db8::1]:12345", "2001:db8::1", 12345, 0);
test_grpc_parse_ipv6("ipv6:[2001:db8::1%252]:12345", "2001:db8::1", 12345, 2);
const char* target, const struct sockaddr_in6 result_from_getaddrinfo) {
// Get the sockaddr that gRPC's ipv6 resolver resolves this too.
grpc_core::ExecCtx exec_ctx;
- grpc_uri* uri = grpc_uri_parse(target, 0);
+ grpc_uri* uri = grpc_uri_parse(target, false);
grpc_resolved_address addr;
GPR_ASSERT(1 == grpc_parse_ipv6(uri, &addr));
grpc_sockaddr_in6* result_from_grpc_parser =
}
struct sockaddr_in6 resolve_with_gettaddrinfo(const char* uri_text) {
- grpc_uri* uri = grpc_uri_parse(uri_text, 0);
+ grpc_uri* uri = grpc_uri_parse(uri_text, false);
std::string host;
std::string port;
grpc_core::SplitHostPort(uri->path, &host, &port);
gpr_mu_unlock(args->mu);
}
-static void test_unix_socket(void) {
- grpc_core::ExecCtx exec_ctx;
- args_struct args;
- args_init(&args);
- poll_pollset_until_request_done(&args);
- grpc_resolve_address(
- "unix:/path/name", nullptr, args.pollset_set,
- GRPC_CLOSURE_CREATE(must_succeed, &args, grpc_schedule_on_exec_ctx),
- &args.addrs);
- args_finish(&args);
-}
-
-static void test_unix_socket_path_name_too_long(void) {
- grpc_core::ExecCtx exec_ctx;
- args_struct args;
- args_init(&args);
- const char prefix[] = "unix:/path/name";
- size_t path_name_length =
- GPR_ARRAY_SIZE(((struct sockaddr_un*)nullptr)->sun_path) + 6;
- char* path_name =
- static_cast<char*>(gpr_malloc(sizeof(char) * path_name_length));
- memset(path_name, 'a', path_name_length);
- memcpy(path_name, prefix, strlen(prefix) - 1);
- path_name[path_name_length - 1] = '\0';
-
- poll_pollset_until_request_done(&args);
- grpc_resolve_address(
- path_name, nullptr, args.pollset_set,
- GRPC_CLOSURE_CREATE(must_fail, &args, grpc_schedule_on_exec_ctx),
- &args.addrs);
- gpr_free(path_name);
- args_finish(&args);
-}
-
static void resolve_address_must_succeed(const char* target) {
grpc_core::ExecCtx exec_ctx;
args_struct args;
// unconditionally use the native DNS resolver).
grpc_core::UniquePtr<char> resolver =
GPR_GLOBAL_CONFIG_GET(grpc_dns_resolver);
- if (gpr_stricmp(resolver.get(), "native") == 0) {
- test_unix_socket();
- test_unix_socket_path_name_too_long();
- }
}
gpr_cmdline_destroy(cl);
grpc_completion_queue_shutdown(cq);
while (grpc_completion_queue_next(cq, gpr_inf_future(GPR_CLOCK_REALTIME),
nullptr)
- .type != GRPC_QUEUE_SHUTDOWN)
- ;
+ .type != GRPC_QUEUE_SHUTDOWN) {
+ }
grpc_completion_queue_destroy(cq);
}
grpc_completion_queue_shutdown(cq_);
while (grpc_completion_queue_next(cq_, gpr_inf_future(GPR_CLOCK_REALTIME),
nullptr)
- .type != GRPC_QUEUE_SHUTDOWN)
- ;
+ .type != GRPC_QUEUE_SHUTDOWN) {
+ }
grpc_completion_queue_destroy(cq_);
}
#include <grpc/support/alloc.h>
#include <grpc/support/log.h>
+#include "absl/memory/memory.h"
+
#include "src/core/lib/gpr/useful.h"
#include "src/core/lib/gprpp/thd.h"
#include "src/core/lib/iomgr/work_serializer.h"
{
std::vector<std::unique_ptr<TestThread>> threads;
for (size_t i = 0; i < 100; ++i) {
- threads.push_back(std::unique_ptr<TestThread>(new TestThread(&lock)));
+ threads.push_back(absl::make_unique<TestThread>(&lock));
}
}
}
)
grpc_cc_test(
+ name = "aws_request_signer_test",
+ srcs = ["aws_request_signer_test.cc"],
+ external_deps = ["gtest"],
+ language = "C++",
+ deps = [
+ "//:gpr",
+ "//:grpc",
+ "//:grpc_secure",
+ "//test/core/util:grpc_test_util",
+ ],
+)
+
+grpc_cc_test(
name = "evaluate_args_test",
srcs = ["evaluate_args_test.cc"],
external_deps = ["gtest"],
srcs = ["tls_security_connector_test.cc"],
data = [
"//src/core/tsi/test_creds:ca.pem",
+ "//src/core/tsi/test_creds:multi-domain.key",
+ "//src/core/tsi/test_creds:multi-domain.pem",
+ "//src/core/tsi/test_creds:server0.key",
+ "//src/core/tsi/test_creds:server0.pem",
"//src/core/tsi/test_creds:server1.key",
"//src/core/tsi/test_creds:server1.pem",
],
"//test/core/util:grpc_test_util",
],
)
+
+grpc_cc_test(
+ name = "insecure_security_connector_test",
+ srcs = ["insecure_security_connector_test.cc"],
+ external_deps = [
+ "gtest",
+ ],
+ deps = [
+ "//:gpr",
+ "//:grpc",
+ "//:grpc_secure",
+ "//test/core/util:grpc_test_util",
+ ],
+)
--- /dev/null
+//
+// Copyright 2020 gRPC authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+#include "src/core/lib/security/credentials/external/aws_request_signer.h"
+
+#include <gmock/gmock.h>
+#include <grpc/grpc_security.h>
+
+#include "test/core/util/test_config.h"
+
+namespace testing {
+
+namespace {
+// Test cases of Aws endpoints that the aws-sourced credentials will depend
+// on.
+const char* kAmzTestAccessKeyId = "ASIARD4OQDT6A77FR3CL";
+const char* kAmzTestSecretAccessKey =
+ "Y8AfSaucF37G4PpvfguKZ3/l7Id4uocLXxX0+VTx";
+const char* kAmzTestToken =
+ "IQoJb3JpZ2luX2VjEIz//////////wEaCXVzLWVhc3QtMiJGMEQCIH7MHX/Oy/"
+ "OB8OlLQa9GrqU1B914+iMikqWQW7vPCKlgAiA/"
+ "Lsv8Jcafn14owfxXn95FURZNKaaphj0ykpmS+Ki+"
+ "CSq0AwhlEAAaDDA3NzA3MTM5MTk5NiIMx9sAeP1ovlMTMKLjKpEDwuJQg41/"
+ "QUKx0laTZYjPlQvjwSqS3OB9P1KAXPWSLkliVMMqaHqelvMF/WO/"
+ "glv3KwuTfQsavRNs3v5pcSEm4SPO3l7mCs7KrQUHwGP0neZhIKxEXy+Ls//1C/"
+ "Bqt53NL+LSbaGv6RPHaX82laz2qElphg95aVLdYgIFY6JWV5fzyjgnhz0DQmy62/"
+ "Vi8pNcM2/"
+ "VnxeCQ8CC8dRDSt52ry2v+nc77vstuI9xV5k8mPtnaPoJDRANh0bjwY5Sdwkbp+"
+ "mGRUJBAQRlNgHUJusefXQgVKBCiyJY4w3Csd8Bgj9IyDV+"
+ "Azuy1jQqfFZWgP68LSz5bURyIjlWDQunO82stZ0BgplKKAa/"
+ "KJHBPCp8Qi6i99uy7qh76FQAqgVTsnDuU6fGpHDcsDSGoCls2HgZjZFPeOj8mmRhFk1Xqvkb"
+ "juz8V1cJk54d3gIJvQt8gD2D6yJQZecnuGWd5K2e2HohvCc8Fc9kBl1300nUJPV+k4tr/"
+ "A5R/0QfEKOZL1/"
+ "k5lf1g9CREnrM8LVkGxCgdYMxLQow1uTL+QU67AHRRSp5PhhGX4Rek+"
+ "01vdYSnJCMaPhSEgcLqDlQkhk6MPsyT91QMXcWmyO+cAZwUPwnRamFepuP4K8k2KVXs/"
+ "LIJHLELwAZ0ekyaS7CptgOqS7uaSTFG3U+vzFZLEnGvWQ7y9IPNQZ+"
+ "Dffgh4p3vF4J68y9049sI6Sr5d5wbKkcbm8hdCDHZcv4lnqohquPirLiFQ3q7B17V9krMPu3"
+ "mz1cg4Ekgcrn/"
+ "E09NTsxAqD8NcZ7C7ECom9r+"
+ "X3zkDOxaajW6hu3Az8hGlyylDaMiFfRbBJpTIlxp7jfa7CxikNgNtEKLH9iCzvuSg2vhA==";
+const char* kAmzTestDate = "20200811T065522Z";
+
+// Test cases derived from the Aws signature v4 test suite.
+// https://github.com/boto/botocore/tree/master/tests/unit/auth/aws4_testsuite
+const char* kBotoTestAccessKeyId = "AKIDEXAMPLE";
+const char* kBotoTestSecretAccessKey =
+ "wJalrXUtnFEMI/K7MDENG+bPxRfiCYEXAMPLEKEY";
+const char* kBotoTestToken = "";
+const char* kBotoTestDate = "Mon, 09 Sep 2011 23:36:00 GMT";
+} // namespace
+
+// AWS official example from the developer doc.
+// https://docs.aws.amazon.com/general/latest/gr/sigv4_signing.html
+TEST(GrpcAwsRequestSignerTest, AWSOfficialExample) {
+ grpc_error* error = GRPC_ERROR_NONE;
+ grpc_core::AwsRequestSigner signer(
+ "AKIDEXAMPLE", "wJalrXUtnFEMI/K7MDENG+bPxRfiCYEXAMPLEKEY", "", "GET",
+ "https://iam.amazonaws.com/?Action=ListUsers&Version=2010-05-08",
+ "us-east-1", "",
+ {{"content-type", "application/x-www-form-urlencoded; charset=utf-8"},
+ {"x-amz-date", "20150830T123600Z"}},
+ &error);
+ EXPECT_EQ(error, GRPC_ERROR_NONE);
+ EXPECT_EQ(signer.GetSignedRequestHeaders()["Authorization"],
+ "AWS4-HMAC-SHA256 "
+ "Credential=AKIDEXAMPLE/20150830/us-east-1/iam/aws4_request, "
+ "SignedHeaders=content-type;host;x-amz-date, "
+ "Signature="
+ "5d672d79c15b13162d9279b0855cfba6789a8edb4c82c400e06b5924a6f2b5d7");
+}
+
+TEST(GrpcAwsRequestSignerTest, GetDescribeRegions) {
+ grpc_error* error = GRPC_ERROR_NONE;
+ grpc_core::AwsRequestSigner signer(
+ kAmzTestAccessKeyId, kAmzTestSecretAccessKey, kAmzTestToken, "GET",
+ "https://"
+ "ec2.us-east-2.amazonaws.com?Action=DescribeRegions&Version=2013-10-15",
+ "us-east-2", "", {{"x-amz-date", kAmzTestDate}}, &error);
+ EXPECT_EQ(error, GRPC_ERROR_NONE);
+ EXPECT_EQ(
+ signer.GetSignedRequestHeaders()["Authorization"],
+ "AWS4-HMAC-SHA256 "
+ "Credential=ASIARD4OQDT6A77FR3CL/20200811/us-east-2/ec2/aws4_request, "
+ "SignedHeaders=host;x-amz-date;x-amz-security-token, "
+ "Signature="
+ "631ea80cddfaa545fdadb120dc92c9f18166e38a5c47b50fab9fce476e022855");
+}
+
+TEST(GrpcAwsRequestSignerTest, PostGetCallerIdentity) {
+ grpc_error* error = GRPC_ERROR_NONE;
+ grpc_core::AwsRequestSigner signer(
+ kAmzTestAccessKeyId, kAmzTestSecretAccessKey, kAmzTestToken, "POST",
+ "https://"
+ "sts.us-east-2.amazonaws.com?Action=GetCallerIdentity&Version=2011-06-15",
+ "us-east-2", "", {{"x-amz-date", kAmzTestDate}}, &error);
+ EXPECT_EQ(error, GRPC_ERROR_NONE);
+ EXPECT_EQ(
+ signer.GetSignedRequestHeaders()["Authorization"],
+ "AWS4-HMAC-SHA256 "
+ "Credential=ASIARD4OQDT6A77FR3CL/20200811/us-east-2/sts/aws4_request, "
+ "SignedHeaders=host;x-amz-date;x-amz-security-token, "
+ "Signature="
+ "73452984e4a880ffdc5c392355733ec3f5ba310d5e0609a89244440cadfe7a7a");
+}
+
+TEST(GrpcAwsRequestSignerTest, PostGetCallerIdentityNoToken) {
+ grpc_error* error = GRPC_ERROR_NONE;
+ grpc_core::AwsRequestSigner signer(
+ kAmzTestAccessKeyId, kAmzTestSecretAccessKey, "", "POST",
+ "https://"
+ "sts.us-east-2.amazonaws.com?Action=GetCallerIdentity&Version=2011-06-15",
+ "us-east-2", "", {{"x-amz-date", kAmzTestDate}}, &error);
+ EXPECT_EQ(error, GRPC_ERROR_NONE);
+ EXPECT_EQ(
+ signer.GetSignedRequestHeaders()["Authorization"],
+ "AWS4-HMAC-SHA256 "
+ "Credential=ASIARD4OQDT6A77FR3CL/20200811/us-east-2/sts/aws4_request, "
+ "SignedHeaders=host;x-amz-date, "
+ "Signature="
+ "d095ba304919cd0d5570ba8a3787884ee78b860f268ed040ba23831d55536d56");
+}
+
+TEST(GrpcAwsRequestSignerTest, GetHost) {
+ grpc_error* error = GRPC_ERROR_NONE;
+ grpc_core::AwsRequestSigner signer(kBotoTestAccessKeyId,
+ kBotoTestSecretAccessKey, kBotoTestToken,
+ "GET", "https://host.foo.com", "us-east-1",
+ "", {{"date", kBotoTestDate}}, &error);
+ EXPECT_EQ(error, GRPC_ERROR_NONE);
+ EXPECT_EQ(signer.GetSignedRequestHeaders()["Authorization"],
+ "AWS4-HMAC-SHA256 "
+ "Credential=AKIDEXAMPLE/20110909/us-east-1/host/aws4_request, "
+ "SignedHeaders=date;host, "
+ "Signature="
+ "b27ccfbfa7df52a200ff74193ca6e32d4b48b8856fab7ebf1c595d0670a7e470");
+}
+
+TEST(GrpcAwsRequestSignerTest, GetHostDuplicateQueryParam) {
+ grpc_error* error = GRPC_ERROR_NONE;
+ grpc_core::AwsRequestSigner signer(
+ kBotoTestAccessKeyId, kBotoTestSecretAccessKey, kBotoTestToken, "GET",
+ "https://host.foo.com/?foo=Zoo&foo=aha", "us-east-1", "",
+ {{"date", kBotoTestDate}}, &error);
+ EXPECT_EQ(error, GRPC_ERROR_NONE);
+ EXPECT_EQ(signer.GetSignedRequestHeaders()["Authorization"],
+ "AWS4-HMAC-SHA256 "
+ "Credential=AKIDEXAMPLE/20110909/us-east-1/host/aws4_request, "
+ "SignedHeaders=date;host, "
+ "Signature="
+ "be7148d34ebccdc6423b19085378aa0bee970bdc61d144bd1a8c48c33079ab09");
+}
+
+TEST(GrpcAwsRequestSignerTest, PostWithUpperCaseHeaderKey) {
+ grpc_error* error = GRPC_ERROR_NONE;
+ grpc_core::AwsRequestSigner signer(
+ kBotoTestAccessKeyId, kBotoTestSecretAccessKey, kBotoTestToken, "POST",
+ "https://host.foo.com/", "us-east-1", "",
+ {{"date", kBotoTestDate}, {"ZOO", "zoobar"}}, &error);
+ EXPECT_EQ(error, GRPC_ERROR_NONE);
+ EXPECT_EQ(signer.GetSignedRequestHeaders()["Authorization"],
+ "AWS4-HMAC-SHA256 "
+ "Credential=AKIDEXAMPLE/20110909/us-east-1/host/aws4_request, "
+ "SignedHeaders=date;host;zoo, "
+ "Signature="
+ "b7a95a52518abbca0964a999a880429ab734f35ebbf1235bd79a5de87756dc4a");
+}
+
+TEST(GrpcAwsRequestSignerTest, PostWithUpperCaseHeaderValue) {
+ grpc_error* error = GRPC_ERROR_NONE;
+ grpc_core::AwsRequestSigner signer(
+ kBotoTestAccessKeyId, kBotoTestSecretAccessKey, kBotoTestToken, "POST",
+ "https://host.foo.com/", "us-east-1", "",
+ {{"date", kBotoTestDate}, {"zoo", "ZOOBAR"}}, &error);
+ EXPECT_EQ(error, GRPC_ERROR_NONE);
+ EXPECT_EQ(signer.GetSignedRequestHeaders()["Authorization"],
+ "AWS4-HMAC-SHA256 "
+ "Credential=AKIDEXAMPLE/20110909/us-east-1/host/aws4_request, "
+ "SignedHeaders=date;host;zoo, "
+ "Signature="
+ "273313af9d0c265c531e11db70bbd653f3ba074c1009239e8559d3987039cad7");
+}
+
+TEST(GrpcAwsRequestSignerTest, SignPostWithHeader) {
+ grpc_error* error = GRPC_ERROR_NONE;
+ grpc_core::AwsRequestSigner signer(
+ kBotoTestAccessKeyId, kBotoTestSecretAccessKey, kBotoTestToken, "POST",
+ "https://host.foo.com/", "us-east-1", "",
+ {{"date", kBotoTestDate}, {"p", "phfft"}}, &error);
+ EXPECT_EQ(error, GRPC_ERROR_NONE);
+ EXPECT_EQ(signer.GetSignedRequestHeaders()["Authorization"],
+ "AWS4-HMAC-SHA256 "
+ "Credential=AKIDEXAMPLE/20110909/us-east-1/host/aws4_request, "
+ "SignedHeaders=date;host;p, "
+ "Signature="
+ "debf546796015d6f6ded8626f5ce98597c33b47b9164cf6b17b4642036fcb592");
+}
+
+TEST(GrpcAwsRequestSignerTest, PostWithBodyNoCustomHeaders) {
+ grpc_error* error = GRPC_ERROR_NONE;
+ grpc_core::AwsRequestSigner signer(
+ kBotoTestAccessKeyId, kBotoTestSecretAccessKey, kBotoTestToken, "POST",
+ "https://host.foo.com/", "us-east-1", "foo=bar",
+ {{"date", kBotoTestDate},
+ {"Content-Type", "application/x-www-form-urlencoded"}},
+ &error);
+ EXPECT_EQ(error, GRPC_ERROR_NONE);
+ EXPECT_EQ(signer.GetSignedRequestHeaders()["Authorization"],
+ "AWS4-HMAC-SHA256 "
+ "Credential=AKIDEXAMPLE/20110909/us-east-1/host/aws4_request, "
+ "SignedHeaders=content-type;date;host, "
+ "Signature="
+ "5a15b22cf462f047318703b92e6f4f38884e4a7ab7b1d6426ca46a8bd1c26cbc");
+}
+
+TEST(GrpcAwsRequestSignerTest, SignPostWithQueryString) {
+ grpc_error* error = GRPC_ERROR_NONE;
+ grpc_core::AwsRequestSigner signer(
+ kBotoTestAccessKeyId, kBotoTestSecretAccessKey, kBotoTestToken, "POST",
+ "https://host.foo.com/?foo=bar", "us-east-1", "",
+ {{"date", kBotoTestDate}}, &error);
+ EXPECT_EQ(error, GRPC_ERROR_NONE);
+ EXPECT_EQ(signer.GetSignedRequestHeaders()["Authorization"],
+ "AWS4-HMAC-SHA256 "
+ "Credential=AKIDEXAMPLE/20110909/us-east-1/host/aws4_request, "
+ "SignedHeaders=date;host, "
+ "Signature="
+ "b6e3b79003ce0743a491606ba1035a804593b0efb1e20a11cba83f8c25a57a92");
+}
+
+TEST(GrpcAwsRequestSignerTest, InvalidUrl) {
+ grpc_error* error = GRPC_ERROR_NONE;
+ grpc_core::AwsRequestSigner signer("access_key_id", "secret_access_key",
+ "token", "POST", "invalid_url",
+ "us-east-1", "", {}, &error);
+ grpc_slice expected_error_description =
+ grpc_slice_from_static_string("Invalid Aws request url.");
+ grpc_slice actual_error_description;
+ GPR_ASSERT(grpc_error_get_str(error, GRPC_ERROR_STR_DESCRIPTION,
+ &actual_error_description));
+ EXPECT_TRUE(grpc_slice_cmp(expected_error_description,
+ actual_error_description) == 0);
+ GRPC_ERROR_UNREF(error);
+}
+
+TEST(GrpcAwsRequestSignerTest, DuplicateRequestDate) {
+ grpc_error* error = GRPC_ERROR_NONE;
+ grpc_core::AwsRequestSigner signer(
+ "access_key_id", "secret_access_key", "token", "POST", "invalid_url",
+ "us-east-1", "", {{"date", kBotoTestDate}, {"x-amz-date", kAmzTestDate}},
+ &error);
+ grpc_slice expected_error_description = grpc_slice_from_static_string(
+ "Only one of {date, x-amz-date} can be specified, not both.");
+ grpc_slice actual_error_description;
+ GPR_ASSERT(grpc_error_get_str(error, GRPC_ERROR_STR_DESCRIPTION,
+ &actual_error_description));
+ EXPECT_TRUE(grpc_slice_cmp(expected_error_description,
+ actual_error_description) == 0);
+ GRPC_ERROR_UNREF(error);
+}
+
+} // namespace testing
+
+int main(int argc, char** argv) {
+ grpc::testing::TestEnvironment env(argc, argv);
+ ::testing::InitGoogleTest(&argc, argv);
+ grpc_init();
+ int ret = RUN_ALL_TESTS();
+ grpc_shutdown();
+ return ret;
+}
#include "absl/strings/str_cat.h"
#include "absl/strings/str_format.h"
+#include "absl/strings/str_replace.h"
#include <grpc/grpc_security.h>
#include <grpc/slice.h>
#include "src/core/lib/http/httpcli.h"
#include "src/core/lib/iomgr/error.h"
#include "src/core/lib/security/credentials/composite/composite_credentials.h"
+#include "src/core/lib/security/credentials/external/external_account_credentials.h"
+#include "src/core/lib/security/credentials/external/file_external_account_credentials.h"
+#include "src/core/lib/security/credentials/external/url_external_account_credentials.h"
#include "src/core/lib/security/credentials/fake/fake_credentials.h"
#include "src/core/lib/security/credentials/google_default/google_default_credentials.h"
#include "src/core/lib/security/credentials/jwt/jwt_credentials.h"
static const char test_method[] = "ThisIsNotAMethod";
+static const char valid_external_account_creds_token_exchange_response[] =
+ "{\"access_token\":\"token_exchange_access_token\","
+ " \"expires_in\":3599,"
+ " \"token_type\":\"Bearer\"}";
+
+static const char
+ valid_external_account_creds_service_account_impersonation_response[] =
+ "{\"accessToken\":\"service_account_impersonation_access_token\","
+ " \"expireTime\":\"2050-01-01T00:00:00Z\"}";
+
+static const char
+ valid_url_external_account_creds_options_credential_source_format_text[] =
+ "{\"url\":\"https://foo.com:5555/generate_subject_token_format_text\","
+ "\"headers\":{\"Metadata-Flavor\":\"Google\"}}";
+
+static const char
+ valid_url_external_account_creds_retrieve_subject_token_response_format_text
+ [] = "test_subject_token";
+
+static const char
+ valid_url_external_account_creds_options_credential_source_format_json[] =
+ "{\"url\":\"https://foo.com:5555/generate_subject_token_format_json\","
+ "\"headers\":{\"Metadata-Flavor\":\"Google\"},"
+ "\"format\":{\"type\":\"json\",\"subject_token_field_name\":\"access_"
+ "token\"}}";
+
+static const char
+ valid_url_external_account_creds_retrieve_subject_token_response_format_json
+ [] = "{\"access_token\":\"test_subject_token\"}";
+
+static const char
+ invalid_url_external_account_creds_options_credential_source[] =
+ "{\"url\":\"invalid_credential_source_url\","
+ "\"headers\":{\"Metadata-Flavor\":\"Google\"}}";
+
/* -- Global state flags. -- */
static bool g_test_is_on_gce = false;
grpc_auth_metadata_context auth_md_ctx = {test_service_url, test_method,
nullptr, nullptr};
grpc_call_credentials* oauth2_creds = grpc_md_only_test_credentials_create(
- "authorization", test_oauth2_bearer_token, 0);
+ "authorization", test_oauth2_bearer_token, false);
/* Check security level of fake credentials. */
GPR_ASSERT(oauth2_creds->min_security_level() == GRPC_SECURITY_NONE);
grpc_slice_unref(value);
}
- ~fake_call_creds() { GRPC_MDELEM_UNREF(dummy_md_); }
+ ~fake_call_creds() override { GRPC_MDELEM_UNREF(dummy_md_); }
bool get_request_metadata(grpc_polling_entity* pollent,
grpc_auth_metadata_context context,
grpc_credentials_mdelem_array* md_array,
grpc_closure* on_request_metadata,
- grpc_error** error) {
+ grpc_error** error) override {
grpc_credentials_mdelem_array_add(md_array, dummy_md_);
return true;
}
void cancel_get_request_metadata(grpc_credentials_mdelem_array* md_array,
- grpc_error* error) {}
+ grpc_error* error) override {}
private:
grpc_mdelem dummy_md_;
}
}
+static void validate_external_account_creds_token_exchage_request(
+ const grpc_httpcli_request* request, const char* body, size_t body_size,
+ bool expect_actor_token) {
+ // Check that the body is constructed properly.
+ GPR_ASSERT(body != nullptr);
+ GPR_ASSERT(body_size != 0);
+ GPR_ASSERT(request->handshaker == &grpc_httpcli_ssl);
+ std::string get_url_equivalent =
+ absl::StrFormat("%s?%s", "https://foo.com:5555/token", body);
+ grpc_uri* uri = grpc_uri_parse(get_url_equivalent.c_str(), false);
+ GPR_ASSERT(strcmp(grpc_uri_get_query_arg(uri, "audience"), "audience") == 0);
+ GPR_ASSERT(strcmp(grpc_uri_get_query_arg(uri, "grant_type"),
+ "urn:ietf:params:oauth:grant-type:token-exchange") == 0);
+ GPR_ASSERT(strcmp(grpc_uri_get_query_arg(uri, "requested_token_type"),
+ "urn:ietf:params:oauth:token-type:access_token") == 0);
+ GPR_ASSERT(strcmp(grpc_uri_get_query_arg(uri, "subject_token"),
+ "test_subject_token") == 0);
+ GPR_ASSERT(strcmp(grpc_uri_get_query_arg(uri, "subject_token_type"),
+ "subject_token_type") == 0);
+ GPR_ASSERT(strcmp(grpc_uri_get_query_arg(uri, "scope"),
+ "https://www.googleapis.com/auth/cloud-platform") == 0);
+ grpc_uri_destroy(uri);
+
+ // Check the rest of the request.
+ GPR_ASSERT(strcmp(request->host, "foo.com:5555") == 0);
+ GPR_ASSERT(strcmp(request->http.path, "/token") == 0);
+ GPR_ASSERT(request->http.hdr_count == 2);
+ GPR_ASSERT(strcmp(request->http.hdrs[0].key, "Content-Type") == 0);
+ GPR_ASSERT(strcmp(request->http.hdrs[0].value,
+ "application/x-www-form-urlencoded") == 0);
+ GPR_ASSERT(strcmp(request->http.hdrs[1].key, "Authorization") == 0);
+ GPR_ASSERT(strcmp(request->http.hdrs[1].value,
+ "Basic Y2xpZW50X2lkOmNsaWVudF9zZWNyZXQ=") == 0);
+}
+
+static void
+validate_external_account_creds_service_account_impersonation_request(
+ const grpc_httpcli_request* request, const char* body, size_t body_size,
+ bool expect_actor_token) {
+ // Check that the body is constructed properly.
+ GPR_ASSERT(body != nullptr);
+ GPR_ASSERT(body_size != 0);
+ GPR_ASSERT(request->handshaker == &grpc_httpcli_ssl);
+ GPR_ASSERT(strcmp(body, "scope=scope_1 scope_2") == 0);
+
+ // Check the rest of the request.
+ GPR_ASSERT(strcmp(request->host, "foo.com:5555") == 0);
+ GPR_ASSERT(strcmp(request->http.path, "/service_account_impersonation") == 0);
+ GPR_ASSERT(request->http.hdr_count == 2);
+ GPR_ASSERT(strcmp(request->http.hdrs[0].key, "Content-Type") == 0);
+ GPR_ASSERT(strcmp(request->http.hdrs[0].value,
+ "application/x-www-form-urlencoded") == 0);
+ GPR_ASSERT(strcmp(request->http.hdrs[1].key, "Authorization") == 0);
+ GPR_ASSERT(strcmp(request->http.hdrs[1].value,
+ "Bearer token_exchange_access_token") == 0);
+}
+
+static int external_account_creds_httpcli_post_success(
+ const grpc_httpcli_request* request, const char* body, size_t body_size,
+ grpc_millis /*deadline*/, grpc_closure* on_done,
+ grpc_httpcli_response* response) {
+ if (strcmp(request->http.path, "/token") == 0) {
+ validate_external_account_creds_token_exchage_request(request, body,
+ body_size, true);
+ *response = http_response(
+ 200, valid_external_account_creds_token_exchange_response);
+ } else if (strcmp(request->http.path, "/service_account_impersonation") ==
+ 0) {
+ validate_external_account_creds_service_account_impersonation_request(
+ request, body, body_size, true);
+ *response = http_response(
+ 200,
+ valid_external_account_creds_service_account_impersonation_response);
+ }
+ grpc_core::ExecCtx::Run(DEBUG_LOCATION, on_done, GRPC_ERROR_NONE);
+ return 1;
+}
+
+static int
+external_account_creds_httpcli_post_failure_token_exchange_response_missing_access_token(
+ const grpc_httpcli_request* request, const char* body, size_t body_size,
+ grpc_millis /*deadline*/, grpc_closure* on_done,
+ grpc_httpcli_response* response) {
+ if (strcmp(request->http.path, "/token") == 0) {
+ *response = http_response(200,
+ "{\"not_access_token\":\"not_access_token\","
+ "\"expires_in\":3599,"
+ " \"token_type\":\"Bearer\"}");
+ } else if (strcmp(request->http.path, "/service_account_impersonation") ==
+ 0) {
+ *response = http_response(
+ 200,
+ valid_external_account_creds_service_account_impersonation_response);
+ }
+ grpc_core::ExecCtx::Run(DEBUG_LOCATION, on_done, GRPC_ERROR_NONE);
+ return 1;
+}
+
+static int url_external_account_creds_httpcli_get_success(
+ const grpc_httpcli_request* request, grpc_millis /*deadline*/,
+ grpc_closure* on_done, grpc_httpcli_response* response) {
+ if (strcmp(request->http.path, "/generate_subject_token_format_text") == 0) {
+ *response = http_response(
+ 200,
+ valid_url_external_account_creds_retrieve_subject_token_response_format_text);
+ } else if (strcmp(request->http.path,
+ "/generate_subject_token_format_json") == 0) {
+ *response = http_response(
+ 200,
+ valid_url_external_account_creds_retrieve_subject_token_response_format_json);
+ }
+ grpc_core::ExecCtx::Run(DEBUG_LOCATION, on_done, GRPC_ERROR_NONE);
+ return 1;
+}
+
+// The subclass of ExternalAccountCredentials for testing.
+// ExternalAccountCredentials is an abstract class so we can't directly test
+// against it.
+class TestExternalAccountCredentials final
+ : public grpc_core::ExternalAccountCredentials {
+ public:
+ TestExternalAccountCredentials(ExternalAccountCredentialsOptions options,
+ std::vector<std::string> scopes)
+ : ExternalAccountCredentials(std::move(options), std::move(scopes)) {}
+
+ protected:
+ void RetrieveSubjectToken(
+ HTTPRequestContext* ctx, const ExternalAccountCredentialsOptions& options,
+ std::function<void(std::string, grpc_error*)> cb) override {
+ cb("test_subject_token", GRPC_ERROR_NONE);
+ }
+};
+
+static void test_external_account_creds_success(void) {
+ expected_md emd[] = {{"authorization", "Bearer token_exchange_access_token"}};
+ grpc_core::ExecCtx exec_ctx;
+ grpc_auth_metadata_context auth_md_ctx = {test_service_url, test_method,
+ nullptr, nullptr};
+ grpc_core::Json credential_source("");
+ TestExternalAccountCredentials::ExternalAccountCredentialsOptions options = {
+ "external_account", // type;
+ "audience", // audience;
+ "subject_token_type", // subject_token_type;
+ "", // service_account_impersonation_url;
+ "https://foo.com:5555/token", // token_url;
+ "https://foo.com:5555/token_info", // token_info_url;
+ credential_source, // credential_source;
+ "quota_project_id", // quota_project_id;
+ "client_id", // client_id;
+ "client_secret", // client_secret;
+ };
+ TestExternalAccountCredentials creds(options, {});
+ /* Check security level. */
+ GPR_ASSERT(creds.min_security_level() == GRPC_PRIVACY_AND_INTEGRITY);
+ /* First request: http put should be called. */
+ request_metadata_state* state =
+ make_request_metadata_state(GRPC_ERROR_NONE, emd, GPR_ARRAY_SIZE(emd));
+ grpc_httpcli_set_override(httpcli_get_should_not_be_called,
+ external_account_creds_httpcli_post_success);
+ run_request_metadata_test(&creds, auth_md_ctx, state);
+ grpc_core::ExecCtx::Get()->Flush();
+ /* Second request: the cached token should be served directly. */
+ state =
+ make_request_metadata_state(GRPC_ERROR_NONE, emd, GPR_ARRAY_SIZE(emd));
+ grpc_httpcli_set_override(httpcli_get_should_not_be_called,
+ httpcli_post_should_not_be_called);
+ run_request_metadata_test(&creds, auth_md_ctx, state);
+ grpc_core::ExecCtx::Get()->Flush();
+ grpc_httpcli_set_override(nullptr, nullptr);
+}
+
+static void
+test_external_account_creds_success_with_service_account_impersonation(void) {
+ expected_md emd[] = {
+ {"authorization", "Bearer service_account_impersonation_access_token"}};
+ grpc_core::ExecCtx exec_ctx;
+ grpc_auth_metadata_context auth_md_ctx = {test_service_url, test_method,
+ nullptr, nullptr};
+ grpc_core::Json credential_source("");
+ TestExternalAccountCredentials::ExternalAccountCredentialsOptions options = {
+ "external_account", // type;
+ "audience", // audience;
+ "subject_token_type", // subject_token_type;
+ "https://foo.com:5555/service_account_impersonation", // service_account_impersonation_url;
+ "https://foo.com:5555/token", // token_url;
+ "https://foo.com:5555/token_info", // token_info_url;
+ credential_source, // credential_source;
+ "quota_project_id", // quota_project_id;
+ "client_id", // client_id;
+ "client_secret", // client_secret;
+ };
+ TestExternalAccountCredentials creds(options, {"scope_1", "scope_2"});
+ /* Check security level. */
+ GPR_ASSERT(creds.min_security_level() == GRPC_PRIVACY_AND_INTEGRITY);
+ /* First request: http put should be called. */
+ request_metadata_state* state =
+ make_request_metadata_state(GRPC_ERROR_NONE, emd, GPR_ARRAY_SIZE(emd));
+ grpc_httpcli_set_override(httpcli_get_should_not_be_called,
+ external_account_creds_httpcli_post_success);
+ run_request_metadata_test(&creds, auth_md_ctx, state);
+ grpc_core::ExecCtx::Get()->Flush();
+ grpc_httpcli_set_override(nullptr, nullptr);
+}
+
+static void test_external_account_creds_failure_invalid_token_url(void) {
+ grpc_core::ExecCtx exec_ctx;
+ grpc_auth_metadata_context auth_md_ctx = {test_service_url, test_method,
+ nullptr, nullptr};
+ grpc_core::Json credential_source("");
+ TestExternalAccountCredentials::ExternalAccountCredentialsOptions options = {
+ "external_account", // type;
+ "audience", // audience;
+ "subject_token_type", // subject_token_type;
+ "https://foo.com:5555/service_account_impersonation", // service_account_impersonation_url;
+ "invalid_token_url", // token_url;
+ "https://foo.com:5555/token_info", // token_info_url;
+ credential_source, // credential_source;
+ "quota_project_id", // quota_project_id;
+ "client_id", // client_id;
+ "client_secret", // client_secret;
+ };
+ TestExternalAccountCredentials creds(options, {});
+ grpc_httpcli_set_override(httpcli_get_should_not_be_called,
+ httpcli_post_should_not_be_called);
+ grpc_error* error = GRPC_ERROR_CREATE_FROM_STATIC_STRING(
+ "Invalid token url: invalid_token_url.");
+ grpc_error* expected_error = GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
+ "Error occurred when fetching oauth2 token.", &error, 1);
+ request_metadata_state* state =
+ make_request_metadata_state(expected_error, nullptr, 0);
+ run_request_metadata_test(&creds, auth_md_ctx, state);
+ GRPC_ERROR_UNREF(error);
+ grpc_core::ExecCtx::Get()->Flush();
+ grpc_httpcli_set_override(nullptr, nullptr);
+}
+
+static void
+test_external_account_creds_failure_invalid_service_account_impersonation_url(
+ void) {
+ grpc_core::ExecCtx exec_ctx;
+ grpc_auth_metadata_context auth_md_ctx = {test_service_url, test_method,
+ nullptr, nullptr};
+ grpc_core::Json credential_source("");
+ TestExternalAccountCredentials::ExternalAccountCredentialsOptions options = {
+ "external_account", // type;
+ "audience", // audience;
+ "subject_token_type", // subject_token_type;
+ "invalid_service_account_impersonation_url", // service_account_impersonation_url;
+ "https://foo.com:5555/token", // token_url;
+ "https://foo.com:5555/token_info", // token_info_url;
+ credential_source, // credential_source;
+ "quota_project_id", // quota_project_id;
+ "client_id", // client_id;
+ "client_secret", // client_secret;
+ };
+ TestExternalAccountCredentials creds(options, {});
+ grpc_httpcli_set_override(httpcli_get_should_not_be_called,
+ external_account_creds_httpcli_post_success);
+ grpc_error* error = GRPC_ERROR_CREATE_FROM_STATIC_STRING(
+ "Invalid service account impersonation url: "
+ "invalid_service_account_impersonation_url.");
+ grpc_error* expected_error = GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
+ "Error occurred when fetching oauth2 token.", &error, 1);
+ request_metadata_state* state =
+ make_request_metadata_state(expected_error, nullptr, 0);
+ run_request_metadata_test(&creds, auth_md_ctx, state);
+ GRPC_ERROR_UNREF(error);
+ grpc_core::ExecCtx::Get()->Flush();
+ grpc_httpcli_set_override(nullptr, nullptr);
+}
+
+static void
+test_external_account_creds_failure_token_exchange_response_missing_access_token(
+ void) {
+ grpc_core::ExecCtx exec_ctx;
+ grpc_auth_metadata_context auth_md_ctx = {test_service_url, test_method,
+ nullptr, nullptr};
+ grpc_core::Json credential_source("");
+ TestExternalAccountCredentials::ExternalAccountCredentialsOptions options = {
+ "external_account", // type;
+ "audience", // audience;
+ "subject_token_type", // subject_token_type;
+ "https://foo.com:5555/service_account_impersonation", // service_account_impersonation_url;
+ "https://foo.com:5555/token", // token_url;
+ "https://foo.com:5555/token_info", // token_info_url;
+ credential_source, // credential_source;
+ "quota_project_id", // quota_project_id;
+ "client_id", // client_id;
+ "client_secret", // client_secret;
+ };
+ TestExternalAccountCredentials creds(options, {});
+ grpc_httpcli_set_override(
+ httpcli_get_should_not_be_called,
+ external_account_creds_httpcli_post_failure_token_exchange_response_missing_access_token);
+ grpc_error* error = GRPC_ERROR_CREATE_FROM_STATIC_STRING(
+ "Missing or invalid access_token in "
+ "{\"not_access_token\":\"not_access_token\",\"expires_in\":3599,\"token_"
+ "type\":\"Bearer\"}.");
+ grpc_error* expected_error = GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
+ "Error occurred when fetching oauth2 token.", &error, 1);
+ request_metadata_state* state =
+ make_request_metadata_state(expected_error, nullptr, 0);
+ run_request_metadata_test(&creds, auth_md_ctx, state);
+ GRPC_ERROR_UNREF(error);
+ grpc_core::ExecCtx::Get()->Flush();
+ grpc_httpcli_set_override(nullptr, nullptr);
+}
+
+static void test_url_external_account_creds_success_format_text(void) {
+ expected_md emd[] = {{"authorization", "Bearer token_exchange_access_token"}};
+ grpc_core::ExecCtx exec_ctx;
+ grpc_auth_metadata_context auth_md_ctx = {test_service_url, test_method,
+ nullptr, nullptr};
+ grpc_error* error = GRPC_ERROR_NONE;
+ grpc_core::Json credential_source = grpc_core::Json::Parse(
+ valid_url_external_account_creds_options_credential_source_format_text,
+ &error);
+ GPR_ASSERT(error == GRPC_ERROR_NONE);
+ grpc_core::ExternalAccountCredentials::ExternalAccountCredentialsOptions
+ options = {
+ "external_account", // type;
+ "audience", // audience;
+ "subject_token_type", // subject_token_type;
+ "", // service_account_impersonation_url;
+ "https://foo.com:5555/token", // token_url;
+ "https://foo.com:5555/token_info", // token_info_url;
+ credential_source, // credential_source;
+ "quota_project_id", // quota_project_id;
+ "client_id", // client_id;
+ "client_secret", // client_secret;
+ };
+ auto creds =
+ grpc_core::UrlExternalAccountCredentials::Create(options, {}, &error);
+ GPR_ASSERT(creds != nullptr);
+ GPR_ASSERT(error == GRPC_ERROR_NONE);
+ GPR_ASSERT(creds->min_security_level() == GRPC_PRIVACY_AND_INTEGRITY);
+ request_metadata_state* state =
+ make_request_metadata_state(GRPC_ERROR_NONE, emd, GPR_ARRAY_SIZE(emd));
+ grpc_httpcli_set_override(url_external_account_creds_httpcli_get_success,
+ external_account_creds_httpcli_post_success);
+ run_request_metadata_test(creds.get(), auth_md_ctx, state);
+ grpc_core::ExecCtx::Get()->Flush();
+ grpc_httpcli_set_override(nullptr, nullptr);
+}
+
+static void test_url_external_account_creds_success_format_json(void) {
+ expected_md emd[] = {{"authorization", "Bearer token_exchange_access_token"}};
+ grpc_core::ExecCtx exec_ctx;
+ grpc_auth_metadata_context auth_md_ctx = {test_service_url, test_method,
+ nullptr, nullptr};
+ grpc_error* error = GRPC_ERROR_NONE;
+ grpc_core::Json credential_source = grpc_core::Json::Parse(
+ valid_url_external_account_creds_options_credential_source_format_json,
+ &error);
+ GPR_ASSERT(error == GRPC_ERROR_NONE);
+ grpc_core::ExternalAccountCredentials::ExternalAccountCredentialsOptions
+ options = {
+ "external_account", // type;
+ "audience", // audience;
+ "subject_token_type", // subject_token_type;
+ "", // service_account_impersonation_url;
+ "https://foo.com:5555/token", // token_url;
+ "https://foo.com:5555/token_info", // token_info_url;
+ credential_source, // credential_source;
+ "quota_project_id", // quota_project_id;
+ "client_id", // client_id;
+ "client_secret", // client_secret;
+ };
+ auto creds =
+ grpc_core::UrlExternalAccountCredentials::Create(options, {}, &error);
+ GPR_ASSERT(creds != nullptr);
+ GPR_ASSERT(error == GRPC_ERROR_NONE);
+ GPR_ASSERT(creds->min_security_level() == GRPC_PRIVACY_AND_INTEGRITY);
+ request_metadata_state* state =
+ make_request_metadata_state(GRPC_ERROR_NONE, emd, GPR_ARRAY_SIZE(emd));
+ grpc_httpcli_set_override(url_external_account_creds_httpcli_get_success,
+ external_account_creds_httpcli_post_success);
+ run_request_metadata_test(creds.get(), auth_md_ctx, state);
+ grpc_core::ExecCtx::Get()->Flush();
+ grpc_httpcli_set_override(nullptr, nullptr);
+}
+
+static void
+test_url_external_account_creds_failure_invalid_credential_source_url(void) {
+ grpc_error* error = GRPC_ERROR_NONE;
+ grpc_core::Json credential_source = grpc_core::Json::Parse(
+ invalid_url_external_account_creds_options_credential_source, &error);
+ GPR_ASSERT(error == GRPC_ERROR_NONE);
+ grpc_core::ExternalAccountCredentials::ExternalAccountCredentialsOptions
+ options = {
+ "external_account", // type;
+ "audience", // audience;
+ "subject_token_type", // subject_token_type;
+ "", // service_account_impersonation_url;
+ "https://foo.com:5555/token", // token_url;
+ "https://foo.com:5555/token_info", // token_info_url;
+ credential_source, // credential_source;
+ "quota_project_id", // quota_project_id;
+ "client_id", // client_id;
+ "client_secret", // client_secret;
+ };
+ auto creds =
+ grpc_core::UrlExternalAccountCredentials::Create(options, {}, &error);
+ GPR_ASSERT(creds == nullptr);
+ grpc_slice expected_error_slice =
+ grpc_slice_from_static_string("Invalid credential source url.");
+ grpc_slice actual_error_slice;
+ GPR_ASSERT(grpc_error_get_str(error, GRPC_ERROR_STR_DESCRIPTION,
+ &actual_error_slice));
+ GPR_ASSERT(grpc_slice_cmp(expected_error_slice, actual_error_slice) == 0);
+ GRPC_ERROR_UNREF(error);
+}
+
+static void test_file_external_account_creds_success_format_text(void) {
+ expected_md emd[] = {{"authorization", "Bearer token_exchange_access_token"}};
+ grpc_core::ExecCtx exec_ctx;
+ grpc_auth_metadata_context auth_md_ctx = {test_service_url, test_method,
+ nullptr, nullptr};
+ grpc_error* error = GRPC_ERROR_NONE;
+ char* subject_token_path = write_tmp_jwt_file("test_subject_token");
+ grpc_core::Json credential_source = grpc_core::Json::Parse(
+ absl::StrFormat(
+ "{\"file\":\"%s\"}",
+ absl::StrReplaceAll(subject_token_path, {{"\\", "\\\\"}})),
+ &error);
+ GPR_ASSERT(error == GRPC_ERROR_NONE);
+ grpc_core::ExternalAccountCredentials::ExternalAccountCredentialsOptions
+ options = {
+ "external_account", // type;
+ "audience", // audience;
+ "subject_token_type", // subject_token_type;
+ "", // service_account_impersonation_url;
+ "https://foo.com:5555/token", // token_url;
+ "https://foo.com:5555/token_info", // token_info_url;
+ credential_source, // credential_source;
+ "quota_project_id", // quota_project_id;
+ "client_id", // client_id;
+ "client_secret", // client_secret;
+ };
+ auto creds =
+ grpc_core::FileExternalAccountCredentials::Create(options, {}, &error);
+ GPR_ASSERT(creds != nullptr);
+ GPR_ASSERT(error == GRPC_ERROR_NONE);
+ GPR_ASSERT(creds->min_security_level() == GRPC_PRIVACY_AND_INTEGRITY);
+ request_metadata_state* state =
+ make_request_metadata_state(GRPC_ERROR_NONE, emd, GPR_ARRAY_SIZE(emd));
+ grpc_httpcli_set_override(httpcli_get_should_not_be_called,
+ external_account_creds_httpcli_post_success);
+ run_request_metadata_test(creds.get(), auth_md_ctx, state);
+ grpc_core::ExecCtx::Get()->Flush();
+ grpc_httpcli_set_override(nullptr, nullptr);
+ GRPC_ERROR_UNREF(error);
+ gpr_free(subject_token_path);
+}
+
+static void test_file_external_account_creds_success_format_json(void) {
+ expected_md emd[] = {{"authorization", "Bearer token_exchange_access_token"}};
+ grpc_core::ExecCtx exec_ctx;
+ grpc_auth_metadata_context auth_md_ctx = {test_service_url, test_method,
+ nullptr, nullptr};
+ grpc_error* error = GRPC_ERROR_NONE;
+ char* subject_token_path =
+ write_tmp_jwt_file("{\"access_token\":\"test_subject_token\"}");
+ grpc_core::Json credential_source = grpc_core::Json::Parse(
+ absl::StrFormat(
+ "{\n"
+ "\"file\":\"%s\",\n"
+ "\"format\":\n"
+ "{\n"
+ "\"type\":\"json\",\n"
+ "\"subject_token_field_name\":\"access_token\"\n"
+ "}\n"
+ "}",
+ absl::StrReplaceAll(subject_token_path, {{"\\", "\\\\"}})),
+ &error);
+ GPR_ASSERT(error == GRPC_ERROR_NONE);
+ grpc_core::ExternalAccountCredentials::ExternalAccountCredentialsOptions
+ options = {
+ "external_account", // type;
+ "audience", // audience;
+ "subject_token_type", // subject_token_type;
+ "", // service_account_impersonation_url;
+ "https://foo.com:5555/token", // token_url;
+ "https://foo.com:5555/token_info", // token_info_url;
+ credential_source, // credential_source;
+ "quota_project_id", // quota_project_id;
+ "client_id", // client_id;
+ "client_secret", // client_secret;
+ };
+ auto creds =
+ grpc_core::FileExternalAccountCredentials::Create(options, {}, &error);
+ GPR_ASSERT(creds != nullptr);
+ GPR_ASSERT(error == GRPC_ERROR_NONE);
+ GPR_ASSERT(creds->min_security_level() == GRPC_PRIVACY_AND_INTEGRITY);
+ request_metadata_state* state =
+ make_request_metadata_state(GRPC_ERROR_NONE, emd, GPR_ARRAY_SIZE(emd));
+ grpc_httpcli_set_override(httpcli_get_should_not_be_called,
+ external_account_creds_httpcli_post_success);
+ run_request_metadata_test(creds.get(), auth_md_ctx, state);
+ grpc_core::ExecCtx::Get()->Flush();
+ grpc_httpcli_set_override(nullptr, nullptr);
+ GRPC_ERROR_UNREF(error);
+ gpr_free(subject_token_path);
+}
+
+static void test_file_external_account_creds_failure_file_not_found(void) {
+ grpc_core::ExecCtx exec_ctx;
+ grpc_auth_metadata_context auth_md_ctx = {test_service_url, test_method,
+ nullptr, nullptr};
+ grpc_error* error = GRPC_ERROR_NONE;
+ grpc_core::Json credential_source =
+ grpc_core::Json::Parse("{\"file\":\"non_exisiting_file\"}", &error);
+ GPR_ASSERT(error == GRPC_ERROR_NONE);
+ grpc_core::ExternalAccountCredentials::ExternalAccountCredentialsOptions
+ options = {
+ "external_account", // type;
+ "audience", // audience;
+ "subject_token_type", // subject_token_type;
+ "", // service_account_impersonation_url;
+ "https://foo.com:5555/token", // token_url;
+ "https://foo.com:5555/token_info", // token_info_url;
+ credential_source, // credential_source;
+ "quota_project_id", // quota_project_id;
+ "client_id", // client_id;
+ "client_secret", // client_secret;
+ };
+ auto creds =
+ grpc_core::FileExternalAccountCredentials::Create(options, {}, &error);
+ GPR_ASSERT(creds != nullptr);
+ GPR_ASSERT(error == GRPC_ERROR_NONE);
+ grpc_httpcli_set_override(httpcli_get_should_not_be_called,
+ httpcli_post_should_not_be_called);
+ error = GRPC_ERROR_CREATE_FROM_STATIC_STRING("Failed to load file");
+ grpc_error* expected_error = GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
+ "Error occurred when fetching oauth2 token.", &error, 1);
+ request_metadata_state* state =
+ make_request_metadata_state(expected_error, nullptr, 0);
+ run_request_metadata_test(creds.get(), auth_md_ctx, state);
+ grpc_core::ExecCtx::Get()->Flush();
+ grpc_httpcli_set_override(nullptr, nullptr);
+ GRPC_ERROR_UNREF(error);
+}
+
+static void test_file_external_account_creds_failure_invalid_json_content(
+ void) {
+ grpc_core::ExecCtx exec_ctx;
+ grpc_auth_metadata_context auth_md_ctx = {test_service_url, test_method,
+ nullptr, nullptr};
+ grpc_error* error = GRPC_ERROR_NONE;
+ char* subject_token_path = write_tmp_jwt_file("not_a_valid_json_file");
+ grpc_core::Json credential_source = grpc_core::Json::Parse(
+ absl::StrFormat(
+ "{\n"
+ "\"file\":\"%s\",\n"
+ "\"format\":\n"
+ "{\n"
+ "\"type\":\"json\",\n"
+ "\"subject_token_field_name\":\"access_token\"\n"
+ "}\n"
+ "}",
+ absl::StrReplaceAll(subject_token_path, {{"\\", "\\\\"}})),
+ &error);
+ GPR_ASSERT(error == GRPC_ERROR_NONE);
+ grpc_core::ExternalAccountCredentials::ExternalAccountCredentialsOptions
+ options = {
+ "external_account", // type;
+ "audience", // audience;
+ "subject_token_type", // subject_token_type;
+ "", // service_account_impersonation_url;
+ "https://foo.com:5555/token", // token_url;
+ "https://foo.com:5555/token_info", // token_info_url;
+ credential_source, // credential_source;
+ "quota_project_id", // quota_project_id;
+ "client_id", // client_id;
+ "client_secret", // client_secret;
+ };
+ auto creds =
+ grpc_core::FileExternalAccountCredentials::Create(options, {}, &error);
+ GPR_ASSERT(creds != nullptr);
+ GPR_ASSERT(error == GRPC_ERROR_NONE);
+ grpc_httpcli_set_override(httpcli_get_should_not_be_called,
+ httpcli_post_should_not_be_called);
+ error = GRPC_ERROR_CREATE_FROM_STATIC_STRING(
+ "The content of the file is not a valid json object.");
+ grpc_error* expected_error = GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
+ "Error occurred when fetching oauth2 token.", &error, 1);
+ request_metadata_state* state =
+ make_request_metadata_state(expected_error, nullptr, 0);
+ run_request_metadata_test(creds.get(), auth_md_ctx, state);
+ grpc_core::ExecCtx::Get()->Flush();
+ grpc_httpcli_set_override(nullptr, nullptr);
+ GRPC_ERROR_UNREF(error);
+ gpr_free(subject_token_path);
+}
+
int main(int argc, char** argv) {
grpc::testing::TestEnvironment env(argc, argv);
grpc_init();
test_get_well_known_google_credentials_file_path();
test_channel_creds_duplicate_without_call_creds();
test_auth_metadata_context();
+ test_external_account_creds_success();
+ test_external_account_creds_success_with_service_account_impersonation();
+ test_external_account_creds_failure_invalid_token_url();
+ test_external_account_creds_failure_invalid_service_account_impersonation_url();
+ test_external_account_creds_failure_token_exchange_response_missing_access_token();
+ test_url_external_account_creds_success_format_text();
+ test_url_external_account_creds_success_format_json();
+ test_url_external_account_creds_failure_invalid_credential_source_url();
+ test_file_external_account_creds_success_format_text();
+ test_file_external_account_creds_success_format_json();
+ test_file_external_account_creds_failure_file_not_found();
+ test_file_external_account_creds_failure_invalid_json_content();
grpc_shutdown();
return 0;
}
// Forward declaration.
class TlsCertificatesTestWatcher;
- static grpc_tls_certificate_distributor::PemKeyCertPairList MakeCertKeyPairs(
- const char* private_key, const char* certs) {
+ static grpc_core::PemKeyCertPairList MakeCertKeyPairs(const char* private_key,
+ const char* certs) {
if (strcmp(private_key, "") == 0 && strcmp(certs, "") == 0) {
return {};
}
gpr_malloc(sizeof(grpc_ssl_pem_key_cert_pair)));
ssl_pair->private_key = gpr_strdup(private_key);
ssl_pair->cert_chain = gpr_strdup(certs);
- grpc_tls_certificate_distributor::PemKeyCertPairList pem_key_cert_pairs;
+ grpc_core::PemKeyCertPairList pem_key_cert_pairs;
pem_key_cert_pairs.emplace_back(ssl_pair);
return pem_key_cert_pairs;
}
// if the status updates are correct.
struct CredentialInfo {
std::string root_certs;
- grpc_tls_certificate_distributor::PemKeyCertPairList key_cert_pairs;
- CredentialInfo(
- std::string root,
- grpc_tls_certificate_distributor::PemKeyCertPairList key_cert)
+ grpc_core::PemKeyCertPairList key_cert_pairs;
+ CredentialInfo(std::string root, grpc_core::PemKeyCertPairList key_cert)
: root_certs(std::move(root)), key_cert_pairs(std::move(key_cert)) {}
bool operator==(const CredentialInfo& other) const {
return root_certs == other.root_certs &&
}
// dtor sets state->watcher to nullptr.
- ~TlsCertificatesTestWatcher() { state_->watcher = nullptr; }
+ ~TlsCertificatesTestWatcher() override { state_->watcher = nullptr; }
void OnCertificatesChanged(
absl::optional<absl::string_view> root_certs,
- absl::optional<grpc_tls_certificate_distributor::PemKeyCertPairList>
- key_cert_pairs) override {
+ absl::optional<grpc_core::PemKeyCertPairList> key_cert_pairs) override {
std::string updated_root;
if (root_certs.has_value()) {
updated_root = std::string(*root_certs);
}
- grpc_tls_certificate_distributor::PemKeyCertPairList updated_identity;
+ grpc_core::PemKeyCertPairList updated_identity;
if (key_cert_pairs.has_value()) {
updated_identity = std::move(*key_cert_pairs);
}
namespace testing {
-static void SetKeyMaterials(grpc_tls_key_materials_config* config) {
- grpc_slice ca_slice, cert_slice, key_slice;
- GPR_ASSERT(GRPC_LOG_IF_ERROR("load_file",
- grpc_load_file(CA_CERT_PATH, 1, &ca_slice)));
- GPR_ASSERT(GRPC_LOG_IF_ERROR(
- "load_file", grpc_load_file(SERVER_CERT_PATH, 1, &cert_slice)));
- GPR_ASSERT(GRPC_LOG_IF_ERROR("load_file",
- grpc_load_file(SERVER_KEY_PATH, 1, &key_slice)));
- const char* ca_cert =
- reinterpret_cast<const char*> GRPC_SLICE_START_PTR(ca_slice);
- const char* server_cert =
- reinterpret_cast<const char*> GRPC_SLICE_START_PTR(cert_slice);
- const char* server_key =
- reinterpret_cast<const char*> GRPC_SLICE_START_PTR(key_slice);
- grpc_ssl_pem_key_cert_pair pem_key_cert_pair = {server_key, server_cert};
- const auto* pem_key_cert_pair_ptr = &pem_key_cert_pair;
- grpc_tls_key_materials_config_set_key_materials(config, ca_cert,
- &pem_key_cert_pair_ptr, 1);
- grpc_slice_unref(cert_slice);
- grpc_slice_unref(key_slice);
- grpc_slice_unref(ca_slice);
-}
-
-TEST(GrpcTlsCredentialsOptionsTest, SetKeyMaterials) {
- grpc_tls_key_materials_config* config =
- grpc_tls_key_materials_config_create();
- SetKeyMaterials(config);
- grpc_slice ca_slice, cert_slice, key_slice;
- GPR_ASSERT(GRPC_LOG_IF_ERROR("load_file",
- grpc_load_file(CA_CERT_PATH, 1, &ca_slice)));
- GPR_ASSERT(GRPC_LOG_IF_ERROR(
- "load_file", grpc_load_file(SERVER_CERT_PATH, 1, &cert_slice)));
- GPR_ASSERT(GRPC_LOG_IF_ERROR("load_file",
- grpc_load_file(SERVER_KEY_PATH, 1, &key_slice)));
- const char* ca_cert =
- reinterpret_cast<const char*> GRPC_SLICE_START_PTR(ca_slice);
- const char* server_cert =
- reinterpret_cast<const char*> GRPC_SLICE_START_PTR(cert_slice);
- const char* server_key =
- reinterpret_cast<const char*> GRPC_SLICE_START_PTR(key_slice);
- EXPECT_STREQ(config->pem_root_certs(), ca_cert);
- EXPECT_EQ(config->pem_key_cert_pair_list().size(), 1);
- EXPECT_STREQ(config->pem_key_cert_pair_list()[0].private_key(), server_key);
- EXPECT_STREQ(config->pem_key_cert_pair_list()[0].cert_chain(), server_cert);
- grpc_slice_unref(cert_slice);
- grpc_slice_unref(key_slice);
- grpc_slice_unref(ca_slice);
- delete config;
-}
-
TEST(GrpcTlsCredentialsOptionsTest, ErrorDetails) {
grpc_tls_error_details error_details;
EXPECT_STREQ(error_details.error_details().c_str(), "");
--- /dev/null
+//
+//
+// Copyright 2020 gRPC authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+//
+
+#include <gmock/gmock.h>
+#include <gtest/gtest.h>
+
+#include <grpc/grpc_security.h>
+
+#include "src/core/lib/security/security_connector/insecure/insecure_security_connector.h"
+#include "src/core/lib/security/security_connector/ssl_utils.h"
+#include "src/core/tsi/transport_security.h"
+#include "test/core/util/test_config.h"
+
+namespace grpc_core {
+namespace testing {
+namespace {
+
+TEST(InsecureSecurityConnector, MakeAuthContextTest) {
+ auto auth_context = InsecureChannelSecurityConnector::MakeAuthContext();
+ // Verify that peer identity is set
+ auto it = grpc_auth_context_peer_identity(auth_context.get());
+ const grpc_auth_property* prop = grpc_auth_property_iterator_next(&it);
+ ASSERT_NE(prop, nullptr);
+ EXPECT_STREQ(prop->name, GRPC_TRANSPORT_SECURITY_TYPE_PROPERTY_NAME);
+ EXPECT_STREQ(prop->value, kInsecureTransportSecurityType);
+ // Verify that security level is set to none
+ it = grpc_auth_context_find_properties_by_name(
+ auth_context.get(), GRPC_TRANSPORT_SECURITY_LEVEL_PROPERTY_NAME);
+ prop = grpc_auth_property_iterator_next(&it);
+ ASSERT_NE(prop, nullptr);
+ EXPECT_EQ(grpc_tsi_security_level_string_to_enum(prop->value),
+ GRPC_SECURITY_NONE);
+}
+
+} // namespace
+} // namespace testing
+} // namespace grpc_core
+
+int main(int argc, char** argv) {
+ ::testing::InitGoogleTest(&argc, argv);
+ grpc::testing::TestEnvironment env(argc, argv);
+ const auto result = RUN_ALL_TESTS();
+ return result;
+}
grpc_core::ExecCtx::Get()->Flush();
}
- grpc_shutdown_blocking();
+ grpc_shutdown();
return 0;
}
#include <string.h>
#include "src/core/lib/iomgr/load_file.h"
+#include "src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h"
+#include "src/core/lib/security/credentials/tls/tls_credentials.h"
#include "src/core/tsi/transport_security.h"
#include "test/core/util/test_config.h"
#define CA_CERT_PATH "src/core/tsi/test_creds/ca.pem"
-#define SERVER_CERT_PATH "src/core/tsi/test_creds/server1.pem"
-#define SERVER_KEY_PATH "src/core/tsi/test_creds/server1.key"
-
-namespace {
-
-enum CredReloadResult { FAIL, SUCCESS, UNCHANGED, ASYNC };
-
-void SetKeyMaterials(grpc_tls_key_materials_config* config) {
- grpc_slice ca_slice, cert_slice, key_slice;
- GPR_ASSERT(GRPC_LOG_IF_ERROR("load_file",
- grpc_load_file(CA_CERT_PATH, 1, &ca_slice)));
- GPR_ASSERT(GRPC_LOG_IF_ERROR(
- "load_file", grpc_load_file(SERVER_CERT_PATH, 1, &cert_slice)));
- GPR_ASSERT(GRPC_LOG_IF_ERROR("load_file",
- grpc_load_file(SERVER_KEY_PATH, 1, &key_slice)));
- const char* ca_cert =
- reinterpret_cast<const char*> GRPC_SLICE_START_PTR(ca_slice);
- const char* server_cert =
- reinterpret_cast<const char*> GRPC_SLICE_START_PTR(cert_slice);
- const char* server_key =
- reinterpret_cast<const char*> GRPC_SLICE_START_PTR(key_slice);
- grpc_ssl_pem_key_cert_pair pem_key_cert_pair = {server_key, server_cert};
- const auto* pem_key_cert_pair_ptr = &pem_key_cert_pair;
- grpc_tls_key_materials_config_set_key_materials(config, ca_cert,
- &pem_key_cert_pair_ptr, 1);
- grpc_slice_unref(cert_slice);
- grpc_slice_unref(key_slice);
- grpc_slice_unref(ca_slice);
-}
-
-int CredReloadSuccess(void* /*config_user_data*/,
- grpc_tls_credential_reload_arg* arg) {
- SetKeyMaterials(arg->key_materials_config);
- arg->status = GRPC_SSL_CERTIFICATE_CONFIG_RELOAD_NEW;
- return 0;
-}
-
-int CredReloadFail(void* /*config_user_data*/,
- grpc_tls_credential_reload_arg* arg) {
- arg->status = GRPC_SSL_CERTIFICATE_CONFIG_RELOAD_FAIL;
- return 0;
-}
-
-int CredReloadUnchanged(void* /*config_user_data*/,
- grpc_tls_credential_reload_arg* arg) {
- arg->status = GRPC_SSL_CERTIFICATE_CONFIG_RELOAD_UNCHANGED;
- return 0;
-}
-
-int CredReloadAsync(void* /*config_user_data*/,
- grpc_tls_credential_reload_arg* /*arg*/) {
- return 1;
-}
-
-} // namespace
+#define CLIENT_CERT_PATH "src/core/tsi/test_creds/multi-domain.pem"
+#define SERVER_CERT_PATH_0 "src/core/tsi/test_creds/server0.pem"
+#define SERVER_KEY_PATH_0 "src/core/tsi/test_creds/server0.key"
+#define SERVER_CERT_PATH_1 "src/core/tsi/test_creds/server1.pem"
+#define SERVER_KEY_PATH_1 "src/core/tsi/test_creds/server1.key"
namespace grpc {
namespace testing {
+constexpr const char* kRootCertName = "root_cert_name";
+constexpr const char* kIdentityCertName = "identity_cert_name";
+constexpr const char* kErrorMessage = "error_message";
+constexpr const char* kTargetName = "some_target";
+
class TlsSecurityConnectorTest : public ::testing::Test {
protected:
TlsSecurityConnectorTest() {}
void SetUp() override {
- options_ = grpc_tls_credentials_options_create()->Ref();
- config_ = grpc_tls_key_materials_config_create()->Ref();
- }
- void TearDown() override { config_->Unref(); }
- // Set credential reload config in options.
- void SetOptions(CredReloadResult type) {
- grpc_tls_credential_reload_config* reload_config = nullptr;
- switch (type) {
- case SUCCESS:
- reload_config = grpc_tls_credential_reload_config_create(
- nullptr, CredReloadSuccess, nullptr, nullptr);
- break;
- case FAIL:
- reload_config = grpc_tls_credential_reload_config_create(
- nullptr, CredReloadFail, nullptr, nullptr);
- break;
- case UNCHANGED:
- reload_config = grpc_tls_credential_reload_config_create(
- nullptr, CredReloadUnchanged, nullptr, nullptr);
- break;
- case ASYNC:
- reload_config = grpc_tls_credential_reload_config_create(
- nullptr, CredReloadAsync, nullptr, nullptr);
- break;
- default:
- break;
- }
- grpc_tls_credentials_options_set_credential_reload_config(options_.get(),
- reload_config);
+ grpc_slice ca_slice_1, ca_slice_0, cert_slice_1, key_slice_1, cert_slice_0,
+ key_slice_0;
+ GPR_ASSERT(GRPC_LOG_IF_ERROR("load_file",
+ grpc_load_file(CA_CERT_PATH, 1, &ca_slice_1)));
+ GPR_ASSERT(GRPC_LOG_IF_ERROR(
+ "load_file", grpc_load_file(CLIENT_CERT_PATH, 1, &ca_slice_0)));
+ GPR_ASSERT(GRPC_LOG_IF_ERROR(
+ "load_file", grpc_load_file(SERVER_CERT_PATH_1, 1, &cert_slice_1)));
+ GPR_ASSERT(GRPC_LOG_IF_ERROR(
+ "load_file", grpc_load_file(SERVER_KEY_PATH_1, 1, &key_slice_1)));
+ GPR_ASSERT(GRPC_LOG_IF_ERROR(
+ "load_file", grpc_load_file(SERVER_CERT_PATH_0, 1, &cert_slice_0)));
+ GPR_ASSERT(GRPC_LOG_IF_ERROR(
+ "load_file", grpc_load_file(SERVER_KEY_PATH_0, 1, &key_slice_0)));
+ root_cert_1_ = std::string(grpc_core::StringViewFromSlice(ca_slice_1));
+ root_cert_0_ = std::string(grpc_core::StringViewFromSlice(ca_slice_0));
+ std::string identity_key_1 =
+ std::string(grpc_core::StringViewFromSlice(key_slice_1));
+ std::string identity_key_0 =
+ std::string(grpc_core::StringViewFromSlice(key_slice_0));
+ std::string identity_cert_1 =
+ std::string(grpc_core::StringViewFromSlice(cert_slice_1));
+ std::string identity_cert_0 =
+ std::string(grpc_core::StringViewFromSlice(cert_slice_0));
+ grpc_ssl_pem_key_cert_pair* ssl_pair_1 =
+ static_cast<grpc_ssl_pem_key_cert_pair*>(
+ gpr_malloc(sizeof(grpc_ssl_pem_key_cert_pair)));
+ ssl_pair_1->private_key = gpr_strdup(identity_key_1.c_str());
+ ssl_pair_1->cert_chain = gpr_strdup(identity_cert_1.c_str());
+ identity_pairs_1_.emplace_back(ssl_pair_1);
+ grpc_ssl_pem_key_cert_pair* ssl_pair_0 =
+ static_cast<grpc_ssl_pem_key_cert_pair*>(
+ gpr_malloc(sizeof(grpc_ssl_pem_key_cert_pair)));
+ ssl_pair_0->private_key = gpr_strdup(identity_key_0.c_str());
+ ssl_pair_0->cert_chain = gpr_strdup(identity_cert_0.c_str());
+ identity_pairs_0_.emplace_back(ssl_pair_0);
+ grpc_slice_unref(ca_slice_1);
+ grpc_slice_unref(ca_slice_0);
+ grpc_slice_unref(cert_slice_1);
+ grpc_slice_unref(key_slice_1);
+ grpc_slice_unref(cert_slice_0);
+ grpc_slice_unref(key_slice_0);
}
- // Set key materials config.
- void SetKeyMaterialsConfig() { SetKeyMaterials(config_.get()); }
- grpc_core::RefCountedPtr<grpc_tls_credentials_options> options_;
- grpc_core::RefCountedPtr<grpc_tls_key_materials_config> config_;
-};
-TEST_F(TlsSecurityConnectorTest, NoKeysAndConfig) {
- grpc_ssl_certificate_config_reload_status reload_status;
- grpc_status_code status =
- TlsFetchKeyMaterials(config_, *options_, true, &reload_status);
- EXPECT_EQ(status, GRPC_STATUS_FAILED_PRECONDITION);
- options_->Unref();
-}
+ void TearDown() override {}
-TEST_F(TlsSecurityConnectorTest, NoKeysAndConfigAsAClient) {
- grpc_ssl_certificate_config_reload_status reload_status;
- grpc_status_code status =
- TlsFetchKeyMaterials(config_, *options_, false, &reload_status);
- EXPECT_EQ(status, GRPC_STATUS_OK);
- options_->Unref();
-}
-
-TEST_F(TlsSecurityConnectorTest, NoKeySuccessReload) {
- grpc_ssl_certificate_config_reload_status reload_status;
- SetOptions(SUCCESS);
- grpc_status_code status =
- TlsFetchKeyMaterials(config_, *options_, true, &reload_status);
- EXPECT_EQ(status, GRPC_STATUS_OK);
- EXPECT_EQ(reload_status, GRPC_SSL_CERTIFICATE_CONFIG_RELOAD_NEW);
- options_->Unref();
-}
-
-TEST_F(TlsSecurityConnectorTest, NoKeyFailReload) {
- grpc_ssl_certificate_config_reload_status reload_status;
- SetOptions(FAIL);
- grpc_status_code status =
- TlsFetchKeyMaterials(config_, *options_, true, &reload_status);
- EXPECT_EQ(status, GRPC_STATUS_INTERNAL);
- EXPECT_EQ(reload_status, GRPC_SSL_CERTIFICATE_CONFIG_RELOAD_FAIL);
- options_->Unref();
-}
-
-TEST_F(TlsSecurityConnectorTest, NoKeyAsyncReload) {
- grpc_ssl_certificate_config_reload_status reload_status =
- GRPC_SSL_CERTIFICATE_CONFIG_RELOAD_UNCHANGED;
- SetOptions(ASYNC);
- grpc_status_code status =
- TlsFetchKeyMaterials(config_, *options_, true, &reload_status);
- EXPECT_EQ(status, GRPC_STATUS_UNIMPLEMENTED);
- EXPECT_EQ(reload_status, GRPC_SSL_CERTIFICATE_CONFIG_RELOAD_UNCHANGED);
- options_->Unref();
-}
-
-TEST_F(TlsSecurityConnectorTest, NoKeyUnchangedReload) {
- grpc_ssl_certificate_config_reload_status reload_status =
- GRPC_SSL_CERTIFICATE_CONFIG_RELOAD_UNCHANGED;
- SetOptions(UNCHANGED);
- grpc_status_code status =
- TlsFetchKeyMaterials(config_, *options_, true, &reload_status);
- EXPECT_EQ(status, GRPC_STATUS_OK);
- EXPECT_EQ(reload_status, GRPC_SSL_CERTIFICATE_CONFIG_RELOAD_UNCHANGED);
- options_->Unref();
-}
+ std::string root_cert_1_;
+ std::string root_cert_0_;
+ grpc_core::PemKeyCertPairList identity_pairs_1_;
+ grpc_core::PemKeyCertPairList identity_pairs_0_;
+};
-TEST_F(TlsSecurityConnectorTest, WithKeyNoReload) {
- grpc_ssl_certificate_config_reload_status reload_status =
- GRPC_SSL_CERTIFICATE_CONFIG_RELOAD_UNCHANGED;
- SetKeyMaterialsConfig();
- grpc_status_code status =
- TlsFetchKeyMaterials(config_, *options_, true, &reload_status);
- EXPECT_EQ(status, GRPC_STATUS_OK);
- options_->Unref();
-}
+class TlsTestCertificateProvider : public ::grpc_tls_certificate_provider {
+ public:
+ explicit TlsTestCertificateProvider(
+ grpc_core::RefCountedPtr<grpc_tls_certificate_distributor> distributor)
+ : distributor_(std::move(distributor)) {}
+ ~TlsTestCertificateProvider() override {}
+ grpc_core::RefCountedPtr<grpc_tls_certificate_distributor> distributor()
+ const override {
+ return distributor_;
+ }
-TEST_F(TlsSecurityConnectorTest, WithKeySuccessReload) {
- grpc_ssl_certificate_config_reload_status reload_status;
- SetOptions(SUCCESS);
- SetKeyMaterialsConfig();
- grpc_status_code status =
- TlsFetchKeyMaterials(config_, *options_, true, &reload_status);
- EXPECT_EQ(status, GRPC_STATUS_OK);
- EXPECT_EQ(reload_status, GRPC_SSL_CERTIFICATE_CONFIG_RELOAD_NEW);
- options_->Unref();
-}
+ private:
+ grpc_core::RefCountedPtr<grpc_tls_certificate_distributor> distributor_;
+};
-TEST_F(TlsSecurityConnectorTest, WithKeyFailReload) {
- grpc_ssl_certificate_config_reload_status reload_status;
- SetOptions(FAIL);
- SetKeyMaterialsConfig();
- grpc_status_code status =
- TlsFetchKeyMaterials(config_, *options_, true, &reload_status);
- EXPECT_EQ(status, GRPC_STATUS_OK);
- EXPECT_EQ(reload_status, GRPC_SSL_CERTIFICATE_CONFIG_RELOAD_FAIL);
- options_->Unref();
+// Tests for ChannelSecurityConnector.
+TEST_F(TlsSecurityConnectorTest,
+ RootAndIdentityCertsObtainedWhenCreateChannelSecurityConnector) {
+ grpc_core::RefCountedPtr<grpc_tls_certificate_distributor> distributor =
+ grpc_core::MakeRefCounted<grpc_tls_certificate_distributor>();
+ distributor->SetKeyMaterials(kRootCertName, root_cert_0_, absl::nullopt);
+ distributor->SetKeyMaterials(kIdentityCertName, absl::nullopt,
+ identity_pairs_0_);
+ grpc_core::RefCountedPtr<::grpc_tls_certificate_provider> provider =
+ grpc_core::MakeRefCounted<TlsTestCertificateProvider>(distributor);
+ grpc_core::RefCountedPtr<grpc_tls_credentials_options> options =
+ grpc_core::MakeRefCounted<grpc_tls_credentials_options>();
+ options->set_certificate_provider(provider);
+ options->set_watch_root_cert(true);
+ options->set_watch_identity_pair(true);
+ options->set_root_cert_name(kRootCertName);
+ options->set_identity_cert_name(kIdentityCertName);
+ grpc_core::RefCountedPtr<TlsCredentials> credential =
+ grpc_core::MakeRefCounted<TlsCredentials>(options);
+ grpc_channel_args* new_args = nullptr;
+ grpc_core::RefCountedPtr<grpc_channel_security_connector> connector =
+ credential->create_security_connector(nullptr, kTargetName, nullptr,
+ &new_args);
+ EXPECT_NE(connector, nullptr);
+ grpc_core::TlsChannelSecurityConnector* tls_connector =
+ static_cast<grpc_core::TlsChannelSecurityConnector*>(connector.get());
+ EXPECT_NE(tls_connector->ClientHandshakerFactoryForTesting(), nullptr);
+ EXPECT_EQ(tls_connector->RootCertsForTesting(), root_cert_0_);
+ EXPECT_EQ(tls_connector->KeyCertPairListForTesting(), identity_pairs_0_);
+ distributor->SetKeyMaterials(kRootCertName, root_cert_1_, absl::nullopt);
+ distributor->SetKeyMaterials(kIdentityCertName, absl::nullopt,
+ identity_pairs_1_);
+ EXPECT_NE(tls_connector->ClientHandshakerFactoryForTesting(), nullptr);
+ EXPECT_EQ(tls_connector->RootCertsForTesting(), root_cert_1_);
+ EXPECT_EQ(tls_connector->KeyCertPairListForTesting(), identity_pairs_1_);
+ grpc_channel_args_destroy(new_args);
}
-TEST_F(TlsSecurityConnectorTest, WithKeyAsyncReload) {
- grpc_ssl_certificate_config_reload_status reload_status =
- GRPC_SSL_CERTIFICATE_CONFIG_RELOAD_UNCHANGED;
- SetOptions(ASYNC);
- SetKeyMaterialsConfig();
- grpc_status_code status =
- TlsFetchKeyMaterials(config_, *options_, true, &reload_status);
- EXPECT_EQ(status, GRPC_STATUS_OK);
- EXPECT_EQ(reload_status, GRPC_SSL_CERTIFICATE_CONFIG_RELOAD_UNCHANGED);
- options_->Unref();
+// Note that on client side, we don't have tests watching identity certs only,
+// because in TLS, the trust certs should always be presented. If we don't
+// provide, it will try to load certs from some default system locations, and
+// will hence fail on some systems.
+TEST_F(TlsSecurityConnectorTest,
+ RootCertsObtainedWhenCreateChannelSecurityConnector) {
+ grpc_core::RefCountedPtr<grpc_tls_certificate_distributor> distributor =
+ grpc_core::MakeRefCounted<grpc_tls_certificate_distributor>();
+ distributor->SetKeyMaterials(kRootCertName, root_cert_0_, absl::nullopt);
+ distributor->SetKeyMaterials(kIdentityCertName, absl::nullopt,
+ identity_pairs_0_);
+ grpc_core::RefCountedPtr<::grpc_tls_certificate_provider> provider =
+ grpc_core::MakeRefCounted<TlsTestCertificateProvider>(distributor);
+ // Create options only watching for root certificates.
+ grpc_core::RefCountedPtr<grpc_tls_credentials_options> root_options =
+ grpc_core::MakeRefCounted<grpc_tls_credentials_options>();
+ root_options->set_certificate_provider(provider);
+ root_options->set_watch_root_cert(true);
+ root_options->set_root_cert_name(kRootCertName);
+ grpc_core::RefCountedPtr<TlsCredentials> root_credential =
+ grpc_core::MakeRefCounted<TlsCredentials>(root_options);
+ grpc_channel_args* root_new_args = nullptr;
+ grpc_core::RefCountedPtr<grpc_channel_security_connector> root_connector =
+ root_credential->create_security_connector(nullptr, "some_target",
+ nullptr, &root_new_args);
+ EXPECT_NE(root_connector, nullptr);
+ grpc_core::TlsChannelSecurityConnector* tls_root_connector =
+ static_cast<grpc_core::TlsChannelSecurityConnector*>(
+ root_connector.get());
+ EXPECT_NE(tls_root_connector->ClientHandshakerFactoryForTesting(), nullptr);
+ EXPECT_EQ(tls_root_connector->RootCertsForTesting(), root_cert_0_);
+ distributor->SetKeyMaterials(kRootCertName, root_cert_1_, absl::nullopt);
+ EXPECT_NE(tls_root_connector->ClientHandshakerFactoryForTesting(), nullptr);
+ EXPECT_EQ(tls_root_connector->RootCertsForTesting(), root_cert_1_);
+ grpc_channel_args_destroy(root_new_args);
}
-TEST_F(TlsSecurityConnectorTest, WithKeyUnchangedReload) {
- grpc_ssl_certificate_config_reload_status reload_status =
- GRPC_SSL_CERTIFICATE_CONFIG_RELOAD_UNCHANGED;
- SetOptions(UNCHANGED);
- SetKeyMaterialsConfig();
- grpc_status_code status =
- TlsFetchKeyMaterials(config_, *options_, true, &reload_status);
- EXPECT_EQ(status, GRPC_STATUS_OK);
- EXPECT_EQ(reload_status, GRPC_SSL_CERTIFICATE_CONFIG_RELOAD_UNCHANGED);
- options_->Unref();
+TEST_F(TlsSecurityConnectorTest,
+ CertPartiallyObtainedWhenCreateChannelSecurityConnector) {
+ grpc_core::RefCountedPtr<grpc_tls_certificate_distributor> distributor =
+ grpc_core::MakeRefCounted<grpc_tls_certificate_distributor>();
+ distributor->SetKeyMaterials(kRootCertName, root_cert_0_, absl::nullopt);
+ grpc_core::RefCountedPtr<::grpc_tls_certificate_provider> provider =
+ grpc_core::MakeRefCounted<TlsTestCertificateProvider>(distributor);
+ // Registered the options watching both certs, but only root certs are
+ // available at distributor right now.
+ grpc_core::RefCountedPtr<grpc_tls_credentials_options> options =
+ grpc_core::MakeRefCounted<grpc_tls_credentials_options>();
+ options->set_certificate_provider(provider);
+ options->set_watch_root_cert(true);
+ options->set_watch_identity_pair(true);
+ options->set_root_cert_name(kRootCertName);
+ options->set_identity_cert_name(kIdentityCertName);
+ grpc_core::RefCountedPtr<TlsCredentials> credential =
+ grpc_core::MakeRefCounted<TlsCredentials>(options);
+ grpc_channel_args* new_args = nullptr;
+ grpc_core::RefCountedPtr<grpc_channel_security_connector> connector =
+ credential->create_security_connector(nullptr, kTargetName, nullptr,
+ &new_args);
+ EXPECT_NE(connector, nullptr);
+ grpc_core::TlsChannelSecurityConnector* tls_connector =
+ static_cast<grpc_core::TlsChannelSecurityConnector*>(connector.get());
+ // The client_handshaker_factory_ shouldn't be updated.
+ EXPECT_EQ(tls_connector->ClientHandshakerFactoryForTesting(), nullptr);
+ EXPECT_EQ(tls_connector->RootCertsForTesting(), root_cert_0_);
+ // After updating the root certs, the client_handshaker_factory_ should be
+ // updated.
+ distributor->SetKeyMaterials(kIdentityCertName, absl::nullopt,
+ identity_pairs_0_);
+ EXPECT_NE(tls_connector->ClientHandshakerFactoryForTesting(), nullptr);
+ EXPECT_EQ(tls_connector->RootCertsForTesting(), root_cert_0_);
+ EXPECT_EQ(tls_connector->KeyCertPairListForTesting(), identity_pairs_0_);
+ grpc_channel_args_destroy(new_args);
}
-TEST_F(TlsSecurityConnectorTest, CreateChannelSecurityConnectorSuccess) {
- SetOptions(SUCCESS);
- auto cred = std::unique_ptr<grpc_channel_credentials>(
- grpc_tls_credentials_create(options_.get()));
- const char* target_name = "some_target";
+TEST_F(TlsSecurityConnectorTest,
+ DistributorHasErrorForChannelSecurityConnector) {
+ grpc_core::RefCountedPtr<grpc_tls_certificate_distributor> distributor =
+ grpc_core::MakeRefCounted<grpc_tls_certificate_distributor>();
+ distributor->SetKeyMaterials(kRootCertName, root_cert_0_, absl::nullopt);
+ distributor->SetKeyMaterials(kIdentityCertName, absl::nullopt,
+ identity_pairs_0_);
+ grpc_core::RefCountedPtr<::grpc_tls_certificate_provider> provider =
+ grpc_core::MakeRefCounted<TlsTestCertificateProvider>(distributor);
+ grpc_core::RefCountedPtr<grpc_tls_credentials_options> options =
+ grpc_core::MakeRefCounted<grpc_tls_credentials_options>();
+ options->set_certificate_provider(provider);
+ options->set_watch_root_cert(true);
+ options->set_watch_identity_pair(true);
+ options->set_root_cert_name(kRootCertName);
+ options->set_identity_cert_name(kIdentityCertName);
+ grpc_core::RefCountedPtr<TlsCredentials> credential =
+ grpc_core::MakeRefCounted<TlsCredentials>(options);
grpc_channel_args* new_args = nullptr;
- auto connector =
- cred->create_security_connector(nullptr, target_name, nullptr, &new_args);
+ grpc_core::RefCountedPtr<grpc_channel_security_connector> connector =
+ credential->create_security_connector(nullptr, kTargetName, nullptr,
+ &new_args);
EXPECT_NE(connector, nullptr);
+ grpc_core::TlsChannelSecurityConnector* tls_connector =
+ static_cast<grpc_core::TlsChannelSecurityConnector*>(connector.get());
+ EXPECT_NE(tls_connector->ClientHandshakerFactoryForTesting(), nullptr);
+ EXPECT_EQ(tls_connector->RootCertsForTesting(), root_cert_0_);
+ EXPECT_EQ(tls_connector->KeyCertPairListForTesting(), identity_pairs_0_);
+ // Calling SetErrorForCert on distributor shouldn't invalidate the previous
+ // valid credentials.
+ distributor->SetErrorForCert(
+ kRootCertName, GRPC_ERROR_CREATE_FROM_STATIC_STRING(kErrorMessage),
+ absl::nullopt);
+ distributor->SetErrorForCert(
+ kIdentityCertName, absl::nullopt,
+ GRPC_ERROR_CREATE_FROM_STATIC_STRING(kErrorMessage));
+ EXPECT_NE(tls_connector->ClientHandshakerFactoryForTesting(), nullptr);
+ EXPECT_EQ(tls_connector->RootCertsForTesting(), root_cert_0_);
+ EXPECT_EQ(tls_connector->KeyCertPairListForTesting(), identity_pairs_0_);
grpc_channel_args_destroy(new_args);
}
TEST_F(TlsSecurityConnectorTest,
CreateChannelSecurityConnectorFailNoTargetName) {
- SetOptions(SUCCESS);
- auto cred = std::unique_ptr<grpc_channel_credentials>(
- grpc_tls_credentials_create(options_.get()));
+ grpc_core::RefCountedPtr<grpc_tls_credentials_options> options =
+ grpc_core::MakeRefCounted<grpc_tls_credentials_options>();
+ grpc_core::RefCountedPtr<TlsCredentials> credential =
+ grpc_core::MakeRefCounted<TlsCredentials>(options);
grpc_channel_args* new_args = nullptr;
+ grpc_core::RefCountedPtr<grpc_channel_security_connector> connector =
+ credential->create_security_connector(nullptr, nullptr, nullptr,
+ &new_args);
+ EXPECT_EQ(connector, nullptr);
+}
+
+TEST_F(TlsSecurityConnectorTest,
+ CreateChannelSecurityConnectorFailNoCredentials) {
auto connector =
- cred->create_security_connector(nullptr, nullptr, nullptr, &new_args);
+ grpc_core::TlsChannelSecurityConnector::CreateTlsChannelSecurityConnector(
+ nullptr, grpc_core::MakeRefCounted<grpc_tls_credentials_options>(),
+ nullptr, kTargetName, nullptr, nullptr);
EXPECT_EQ(connector, nullptr);
}
-TEST_F(TlsSecurityConnectorTest, CreateChannelSecurityConnectorFailInit) {
- SetOptions(FAIL);
- auto cred = std::unique_ptr<grpc_channel_credentials>(
- grpc_tls_credentials_create(options_.get()));
- grpc_channel_args* new_args = nullptr;
+TEST_F(TlsSecurityConnectorTest, CreateChannelSecurityConnectorFailNoOptions) {
+ grpc_core::RefCountedPtr<grpc_tls_credentials_options> options =
+ grpc_core::MakeRefCounted<grpc_tls_credentials_options>();
+ grpc_core::RefCountedPtr<TlsCredentials> credential =
+ grpc_core::MakeRefCounted<TlsCredentials>(options);
auto connector =
- cred->create_security_connector(nullptr, nullptr, nullptr, &new_args);
+ grpc_core::TlsChannelSecurityConnector::CreateTlsChannelSecurityConnector(
+ credential, nullptr, nullptr, kTargetName, nullptr, nullptr);
EXPECT_EQ(connector, nullptr);
}
GPR_ASSERT(tsi_construct_string_peer_property_from_cstring(
TSI_X509_SUBJECT_ALTERNATIVE_NAME_PEER_PROPERTY, target_name,
&peer.properties[0]) == TSI_OK);
- grpc_error* error = grpc_core::TlsCheckHostName(target_name, &peer);
+ grpc_error* error = grpc_core::internal::TlsCheckHostName(target_name, &peer);
tsi_peer_destruct(&peer);
EXPECT_EQ(error, GRPC_ERROR_NONE);
GRPC_ERROR_UNREF(error);
- options_->Unref();
}
TEST_F(TlsSecurityConnectorTest, TlsCheckHostNameFail) {
GPR_ASSERT(tsi_construct_string_peer_property_from_cstring(
TSI_X509_SUBJECT_ALTERNATIVE_NAME_PEER_PROPERTY, another_name,
&peer.properties[0]) == TSI_OK);
- grpc_error* error = grpc_core::TlsCheckHostName(target_name, &peer);
+ grpc_error* error = grpc_core::internal::TlsCheckHostName(target_name, &peer);
tsi_peer_destruct(&peer);
EXPECT_NE(error, GRPC_ERROR_NONE);
GRPC_ERROR_UNREF(error);
- options_->Unref();
}
-TEST_F(TlsSecurityConnectorTest, CreateServerSecurityConnectorSuccess) {
- SetOptions(SUCCESS);
- auto cred = std::unique_ptr<grpc_server_credentials>(
- grpc_tls_server_credentials_create(options_.get()));
- auto connector = cred->create_security_connector();
+// Tests for ServerSecurityConnector.
+TEST_F(TlsSecurityConnectorTest,
+ RootAndIdentityCertsObtainedWhenCreateServerSecurityConnector) {
+ grpc_core::RefCountedPtr<grpc_tls_certificate_distributor> distributor =
+ grpc_core::MakeRefCounted<grpc_tls_certificate_distributor>();
+ distributor->SetKeyMaterials(kRootCertName, root_cert_0_, absl::nullopt);
+ distributor->SetKeyMaterials(kIdentityCertName, absl::nullopt,
+ identity_pairs_0_);
+ grpc_core::RefCountedPtr<::grpc_tls_certificate_provider> provider =
+ grpc_core::MakeRefCounted<TlsTestCertificateProvider>(distributor);
+ grpc_core::RefCountedPtr<grpc_tls_credentials_options> options =
+ grpc_core::MakeRefCounted<grpc_tls_credentials_options>();
+ options->set_certificate_provider(provider);
+ options->set_watch_root_cert(true);
+ options->set_watch_identity_pair(true);
+ options->set_root_cert_name(kRootCertName);
+ options->set_identity_cert_name(kIdentityCertName);
+ grpc_core::RefCountedPtr<TlsServerCredentials> credential =
+ grpc_core::MakeRefCounted<TlsServerCredentials>(options);
+ grpc_core::RefCountedPtr<grpc_server_security_connector> connector =
+ credential->create_security_connector();
+ EXPECT_NE(connector, nullptr);
+ grpc_core::TlsServerSecurityConnector* tls_connector =
+ static_cast<grpc_core::TlsServerSecurityConnector*>(connector.get());
+ EXPECT_NE(tls_connector->ServerHandshakerFactoryForTesting(), nullptr);
+ EXPECT_EQ(tls_connector->RootCertsForTesting(), root_cert_0_);
+ EXPECT_EQ(tls_connector->KeyCertPairListForTesting(), identity_pairs_0_);
+ distributor->SetKeyMaterials(kRootCertName, root_cert_1_, absl::nullopt);
+ distributor->SetKeyMaterials(kIdentityCertName, absl::nullopt,
+ identity_pairs_1_);
+ EXPECT_NE(tls_connector->ServerHandshakerFactoryForTesting(), nullptr);
+ EXPECT_EQ(tls_connector->RootCertsForTesting(), root_cert_1_);
+ EXPECT_EQ(tls_connector->KeyCertPairListForTesting(), identity_pairs_1_);
+}
+
+// Note that on server side, we don't have tests watching root certs only,
+// because in TLS, the identity certs should always be presented. If we don't
+// provide, it will try to load certs from some default system locations, and
+// will hence fail on some systems.
+TEST_F(TlsSecurityConnectorTest,
+ IdentityCertsObtainedWhenCreateServerSecurityConnector) {
+ grpc_core::RefCountedPtr<grpc_tls_certificate_distributor> distributor =
+ grpc_core::MakeRefCounted<grpc_tls_certificate_distributor>();
+ distributor->SetKeyMaterials(kRootCertName, root_cert_0_, absl::nullopt);
+ distributor->SetKeyMaterials(kIdentityCertName, absl::nullopt,
+ identity_pairs_0_);
+ grpc_core::RefCountedPtr<::grpc_tls_certificate_provider> provider =
+ grpc_core::MakeRefCounted<TlsTestCertificateProvider>(distributor);
+ // Create options only watching for identity certificates.
+ grpc_core::RefCountedPtr<grpc_tls_credentials_options> identity_options =
+ grpc_core::MakeRefCounted<grpc_tls_credentials_options>();
+ identity_options->set_certificate_provider(provider);
+ identity_options->set_watch_identity_pair(true);
+ identity_options->set_identity_cert_name(kIdentityCertName);
+ grpc_core::RefCountedPtr<TlsServerCredentials> identity_credential =
+ grpc_core::MakeRefCounted<TlsServerCredentials>(identity_options);
+ grpc_core::RefCountedPtr<grpc_server_security_connector> identity_connector =
+ identity_credential->create_security_connector();
+ EXPECT_NE(identity_connector, nullptr);
+ grpc_core::TlsServerSecurityConnector* tls_identity_connector =
+ static_cast<grpc_core::TlsServerSecurityConnector*>(
+ identity_connector.get());
+ EXPECT_NE(tls_identity_connector->ServerHandshakerFactoryForTesting(),
+ nullptr);
+ EXPECT_EQ(tls_identity_connector->KeyCertPairListForTesting(),
+ identity_pairs_0_);
+ distributor->SetKeyMaterials(kIdentityCertName, absl::nullopt,
+ identity_pairs_1_);
+ EXPECT_NE(tls_identity_connector->ServerHandshakerFactoryForTesting(),
+ nullptr);
+ EXPECT_EQ(tls_identity_connector->KeyCertPairListForTesting(),
+ identity_pairs_1_);
+}
+
+TEST_F(TlsSecurityConnectorTest,
+ CertPartiallyObtainedWhenCreateServerSecurityConnector) {
+ grpc_core::RefCountedPtr<grpc_tls_certificate_distributor> distributor =
+ grpc_core::MakeRefCounted<grpc_tls_certificate_distributor>();
+ distributor->SetKeyMaterials(kIdentityCertName, absl::nullopt,
+ identity_pairs_0_);
+ grpc_core::RefCountedPtr<::grpc_tls_certificate_provider> provider =
+ grpc_core::MakeRefCounted<TlsTestCertificateProvider>(distributor);
+ // Registered the options watching both certs, but only root certs are
+ // available at distributor right now.
+ grpc_core::RefCountedPtr<grpc_tls_credentials_options> options =
+ grpc_core::MakeRefCounted<grpc_tls_credentials_options>();
+ options->set_certificate_provider(provider);
+ options->set_watch_root_cert(true);
+ options->set_watch_identity_pair(true);
+ options->set_root_cert_name(kRootCertName);
+ options->set_identity_cert_name(kIdentityCertName);
+ grpc_core::RefCountedPtr<TlsServerCredentials> credential =
+ grpc_core::MakeRefCounted<TlsServerCredentials>(options);
+ grpc_core::RefCountedPtr<grpc_server_security_connector> connector =
+ credential->create_security_connector();
+ EXPECT_NE(connector, nullptr);
+ grpc_core::TlsServerSecurityConnector* tls_connector =
+ static_cast<grpc_core::TlsServerSecurityConnector*>(connector.get());
+ // The server_handshaker_factory_ shouldn't be updated.
+ EXPECT_EQ(tls_connector->ServerHandshakerFactoryForTesting(), nullptr);
+ EXPECT_EQ(tls_connector->KeyCertPairListForTesting(), identity_pairs_0_);
+ // After updating the root certs, the server_handshaker_factory_ should be
+ // updated.
+ distributor->SetKeyMaterials(kRootCertName, root_cert_0_, absl::nullopt);
+ EXPECT_NE(tls_connector->ServerHandshakerFactoryForTesting(), nullptr);
+ EXPECT_EQ(tls_connector->RootCertsForTesting(), root_cert_0_);
+ EXPECT_EQ(tls_connector->KeyCertPairListForTesting(), identity_pairs_0_);
+}
+
+TEST_F(TlsSecurityConnectorTest,
+ DistributorHasErrorForServerSecurityConnector) {
+ grpc_core::RefCountedPtr<grpc_tls_certificate_distributor> distributor =
+ grpc_core::MakeRefCounted<grpc_tls_certificate_distributor>();
+ distributor->SetKeyMaterials(kRootCertName, root_cert_0_, absl::nullopt);
+ distributor->SetKeyMaterials(kIdentityCertName, absl::nullopt,
+ identity_pairs_0_);
+ grpc_core::RefCountedPtr<::grpc_tls_certificate_provider> provider =
+ grpc_core::MakeRefCounted<TlsTestCertificateProvider>(distributor);
+ grpc_core::RefCountedPtr<grpc_tls_credentials_options> options =
+ grpc_core::MakeRefCounted<grpc_tls_credentials_options>();
+ options->set_certificate_provider(provider);
+ options->set_watch_root_cert(true);
+ options->set_watch_identity_pair(true);
+ options->set_root_cert_name(kRootCertName);
+ options->set_identity_cert_name(kIdentityCertName);
+ grpc_core::RefCountedPtr<TlsServerCredentials> credential =
+ grpc_core::MakeRefCounted<TlsServerCredentials>(options);
+ grpc_core::RefCountedPtr<grpc_server_security_connector> connector =
+ credential->create_security_connector();
EXPECT_NE(connector, nullptr);
+ grpc_core::TlsServerSecurityConnector* tls_connector =
+ static_cast<grpc_core::TlsServerSecurityConnector*>(connector.get());
+ EXPECT_NE(tls_connector->ServerHandshakerFactoryForTesting(), nullptr);
+ EXPECT_EQ(tls_connector->RootCertsForTesting(), root_cert_0_);
+ EXPECT_EQ(tls_connector->KeyCertPairListForTesting(), identity_pairs_0_);
+ // Calling SetErrorForCert on distributor shouldn't invalidate the previous
+ // valid credentials.
+ distributor->SetErrorForCert(
+ kRootCertName, GRPC_ERROR_CREATE_FROM_STATIC_STRING(kErrorMessage),
+ absl::nullopt);
+ distributor->SetErrorForCert(
+ kIdentityCertName, absl::nullopt,
+ GRPC_ERROR_CREATE_FROM_STATIC_STRING(kErrorMessage));
+ EXPECT_NE(tls_connector->ServerHandshakerFactoryForTesting(), nullptr);
+ EXPECT_EQ(tls_connector->RootCertsForTesting(), root_cert_0_);
+ EXPECT_EQ(tls_connector->KeyCertPairListForTesting(), identity_pairs_0_);
+}
+
+TEST_F(TlsSecurityConnectorTest,
+ CreateServerSecurityConnectorFailNoCredentials) {
+ auto connector =
+ grpc_core::TlsServerSecurityConnector::CreateTlsServerSecurityConnector(
+ nullptr, grpc_core::MakeRefCounted<grpc_tls_credentials_options>());
+ EXPECT_EQ(connector, nullptr);
}
-TEST_F(TlsSecurityConnectorTest, CreateServerSecurityConnectorFailInit) {
- SetOptions(FAIL);
- auto cred = std::unique_ptr<grpc_server_credentials>(
- grpc_tls_server_credentials_create(options_.get()));
- auto connector = cred->create_security_connector();
+TEST_F(TlsSecurityConnectorTest, CreateServerSecurityConnectorFailNoOptions) {
+ grpc_core::RefCountedPtr<grpc_tls_credentials_options> options =
+ grpc_core::MakeRefCounted<grpc_tls_credentials_options>();
+ grpc_core::RefCountedPtr<TlsServerCredentials> credential =
+ grpc_core::MakeRefCounted<TlsServerCredentials>(options);
+ auto connector =
+ grpc_core::TlsServerSecurityConnector::CreateTlsServerSecurityConnector(
+ credential, nullptr);
EXPECT_EQ(connector, nullptr);
}
grpc_pollset_worker* worker = nullptr;
if (!GRPC_LOG_IF_ERROR(
"pollset_work",
- grpc_pollset_work(sync.pollset, &worker, GRPC_MILLIS_INF_FUTURE)))
+ grpc_pollset_work(sync.pollset, &worker, GRPC_MILLIS_INF_FUTURE))) {
sync.is_done = true;
+ }
gpr_mu_unlock(sync.mu);
grpc_core::ExecCtx::Get()->Flush();
gpr_mu_lock(sync.mu);
grpc_slice res = grpc_base64_decode_with_len(
reinterpret_cast<const char*>(data + 1), size - 1, url_safe);
grpc_slice_unref(res);
- grpc_shutdown_blocking();
+ grpc_shutdown();
return 0;
}
}
grpc_slice_unref(grpc_permissive_percent_decode_slice(input));
grpc_slice_unref(input);
- grpc_shutdown_blocking();
+ grpc_shutdown();
return 0;
}
grpc_slice_unref(output);
grpc_slice_unref(decoded_output);
grpc_slice_unref(permissive_decoded_output);
- grpc_shutdown_blocking();
+ grpc_shutdown();
}
extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
printf("%lx", (unsigned long) grpc_alts_server_credentials_create);
printf("%lx", (unsigned long) grpc_local_credentials_create);
printf("%lx", (unsigned long) grpc_local_server_credentials_create);
+ printf("%lx", (unsigned long) grpc_tls_identity_pairs_create);
+ printf("%lx", (unsigned long) grpc_tls_identity_pairs_add_pair);
+ printf("%lx", (unsigned long) grpc_tls_identity_pairs_destroy);
+ printf("%lx", (unsigned long) grpc_tls_certificate_provider_static_data_create);
+ printf("%lx", (unsigned long) grpc_tls_certificate_provider_release);
printf("%lx", (unsigned long) grpc_tls_credentials_options_create);
printf("%lx", (unsigned long) grpc_tls_credentials_options_set_cert_request_type);
printf("%lx", (unsigned long) grpc_tls_credentials_options_set_server_verification_option);
- printf("%lx", (unsigned long) grpc_tls_credentials_options_set_key_materials_config);
- printf("%lx", (unsigned long) grpc_tls_credentials_options_set_credential_reload_config);
+ printf("%lx", (unsigned long) grpc_tls_credentials_options_set_certificate_provider);
+ printf("%lx", (unsigned long) grpc_tls_credentials_options_watch_root_certs);
+ printf("%lx", (unsigned long) grpc_tls_credentials_options_set_root_cert_name);
+ printf("%lx", (unsigned long) grpc_tls_credentials_options_watch_identity_key_cert_pairs);
+ printf("%lx", (unsigned long) grpc_tls_credentials_options_set_identity_cert_name);
printf("%lx", (unsigned long) grpc_tls_credentials_options_set_server_authorization_check_config);
- printf("%lx", (unsigned long) grpc_tls_key_materials_config_create);
- printf("%lx", (unsigned long) grpc_tls_key_materials_config_set_key_materials);
- printf("%lx", (unsigned long) grpc_tls_key_materials_config_set_version);
- printf("%lx", (unsigned long) grpc_tls_key_materials_config_get_version);
- printf("%lx", (unsigned long) grpc_tls_credential_reload_config_create);
printf("%lx", (unsigned long) grpc_tls_server_authorization_check_config_create);
+ printf("%lx", (unsigned long) grpc_tls_server_authorization_check_config_release);
printf("%lx", (unsigned long) grpc_xds_credentials_create);
printf("%lx", (unsigned long) grpc_raw_byte_buffer_create);
printf("%lx", (unsigned long) grpc_raw_compressed_byte_buffer_create);
while (grpc_completion_queue_next(server_cq,
gpr_inf_future(GPR_CLOCK_REALTIME), nullptr)
- .type != GRPC_QUEUE_SHUTDOWN)
- ;
+ .type != GRPC_QUEUE_SHUTDOWN) {
+ }
while (grpc_completion_queue_next(cq, gpr_inf_future(GPR_CLOCK_REALTIME),
nullptr)
- .type != GRPC_QUEUE_SHUTDOWN)
- ;
+ .type != GRPC_QUEUE_SHUTDOWN) {
+ }
for (size_t i = 0; i < NUM_CONNECTIONS; i++) {
grpc_channel_destroy(channels[i]);
grpc_completion_queue_shutdown(cq_);
while (grpc_completion_queue_next(cq_, gpr_inf_future(GPR_CLOCK_REALTIME),
nullptr)
- .type != GRPC_QUEUE_SHUTDOWN)
- ;
+ .type != GRPC_QUEUE_SHUTDOWN) {
+ }
grpc_completion_queue_destroy(cq_);
return num_calls_handled_;
}
// including settings frames with window size increases
while (grpc_completion_queue_next(
call_cq, gpr_inf_future(GPR_CLOCK_REALTIME), nullptr)
- .type != GRPC_QUEUE_SHUTDOWN)
- ;
+ .type != GRPC_QUEUE_SHUTDOWN) {
+ }
});
grpc_call_cancel(call, nullptr);
grpc_call_unref(call);
grpc_completion_queue_shutdown(cq);
while (grpc_completion_queue_next(cq, gpr_inf_future(GPR_CLOCK_REALTIME),
nullptr)
- .type != GRPC_QUEUE_SHUTDOWN)
- ;
+ .type != GRPC_QUEUE_SHUTDOWN) {
+ }
grpc_completion_queue_destroy(cq);
}));
}
#include <gtest/gtest.h>
+#include "absl/memory/memory.h"
#include "absl/strings/str_cat.h"
#include <grpc/grpc.h>
cq_ = grpc_completion_queue_create_for_next(nullptr);
grpc_server_register_completion_queue(server_, cq_, nullptr);
grpc_server_start(server_);
- thread_.reset(new std::thread(std::bind(&ServerThread::Serve, this)));
+ thread_ =
+ absl::make_unique<std::thread>(std::bind(&ServerThread::Serve, this));
}
void Shutdown() {
grpc_completion_queue_shutdown(cq);
while (grpc_completion_queue_next(cq, gpr_inf_future(GPR_CLOCK_REALTIME),
nullptr)
- .type != GRPC_QUEUE_SHUTDOWN)
- ;
+ .type != GRPC_QUEUE_SHUTDOWN) {
+ }
grpc_server_destroy(server);
grpc_completion_queue_destroy(cq);
}
grpc_server_shutdown_and_notify(server, cq, (void*)(1000));
while (grpc_completion_queue_next(cq, gpr_inf_future(GPR_CLOCK_REALTIME),
nullptr)
- .tag != (void*)(1000))
- ;
+ .tag != (void*)(1000)) {
+ }
grpc_server_destroy(server);
}
grpc_channel_arg_integer_create(
const_cast<char*>(GRPC_ARG_HTTP2_MAX_PINGS_WITHOUT_DATA), 0),
grpc_channel_arg_integer_create(
- const_cast<char*>(
- GRPC_ARG_HTTP2_MIN_SENT_PING_INTERVAL_WITHOUT_DATA_MS),
- 0),
- grpc_channel_arg_integer_create(
const_cast<char*>(GRPC_ARG_KEEPALIVE_TIME_MS), 1 * 1000),
grpc_channel_arg_integer_create(
const_cast<char*>(GRPC_ARG_HTTP2_BDP_PROBE), 0)};
grpc_completion_queue_shutdown(cq);
while (grpc_completion_queue_next(cq, gpr_inf_future(GPR_CLOCK_REALTIME),
nullptr)
- .type != GRPC_QUEUE_SHUTDOWN)
- ;
+ .type != GRPC_QUEUE_SHUTDOWN) {
+ }
grpc_completion_queue_destroy(cq);
}
grpc_channel_arg_integer_create(
const_cast<char*>(GRPC_ARG_HTTP2_MAX_PINGS_WITHOUT_DATA), 0),
grpc_channel_arg_integer_create(
- const_cast<char*>(
- GRPC_ARG_HTTP2_MIN_SENT_PING_INTERVAL_WITHOUT_DATA_MS),
- 0),
- grpc_channel_arg_integer_create(
const_cast<char*>(GRPC_ARG_KEEPALIVE_PERMIT_WITHOUT_CALLS), 0),
grpc_channel_arg_integer_create(
const_cast<char*>(GRPC_ARG_KEEPALIVE_TIME_MS), 1 * 1000),
grpc_completion_queue_shutdown(cq);
while (grpc_completion_queue_next(cq, gpr_inf_future(GPR_CLOCK_REALTIME),
nullptr)
- .type != GRPC_QUEUE_SHUTDOWN)
- ;
+ .type != GRPC_QUEUE_SHUTDOWN) {
+ }
grpc_completion_queue_destroy(cq);
}
grpc_channel_arg_integer_create(
const_cast<char*>(GRPC_ARG_HTTP2_MAX_PINGS_WITHOUT_DATA), 0),
grpc_channel_arg_integer_create(
- const_cast<char*>(
- GRPC_ARG_HTTP2_MIN_SENT_PING_INTERVAL_WITHOUT_DATA_MS),
- 0),
- grpc_channel_arg_integer_create(
const_cast<char*>(GRPC_ARG_KEEPALIVE_PERMIT_WITHOUT_CALLS), 0),
grpc_channel_arg_integer_create(
const_cast<char*>(GRPC_ARG_KEEPALIVE_TIME_MS), 1 * 1000),
grpc_completion_queue_shutdown(cq);
while (grpc_completion_queue_next(cq, gpr_inf_future(GPR_CLOCK_REALTIME),
nullptr)
- .type != GRPC_QUEUE_SHUTDOWN)
- ;
+ .type != GRPC_QUEUE_SHUTDOWN) {
+ }
grpc_completion_queue_destroy(cq);
}
grpc_channel_arg_integer_create(
const_cast<char*>(GRPC_ARG_HTTP2_MAX_PINGS_WITHOUT_DATA), 0),
grpc_channel_arg_integer_create(
- const_cast<char*>(
- GRPC_ARG_HTTP2_MIN_SENT_PING_INTERVAL_WITHOUT_DATA_MS),
- 0),
- grpc_channel_arg_integer_create(
const_cast<char*>(GRPC_ARG_KEEPALIVE_PERMIT_WITHOUT_CALLS), 1)};
grpc_channel_args client_channel_args = {GPR_ARRAY_SIZE(client_args),
client_args};
grpc_completion_queue_shutdown(cq);
while (grpc_completion_queue_next(cq, gpr_inf_future(GPR_CLOCK_REALTIME),
nullptr)
- .type != GRPC_QUEUE_SHUTDOWN)
- ;
+ .type != GRPC_QUEUE_SHUTDOWN) {
+ }
grpc_completion_queue_destroy(cq);
}
status_(status),
destroyed_(destroyed) {}
- ~Watcher() {
+ ~Watcher() override {
if (destroyed_ != nullptr) *destroyed_ = true;
}
name = "fake_handshaker_server",
testonly = True,
srcs = ["fake_handshaker_server_main.cc"],
+ external_deps = [
+ "absl/flags:flag",
+ ],
language = "C++",
deps = [
"fake_handshaker_lib",
* limitations under the License.
*
*/
-#include "test/core/tsi/alts/fake_handshaker/fake_handshaker_server.h"
-
-#include <sstream>
-
-#include <gflags/gflags.h>
#include <grpc/support/log.h>
#include <grpcpp/impl/codegen/service_type.h>
#include <grpcpp/server_builder.h>
+#include <sstream>
+
+#include "absl/flags/flag.h"
+#include "test/core/tsi/alts/fake_handshaker/fake_handshaker_server.h"
#include "test/core/util/test_config.h"
#include "test/cpp/util/test_config.h"
-DEFINE_int32(handshaker_port, 55056,
- "TCP port on which the fake handshaker server listens to.");
+ABSL_FLAG(int32_t, handshaker_port, 55056,
+ "TCP port on which the fake handshaker server listens to.");
static void RunFakeHandshakerServer(const std::string& server_address) {
std::unique_ptr<grpc::Service> service =
grpc::testing::TestEnvironment env(argc, argv);
grpc::testing::InitTest(&argc, &argv, true);
- GPR_ASSERT(FLAGS_handshaker_port != 0);
+ GPR_ASSERT(absl::GetFlag(FLAGS_handshaker_port) != 0);
std::ostringstream server_address;
- server_address << "[::1]:" << FLAGS_handshaker_port;
+ server_address << "[::1]:" << absl::GetFlag(FLAGS_handshaker_port);
RunFakeHandshakerServer(server_address.str());
return 0;
language = "C++",
# TODO(apolcyn): make the fake TCP server used in this
# test portable to Windows.
- tags = ["no_windows"],
+ tags = [
+ "no_mac", # TODO(https://github.com/grpc/grpc/issues/24747): Disable temporarily
+ "no_windows",
+ ],
deps = [
"//:alts_util",
"//:grpc",
#include <set>
#include <thread>
+#include "absl/memory/memory.h"
#include "absl/strings/str_cat.h"
#include <grpc/grpc.h>
grpc_server_start(server_);
gpr_log(GPR_DEBUG, "Start TestServer %p. listen on %s", this,
server_addr_.c_str());
- server_thd_ =
- std::unique_ptr<std::thread>(new std::thread(PollUntilShutdown, this));
+ server_thd_ = absl::make_unique<std::thread>(PollUntilShutdown, this);
}
~TestServer() {
loops_(loops),
expected_connectivity_states_(expected_connectivity_states),
reconnect_backoff_ms_(reconnect_backoff_ms) {
- thd_ = std::unique_ptr<std::thread>(new std::thread(ConnectLoop, this));
+ thd_ = absl::make_unique<std::thread>(ConnectLoop, this);
}
~ConnectLoopRunner() { thd_->join(); }
gpr_log(GPR_DEBUG,
"start performing concurrent expected-to-succeed connects");
for (size_t i = 0; i < num_concurrent_connects; i++) {
- connect_loop_runners.push_back(
- std::unique_ptr<ConnectLoopRunner>(new ConnectLoopRunner(
- test_server.address(), fake_handshake_server.address(),
- 15 /* per connect deadline seconds */, 5 /* loops */,
- GRPC_CHANNEL_READY /* expected connectivity states */,
- 0 /* reconnect_backoff_ms unset */)));
+ connect_loop_runners.push_back(absl::make_unique<ConnectLoopRunner>(
+ test_server.address(), fake_handshake_server.address(),
+ 15 /* per connect deadline seconds */, 5 /* loops */,
+ GRPC_CHANNEL_READY /* expected connectivity states */,
+ 0 /* reconnect_backoff_ms unset */));
}
connect_loop_runners.clear();
gpr_log(GPR_DEBUG,
abort();
}
gpr_event_init(&stop_ev_);
- run_server_loop_thd_ =
- std::unique_ptr<std::thread>(new std::thread(RunServerLoop, this));
+ run_server_loop_thd_ = absl::make_unique<std::thread>(RunServerLoop, this);
}
~FakeTcpServer() {
size_t num_concurrent_connects = 100;
gpr_log(GPR_DEBUG, "start performing concurrent expected-to-fail connects");
for (size_t i = 0; i < num_concurrent_connects; i++) {
- connect_loop_runners.push_back(
- std::unique_ptr<ConnectLoopRunner>(new ConnectLoopRunner(
- fake_backend_server.address(), fake_handshake_server.address(),
- 10 /* per connect deadline seconds */, 3 /* loops */,
- GRPC_CHANNEL_TRANSIENT_FAILURE /* expected connectivity states */,
- 0 /* reconnect_backoff_ms unset */)));
+ connect_loop_runners.push_back(absl::make_unique<ConnectLoopRunner>(
+ fake_backend_server.address(), fake_handshake_server.address(),
+ 10 /* per connect deadline seconds */, 3 /* loops */,
+ GRPC_CHANNEL_TRANSIENT_FAILURE /* expected connectivity states */,
+ 0 /* reconnect_backoff_ms unset */));
}
connect_loop_runners.clear();
gpr_log(GPR_DEBUG, "done performing concurrent expected-to-fail connects");
size_t num_concurrent_connects = 100;
gpr_log(GPR_DEBUG, "start performing concurrent expected-to-fail connects");
for (size_t i = 0; i < num_concurrent_connects; i++) {
- connect_loop_runners.push_back(
- std::unique_ptr<ConnectLoopRunner>(new ConnectLoopRunner(
- fake_backend_server.address(), fake_handshake_server.address(),
- 20 /* per connect deadline seconds */, 2 /* loops */,
- GRPC_CHANNEL_TRANSIENT_FAILURE /* expected connectivity states */,
- 0 /* reconnect_backoff_ms unset */)));
+ connect_loop_runners.push_back(absl::make_unique<ConnectLoopRunner>(
+ fake_backend_server.address(), fake_handshake_server.address(),
+ 20 /* per connect deadline seconds */, 2 /* loops */,
+ GRPC_CHANNEL_TRANSIENT_FAILURE /* expected connectivity states */,
+ 0 /* reconnect_backoff_ms unset */));
}
connect_loop_runners.clear();
gpr_log(GPR_DEBUG, "done performing concurrent expected-to-fail connects");
size_t num_concurrent_connects = 100;
gpr_log(GPR_DEBUG, "start performing concurrent expected-to-fail connects");
for (size_t i = 0; i < num_concurrent_connects; i++) {
- connect_loop_runners.push_back(
- std::unique_ptr<ConnectLoopRunner>(new ConnectLoopRunner(
- fake_backend_server.address(), fake_handshake_server.address(),
- 10 /* per connect deadline seconds */, 2 /* loops */,
- GRPC_CHANNEL_TRANSIENT_FAILURE /* expected connectivity states */,
- 100 /* reconnect_backoff_ms */)));
+ connect_loop_runners.push_back(absl::make_unique<ConnectLoopRunner>(
+ fake_backend_server.address(), fake_handshake_server.address(),
+ 10 /* per connect deadline seconds */, 2 /* loops */,
+ GRPC_CHANNEL_TRANSIENT_FAILURE /* expected connectivity states */,
+ 100 /* reconnect_backoff_ms */));
}
connect_loop_runners.clear();
gpr_log(GPR_DEBUG, "done performing concurrent expected-to-fail connects");
#define ALTS_HANDSHAKER_CLIENT_TEST_TARGET_NAME "bigtable.google.api.com"
#define ALTS_HANDSHAKER_CLIENT_TEST_TARGET_SERVICE_ACCOUNT1 "A@google.com"
#define ALTS_HANDSHAKER_CLIENT_TEST_TARGET_SERVICE_ACCOUNT2 "B@google.com"
-#define ALTS_HANDSHAKER_CLIENT_TEST_MAX_FRAME_SIZE 64 * 1024
+#define ALTS_HANDSHAKER_CLIENT_TEST_MAX_FRAME_SIZE (64 * 1024)
const size_t kHandshakerClientOpNum = 4;
const size_t kMaxRpcVersionMajor = 3;
#define ALTS_TSI_HANDSHAKER_TEST_APPLICATION_PROTOCOL \
"test application protocol"
#define ALTS_TSI_HANDSHAKER_TEST_RECORD_PROTOCOL "test record protocol"
-#define ALTS_TSI_HANDSHAKER_TEST_MAX_FRAME_SIZE 256 * 1024
+#define ALTS_TSI_HANDSHAKER_TEST_MAX_FRAME_SIZE (256 * 1024)
#define ALTS_TSI_HANDSHAKER_TEST_PEER_ATTRIBUTES_KEY "peer"
#define ALTS_TSI_HANDSHAKER_TEST_PEER_ATTRIBUTES_VALUE "attributes"
using grpc_core::internal::alts_handshaker_client_set_cb_for_testing;
using grpc_core::internal::alts_handshaker_client_set_fields_for_testing;
using grpc_core::internal::alts_handshaker_client_set_recv_bytes_for_testing;
-using grpc_core::internal::alts_handshaker_client_set_vtable_for_testing;
using grpc_core::internal::alts_tsi_handshaker_get_client_for_testing;
using grpc_core::internal::alts_tsi_handshaker_get_is_client_for_testing;
using grpc_core::internal::alts_tsi_handshaker_set_client_vtable_for_testing;
{
grpc_core::ExecCtx exec_ctx;
grpc_uri* x;
- if ((x = grpc_uri_parse(s, 1))) {
+ if ((x = grpc_uri_parse(s, true))) {
grpc_uri_destroy(x);
}
const char* authority, const char* path,
const char* query, const char* fragment) {
grpc_core::ExecCtx exec_ctx;
- grpc_uri* uri = grpc_uri_parse(uri_text, 0);
+ grpc_uri* uri = grpc_uri_parse(uri_text, false);
GPR_ASSERT(uri);
GPR_ASSERT(0 == strcmp(scheme, uri->scheme));
GPR_ASSERT(0 == strcmp(authority, uri->authority));
{
grpc_core::ExecCtx exec_ctx;
const char* uri_text = "http://foo/path?a&b=B&c=&#frag";
- grpc_uri* uri = grpc_uri_parse(uri_text, 0);
+ grpc_uri* uri = grpc_uri_parse(uri_text, false);
GPR_ASSERT(uri);
GPR_ASSERT(0 == strcmp("http", uri->scheme));
/* test the current behavior of multiple query part values */
grpc_core::ExecCtx exec_ctx;
const char* uri_text = "http://auth/path?foo=bar=baz&foobar==";
- grpc_uri* uri = grpc_uri_parse(uri_text, 0);
+ grpc_uri* uri = grpc_uri_parse(uri_text, false);
GPR_ASSERT(uri);
GPR_ASSERT(0 == strcmp("http", uri->scheme));
/* empty query */
grpc_core::ExecCtx exec_ctx;
const char* uri_text = "http://foo/path";
- grpc_uri* uri = grpc_uri_parse(uri_text, 0);
+ grpc_uri* uri = grpc_uri_parse(uri_text, false);
GPR_ASSERT(uri);
GPR_ASSERT(0 == strcmp("http", uri->scheme));
srcs = [
"cmdline.cc",
"eval_args_mock_endpoint.cc",
- "examine_stack.cc",
"fuzzer_util.cc",
"grpc_profiler.cc",
"histogram.cc",
"port_isolated_runtime_environment.cc",
"port_server_client.cc",
"reconnect_server.cc",
+ "resolve_localhost_ip46.cc",
"slice_splitter.cc",
"subprocess_posix.cc",
"subprocess_windows.cc",
hdrs = [
"cmdline.h",
"eval_args_mock_endpoint.h",
- "examine_stack.h",
"fuzzer_util.h",
"grpc_profiler.h",
"histogram.h",
"port.h",
"port_server_client.h",
"reconnect_server.h",
+ "resolve_localhost_ip46.h",
"slice_splitter.h",
"subprocess.h",
"test_config.h",
],
external_deps = [
"absl/debugging:failure_signal_handler",
- "absl/debugging:stacktrace",
"absl/debugging:symbolize",
],
language = "C++",
deps = [
":grpc_debugger_macros",
+ ":stack_tracer",
"//:gpr",
+ "//:grpc_base_c",
"//:grpc_common",
],
)
testonly = 1,
srcs = ["fuzzer_corpus_test.cc"],
external_deps = [
+ "absl/flags:flag",
"gtest",
- "gflags",
],
tags = ["no_windows"],
deps = [
)
grpc_cc_library(
+ name = "stack_tracer",
+ srcs = [
+ "stack_tracer.cc",
+ ],
+ hdrs = [
+ "stack_tracer.h",
+ ],
+ external_deps = [
+ "absl/debugging:stacktrace",
+ "absl/debugging:symbolize",
+ ],
+ language = "C++",
+ deps = [
+ "//:grpc_common",
+ ],
+)
+
+grpc_cc_test(
+ name = "stack_tracer_test",
+ srcs = [
+ "stack_tracer_test.cc",
+ ],
+ external_deps = [
+ "absl/debugging:symbolize",
+ "gtest",
+ ],
+ language = "C++",
+ # TODO(https://github.com/grpc/grpc/issues/24627): Disable this on Windows
+ tags = ["no_windows"],
+ uses_polling = False,
+ deps = [
+ ":grpc_test_util",
+ ":stack_tracer",
+ ],
+)
+
+grpc_cc_library(
name = "test_lb_policies",
testonly = 1,
srcs = ["test_lb_policies.cc"],
*
*/
-#include <stdbool.h>
-
#include <dirent.h>
-#include <gflags/gflags.h>
+#include <grpc/grpc.h>
#include <grpc/support/alloc.h>
#include <grpc/support/log.h>
#include <gtest/gtest.h>
+#include <stdbool.h>
#include <stdio.h>
#include <sys/types.h>
-#include <grpc/grpc.h>
-
+#include "absl/flags/flag.h"
#include "src/core/lib/gpr/env.h"
#include "src/core/lib/iomgr/load_file.h"
#include "test/core/util/test_config.h"
extern bool squelch;
extern bool leak_check;
-// In some distros, gflags is in the namespace google, and in some others,
-// in gflags. This hack is enabling us to find both.
-namespace google {}
-namespace gflags {}
-using namespace google;
-using namespace gflags;
-
-DEFINE_string(file, "", "Use this file as test data");
-DEFINE_string(directory, "", "Use this directory as test data");
+ABSL_FLAG(std::string, file, "", "Use this file as test data");
+ABSL_FLAG(std::string, directory, "", "Use this directory as test data");
class FuzzerCorpusTest : public ::testing::TestWithParam<std::string> {};
void* data = gpr_malloc(length);
memcpy(data, GPR_SLICE_START_PTR(buffer), length);
grpc_slice_unref(buffer);
- grpc_shutdown_blocking();
+ grpc_shutdown();
LLVMFuzzerTestOneInput(static_cast<uint8_t*>(data), length);
gpr_free(data);
}
class ExampleGenerator
: public ::testing::internal::ParamGeneratorInterface<std::string> {
public:
- virtual ::testing::internal::ParamIteratorInterface<std::string>* Begin()
- const;
- virtual ::testing::internal::ParamIteratorInterface<std::string>* End() const;
+ ::testing::internal::ParamIteratorInterface<std::string>* Begin()
+ const override;
+ ::testing::internal::ParamIteratorInterface<std::string>* End()
+ const override;
private:
void Materialize() const {
if (examples_.empty()) {
- if (!FLAGS_file.empty()) examples_.push_back(FLAGS_file);
- if (!FLAGS_directory.empty()) {
+ if (!absl::GetFlag(FLAGS_file).empty()) {
+ examples_.push_back(absl::GetFlag(FLAGS_file));
+ }
+ if (!absl::GetFlag(FLAGS_directory).empty()) {
char* test_srcdir = gpr_getenv("TEST_SRCDIR");
gpr_log(GPR_DEBUG, "test_srcdir=\"%s\"", test_srcdir);
- std::string directory = FLAGS_directory;
+ std::string directory = absl::GetFlag(FLAGS_directory);
if (test_srcdir != nullptr) {
directory =
test_srcdir + std::string("/com_github_grpc_grpc/") + directory;
std::vector<std::string>::const_iterator begin)
: base_(base_), begin_(begin), current_(begin) {}
- virtual const ExampleGenerator* BaseGenerator() const { return &base_; }
+ const ExampleGenerator* BaseGenerator() const override { return &base_; }
- virtual void Advance() { current_++; }
- virtual ExampleIterator* Clone() const { return new ExampleIterator(*this); }
- virtual const std::string* Current() const { return &*current_; }
+ void Advance() override { current_++; }
+ ExampleIterator* Clone() const override { return new ExampleIterator(*this); }
+ const std::string* Current() const override { return &*current_; }
- virtual bool Equals(const ParamIteratorInterface<std::string>& other) const {
+ bool Equals(const ParamIteratorInterface<std::string>& other) const override {
return &base_ == other.BaseGenerator() &&
current_ == dynamic_cast<const ExampleIterator*>(&other)->current_;
}
passthru_endpoint* m =
static_cast<passthru_endpoint*>(gpr_malloc(sizeof(*m)));
m->halves = 2;
- m->shutdown = 0;
+ m->shutdown = false;
if (stats == nullptr) {
m->stats = grpc_passthru_endpoint_stats_create();
} else {
for (i = 0; i < num_chosen_ports; i++) {
grpc_free_port_using_server(chosen_ports[i]);
}
- grpc_shutdown_blocking();
+ grpc_shutdown();
gpr_free(chosen_ports);
}
--- /dev/null
+//
+//
+// Copyright 2020 gRPC authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+//
+
+#include "test/core/util/resolve_localhost_ip46.h"
+
+#include <grpc/support/log.h>
+
+#include "src/core/lib/iomgr/port.h"
+#include "src/core/lib/iomgr/resolve_address.h"
+#include "src/core/lib/iomgr/sockaddr.h"
+
+namespace grpc_core {
+namespace {
+
+bool localhost_to_ipv4 = false;
+bool localhost_to_ipv6 = false;
+gpr_once g_resolve_localhost_ipv46 = GPR_ONCE_INIT;
+
+void InitResolveLocalhost() {
+ grpc_resolved_addresses* addresses;
+ grpc_error* err =
+ grpc_blocking_resolve_address("localhost", "https", &addresses);
+ GPR_ASSERT(err == GRPC_ERROR_NONE);
+ for (size_t i = 0; i < addresses->naddrs; i++) {
+ grpc_sockaddr* addr =
+ reinterpret_cast<grpc_sockaddr*>(addresses->addrs[i].addr);
+ if (addr->sa_family == GRPC_AF_INET) {
+ localhost_to_ipv4 = true;
+ } else if (addr->sa_family == GRPC_AF_INET6) {
+ localhost_to_ipv6 = true;
+ }
+ }
+ grpc_resolved_addresses_destroy(addresses);
+}
+} // namespace
+
+void LocalhostResolves(bool* ipv4, bool* ipv6) {
+ gpr_once_init(&g_resolve_localhost_ipv46, InitResolveLocalhost);
+ *ipv4 = localhost_to_ipv4;
+ *ipv6 = localhost_to_ipv6;
+}
+
+} // namespace grpc_core
--- /dev/null
+//
+//
+// Copyright 2020 gRPC authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+//
+
+#ifndef GRPC_TEST_CORE_UTIL_RESOLVE_LOCALHOST_IP46_H_
+#define GRPC_TEST_CORE_UTIL_RESOLVE_LOCALHOST_IP46_H_
+
+namespace grpc_core {
+
+// Test whether localhost resolves to ipv4 and/or ipv6
+void LocalhostResolves(bool* ipv4, bool* ipv6);
+
+} // namespace grpc_core
+
+#endif // GRPC_TEST_CORE_UTIL_RESOLVE_LOCALHOST_IP46_H_
#include <grpc/support/port_platform.h>
-#include "test/core/util/examine_stack.h"
+#include "test/core/util/stack_tracer.h"
#include <cstdio>
#include <string>
#include "absl/debugging/stacktrace.h"
#include "absl/debugging/symbolize.h"
+#include "src/core/lib/gprpp/examine_stack.h"
+
namespace {
static constexpr int kPrintfPointerFieldWidth = 2 + 2 * sizeof(void*);
} // namespace
namespace grpc_core {
+namespace testing {
-std::string CurrentStackTrace() {
+std::string GetCurrentStackTrace() {
std::string result = "Stack trace:\n";
constexpr int kNumStackFrames = 32;
void* stack[kNumStackFrames];
return result;
}
+void InitializeStackTracer(const char* argv0) {
+ absl::InitializeSymbolizer(argv0);
+ grpc_core::SetCurrentStackTraceProvider(&GetCurrentStackTrace);
+}
+
+} // namespace testing
} // namespace grpc_core
#include <string>
namespace grpc_core {
+namespace testing {
-// Return the current stack trace as a string (on multiple lines, beginning with
-// "Stack trace:\n")
-std::string CurrentStackTrace();
+// Returns the current stack trace as a string. To have symbolized stack-traces,
+// InitializeStackTracer needs to be called beforehand.
+//
+// Example of stack-trace is
+// Stack trace:
+// @ 0x405b0f 192 StackTracerTest_Basic_Test::TestBody()
+// @ 0x7fbace6baf75 288 testing::internal::RunAllTests()
+// @ 0x7fbace6baa93 144 testing::UnitTest::Run()
+// @ 0x405d4d 64 main
+//
+std::string GetCurrentStackTrace();
+// Initializes a stack tracer so that GetCurrentStackTrace can work.
+// This inits debug symbols and sets this as a gRPC stack-trace provider.
+void InitializeStackTracer(const char* argv0);
+
+} // namespace testing
} // namespace grpc_core
#endif /* GRPC_TEST_CORE_UTIL_EXAMINE_STACK_H */
--- /dev/null
+/*
+ *
+ * Copyright 2020 the gRPC authors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+#include "test/core/util/stack_tracer.h"
+
+#include <gtest/gtest.h>
+#include <string>
+
+#include "absl/debugging/symbolize.h"
+
+#include <grpc/support/log.h>
+
+#include "test/core/util/test_config.h"
+
+TEST(StackTracerTest, Basic) {
+ std::string stack_trace = grpc_core::testing::GetCurrentStackTrace();
+ gpr_log(GPR_INFO, "stack_trace=%s", stack_trace.c_str());
+#if !defined(NDEBUG) && !defined(GPR_MUSL_LIBC_COMPAT)
+ EXPECT_TRUE(stack_trace.find("Basic") != -1);
+#endif
+}
+
+int main(int argc, char** argv) {
+ grpc::testing::TestEnvironment env(argc, argv);
+ testing::InitGoogleTest(&argc, argv);
+ int ret = RUN_ALL_TESTS();
+ return ret;
+}
#include "src/core/lib/gpr/string.h"
#include "src/core/lib/gpr/useful.h"
+#include "src/core/lib/gprpp/examine_stack.h"
#include "src/core/lib/surface/init.h"
+#include "test/core/util/stack_tracer.h"
#include "absl/debugging/failure_signal_handler.h"
#include "absl/debugging/symbolize.h"
static unsigned seed(void) { return (unsigned)_getpid(); }
#endif
-#if GPR_WINDOWS_CRASH_HANDLER
-#include <windows.h>
-
-#include <tchar.h>
-
-// disable warning 4091 - dbghelp.h is broken for msvc2015
-#pragma warning(disable : 4091)
-#define DBGHELP_TRANSLATE_TCHAR
-#include <dbghelp.h>
-
-#ifdef _MSC_VER
-#pragma comment(lib, "dbghelp.lib")
-#endif
-
-static void print_stack_from_context(HANDLE thread, CONTEXT c) {
- STACKFRAME s; // in/out stackframe
- memset(&s, 0, sizeof(s));
- DWORD imageType;
-#ifdef _M_IX86
- // normally, call ImageNtHeader() and use machine info from PE header
- imageType = IMAGE_FILE_MACHINE_I386;
- s.AddrPC.Offset = c.Eip;
- s.AddrPC.Mode = AddrModeFlat;
- s.AddrFrame.Offset = c.Ebp;
- s.AddrFrame.Mode = AddrModeFlat;
- s.AddrStack.Offset = c.Esp;
- s.AddrStack.Mode = AddrModeFlat;
-#elif _M_X64
- imageType = IMAGE_FILE_MACHINE_AMD64;
- s.AddrPC.Offset = c.Rip;
- s.AddrPC.Mode = AddrModeFlat;
- s.AddrFrame.Offset = c.Rbp;
- s.AddrFrame.Mode = AddrModeFlat;
- s.AddrStack.Offset = c.Rsp;
- s.AddrStack.Mode = AddrModeFlat;
-#elif _M_IA64
- imageType = IMAGE_FILE_MACHINE_IA64;
- s.AddrPC.Offset = c.StIIP;
- s.AddrPC.Mode = AddrModeFlat;
- s.AddrFrame.Offset = c.IntSp;
- s.AddrFrame.Mode = AddrModeFlat;
- s.AddrBStore.Offset = c.RsBSP;
- s.AddrBStore.Mode = AddrModeFlat;
- s.AddrStack.Offset = c.IntSp;
- s.AddrStack.Mode = AddrModeFlat;
-#else
-#error "Platform not supported!"
-#endif
-
- HANDLE process = GetCurrentProcess();
-
- SYMBOL_INFOW* symbol =
- (SYMBOL_INFOW*)calloc(sizeof(SYMBOL_INFOW) + 256 * sizeof(wchar_t), 1);
- symbol->MaxNameLen = 255;
- symbol->SizeOfStruct = sizeof(SYMBOL_INFOW);
-
- const unsigned short MAX_CALLERS_SHOWN =
- 8192; // avoid flooding the stderr if stacktrace is way too long
- for (int frame = 0; frame < MAX_CALLERS_SHOWN &&
- StackWalk(imageType, process, thread, &s, &c, 0,
- SymFunctionTableAccess, SymGetModuleBase, 0);
- frame++) {
- PWSTR symbol_name = L"<<no symbol>>";
- DWORD64 symbol_address = 0;
- if (SymFromAddrW(process, (DWORD64)(s.AddrPC.Offset), 0, symbol)) {
- symbol_name = symbol->Name;
- symbol_address = (DWORD64)symbol->Address;
- }
-
- PWSTR file_name = L"<<no line info>>";
- int line_number = 0;
- IMAGEHLP_LINE64 line;
- line.SizeOfStruct = sizeof(IMAGEHLP_LINE64);
- DWORD displacement = 0;
- if (SymGetLineFromAddrW64(process, (DWORD64)(s.AddrPC.Offset),
- &displacement, &line)) {
- file_name = line.FileName;
- line_number = (int)line.LineNumber;
- }
-
- fwprintf(stderr, L"*** %d: %016I64X %ls - %016I64X (%ls:%d)\n", frame,
- (DWORD64)(s.AddrPC.Offset), symbol_name, symbol_address, file_name,
- line_number);
- fflush(stderr);
- }
-
- free(symbol);
-}
-
-static void print_current_stack() {
- CONTEXT context;
- RtlCaptureContext(&context);
- print_stack_from_context(GetCurrentThread(), context);
-}
-
-static LONG crash_handler(struct _EXCEPTION_POINTERS* ex_info) {
- fprintf(stderr, "Exception handler called, dumping information\n");
- bool try_to_print_stack = true;
- PEXCEPTION_RECORD exrec = ex_info->ExceptionRecord;
- while (exrec) {
- DWORD code = exrec->ExceptionCode;
- DWORD flgs = exrec->ExceptionFlags;
- PVOID addr = exrec->ExceptionAddress;
- if (code == EXCEPTION_STACK_OVERFLOW) try_to_print_stack = false;
- fprintf(stderr, "code: %x - flags: %d - address: %p\n", code, flgs, addr);
- exrec = exrec->ExceptionRecord;
- }
- if (try_to_print_stack) {
- print_stack_from_context(GetCurrentThread(), *ex_info->ContextRecord);
- }
- if (IsDebuggerPresent()) {
- __debugbreak();
- } else {
- _exit(1);
- }
- return EXCEPTION_EXECUTE_HANDLER;
-}
-
-static void abort_handler(int sig) {
- fprintf(stderr, "Abort handler called.\n");
- print_current_stack();
- if (IsDebuggerPresent()) {
- __debugbreak();
- } else {
- _exit(1);
- }
-}
-
-static void install_crash_handler() {
- if (!SymInitialize(GetCurrentProcess(), NULL, TRUE)) {
- fprintf(stderr, "SymInitialize failed: %d\n", GetLastError());
- }
- SetUnhandledExceptionFilter((LPTOP_LEVEL_EXCEPTION_FILTER)crash_handler);
- _set_abort_behavior(0, _WRITE_ABORT_MSG);
- _set_abort_behavior(0, _CALL_REPORTFAULT);
- signal(SIGABRT, abort_handler);
-}
-#elif GPR_POSIX_CRASH_HANDLER
-#include <errno.h>
-#include <execinfo.h>
-#include <stdio.h>
-#include <string.h>
-
-#define SIGNAL_NAMES_LENGTH 32
-
-static const char* const signal_names[] = {
- nullptr, "SIGHUP", "SIGINT", "SIGQUIT", "SIGILL", "SIGTRAP",
- "SIGABRT", "SIGBUS", "SIGFPE", "SIGKILL", "SIGUSR1", "SIGSEGV",
- "SIGUSR2", "SIGPIPE", "SIGALRM", "SIGTERM", "SIGSTKFLT", "SIGCHLD",
- "SIGCONT", "SIGSTOP", "SIGTSTP", "SIGTTIN", "SIGTTOU", "SIGURG",
- "SIGXCPU", "SIGXFSZ", "SIGVTALRM", "SIGPROF", "SIGWINCH", "SIGIO",
- "SIGPWR", "SIGSYS"};
-
-static char g_alt_stack[GPR_MAX(MINSIGSTKSZ, 65536)];
-
-#define MAX_FRAMES 32
-
-/* signal safe output */
-static void output_string(const char* string) {
- size_t len = strlen(string);
- ssize_t r;
-
- do {
- r = write(STDERR_FILENO, string, len);
- } while (r == -1 && errno == EINTR);
-}
-
-static void output_num(long num) {
- char buf[GPR_LTOA_MIN_BUFSIZE];
- gpr_ltoa(num, buf);
- output_string(buf);
-}
-
-static void crash_handler(int signum, siginfo_t* /*info*/, void* /*data*/) {
- void* addrlist[MAX_FRAMES + 1];
- int addrlen;
-
- output_string("\n\n\n*******************************\nCaught signal ");
- if (signum > 0 && signum < SIGNAL_NAMES_LENGTH) {
- output_string(signal_names[signum]);
- } else {
- output_num(signum);
- }
- output_string("\n");
-
- addrlen = backtrace(addrlist, GPR_ARRAY_SIZE(addrlist));
-
- if (addrlen == 0) {
- output_string(" no backtrace\n");
- } else {
- backtrace_symbols_fd(addrlist, addrlen, STDERR_FILENO);
- }
-
- /* try to get a core dump for SIGTERM */
- if (signum == SIGTERM) signum = SIGQUIT;
- raise(signum);
-}
-
-static void install_crash_handler() {
- stack_t ss;
- struct sigaction sa;
-
- memset(&ss, 0, sizeof(ss));
- memset(&sa, 0, sizeof(sa));
- ss.ss_size = sizeof(g_alt_stack);
- ss.ss_sp = g_alt_stack;
- GPR_ASSERT(sigaltstack(&ss, nullptr) == 0);
- sa.sa_flags = static_cast<int>(SA_SIGINFO | SA_ONSTACK | SA_RESETHAND);
- sa.sa_sigaction = crash_handler;
- GPR_ASSERT(sigaction(SIGILL, &sa, nullptr) == 0);
- GPR_ASSERT(sigaction(SIGABRT, &sa, nullptr) == 0);
- GPR_ASSERT(sigaction(SIGBUS, &sa, nullptr) == 0);
- GPR_ASSERT(sigaction(SIGSEGV, &sa, nullptr) == 0);
- GPR_ASSERT(sigaction(SIGTERM, &sa, nullptr) == 0);
- GPR_ASSERT(sigaction(SIGQUIT, &sa, nullptr) == 0);
-}
-#else
-static void install_crash_handler() {}
-#endif
-
bool BuiltUnderValgrind() {
#ifdef RUNNING_ON_VALGRIND
return true;
}
void grpc_test_init(int argc, char** argv) {
-#if GPR_WINDOWS
- // Windows cannot use absl::InitializeSymbolizer until it fixes mysterious
- // SymInitialize failure using Bazel RBE on Windows
- // https://github.com/grpc/grpc/issues/24178
- install_crash_handler();
-#else
- absl::InitializeSymbolizer(argv[0]);
+ grpc_core::testing::InitializeStackTracer(argv[0]);
absl::FailureSignalHandlerOptions options;
absl::InstallFailureSignalHandler(options);
-#endif
gpr_log(GPR_DEBUG,
"test slowdown factor: sanitizer=%" PRId64 ", fixture=%" PRId64
", poller=%" PRId64 ", total=%" PRId64,
: ForwardingLoadBalancingPolicy(
absl::make_unique<Helper>(RefCountedPtr<TestPickArgsLb>(this), cb),
std::move(args),
- /*delegate_lb_policy_name=*/"pick_first",
+ /*delegate_policy_name=*/"pick_first",
/*initial_refcount=*/2) {}
~TestPickArgsLb() override = default;
this),
std::move(cb)),
std::move(args),
- /*delegate_lb_policy_name=*/"pick_first",
+ /*delegate_policy_name=*/"pick_first",
/*initial_refcount=*/2) {}
~InterceptRecvTrailingMetadataLoadBalancingPolicy() override = default;
RefCountedPtr<AddressTestLoadBalancingPolicy>(this),
std::move(cb)),
std::move(args),
- /*delegate_lb_policy_name=*/"pick_first",
+ /*delegate_policy_name=*/"pick_first",
/*initial_refcount=*/2) {}
~AddressTestLoadBalancingPolicy() override = default;
namespace testing {
void grpc_tracer_enable_flag(grpc_core::TraceFlag* flag) {
- flag->set_enabled(1);
+ flag->set_enabled(true);
}
} // namespace testing
load("//bazel:grpc_build_system.bzl", "grpc_cc_test", "grpc_package")
-grpc_package(name = "test/core/client_channel")
+grpc_package(name = "test/core/xds")
licenses(["notice"])
grpc_cc_test(
+ name = "xds_bootstrap_test",
+ srcs = ["xds_bootstrap_test.cc"],
+ external_deps = [
+ "gtest",
+ ],
+ language = "C++",
+ deps = [
+ "//:gpr",
+ "//:grpc",
+ "//test/core/util:grpc_test_util",
+ ],
+)
+
+grpc_cc_test(
+ name = "certificate_provider_store_test",
+ srcs = ["certificate_provider_store_test.cc"],
+ external_deps = ["gtest"],
+ language = "C++",
+ deps = [
+ "//:gpr",
+ "//:grpc",
+ "//test/core/util:grpc_test_util",
+ ],
+)
+
+grpc_cc_test(
+ name = "file_watcher_certificate_provider_factory_test",
+ srcs = ["file_watcher_certificate_provider_factory_test.cc"],
+ external_deps = ["gtest"],
+ language = "C++",
+ deps = [
+ "//:gpr",
+ "//:grpc",
+ "//test/core/util:grpc_test_util",
+ ],
+)
+
+grpc_cc_test(
name = "google_mesh_ca_certificate_provider_factory_test",
srcs = ["google_mesh_ca_certificate_provider_factory_test.cc"],
external_deps = ["gtest"],
"//test/core/util:grpc_test_util",
],
)
+
+grpc_cc_test(
+ name = "xds_certificate_provider_test",
+ srcs = ["xds_certificate_provider_test.cc"],
+ external_deps = ["gtest"],
+ language = "C++",
+ deps = [
+ "//:gpr",
+ "//:grpc",
+ "//test/core/util:grpc_test_util",
+ ],
+)
--- /dev/null
+//
+//
+// Copyright 2020 gRPC authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+//
+
+#include <thread>
+
+#include <gmock/gmock.h>
+
+#include "src/core/ext/xds/certificate_provider_registry.h"
+#include "src/core/ext/xds/certificate_provider_store.h"
+
+#include "test/core/util/test_config.h"
+
+namespace grpc_core {
+namespace testing {
+namespace {
+
+class CertificateProviderStoreTest : public ::testing::Test {
+ public:
+ CertificateProviderStoreTest() { grpc_init(); }
+
+ ~CertificateProviderStoreTest() override { grpc_shutdown_blocking(); }
+};
+
+class FakeCertificateProvider : public grpc_tls_certificate_provider {
+ public:
+ RefCountedPtr<grpc_tls_certificate_distributor> distributor() const override {
+ // never called
+ GPR_ASSERT(0);
+ return nullptr;
+ }
+};
+
+class FakeCertificateProviderFactory1 : public CertificateProviderFactory {
+ public:
+ class Config : public CertificateProviderFactory::Config {
+ public:
+ const char* name() const override { return "fake1"; }
+
+ std::string ToString() const override { return "{}"; }
+ };
+
+ const char* name() const override { return "fake1"; }
+
+ RefCountedPtr<CertificateProviderFactory::Config>
+ CreateCertificateProviderConfig(const Json& config_json,
+ grpc_error** error) override {
+ return MakeRefCounted<Config>();
+ }
+
+ RefCountedPtr<grpc_tls_certificate_provider> CreateCertificateProvider(
+ RefCountedPtr<CertificateProviderFactory::Config> config) override {
+ return MakeRefCounted<FakeCertificateProvider>();
+ }
+};
+
+class FakeCertificateProviderFactory2 : public CertificateProviderFactory {
+ public:
+ class Config : public CertificateProviderFactory::Config {
+ public:
+ const char* name() const override { return "fake2"; }
+
+ std::string ToString() const override { return "{}"; }
+ };
+
+ const char* name() const override { return "fake2"; }
+
+ RefCountedPtr<CertificateProviderFactory::Config>
+ CreateCertificateProviderConfig(const Json& config_json,
+ grpc_error** error) override {
+ return MakeRefCounted<Config>();
+ }
+
+ RefCountedPtr<grpc_tls_certificate_provider> CreateCertificateProvider(
+ RefCountedPtr<CertificateProviderFactory::Config> config) override {
+ return MakeRefCounted<FakeCertificateProvider>();
+ }
+};
+
+TEST_F(CertificateProviderStoreTest, Basic) {
+ // Set up factories. (Register only one of the factories.)
+ auto* fake_factory_1 = new FakeCertificateProviderFactory1;
+ CertificateProviderRegistry::RegisterCertificateProviderFactory(
+ std::unique_ptr<CertificateProviderFactory>(fake_factory_1));
+ auto fake_factory_2 = absl::make_unique<FakeCertificateProviderFactory2>();
+ // Set up store
+ CertificateProviderStore::PluginDefinitionMap map = {
+ {"fake_plugin_1",
+ {"fake1", fake_factory_1->CreateCertificateProviderConfig(Json::Object(),
+ nullptr)}},
+ {"fake_plugin_2",
+ {"fake2", fake_factory_2->CreateCertificateProviderConfig(Json::Object(),
+ nullptr)}},
+ {"fake_plugin_3",
+ {"fake1", fake_factory_1->CreateCertificateProviderConfig(Json::Object(),
+ nullptr)}},
+ };
+ CertificateProviderStore store(std::move(map));
+ // Test for creating certificate providers with known plugin configuration.
+ auto cert_provider_1 = store.CreateOrGetCertificateProvider("fake_plugin_1");
+ ASSERT_NE(cert_provider_1, nullptr);
+ auto cert_provider_3 = store.CreateOrGetCertificateProvider("fake_plugin_3");
+ ASSERT_NE(cert_provider_3, nullptr);
+ // Test for creating certificate provider with known plugin configuration but
+ // unregistered factory.
+ ASSERT_EQ(store.CreateOrGetCertificateProvider("fake_plugin_2"), nullptr);
+ // Test for creating certificate provider with unknown plugin configuration.
+ ASSERT_EQ(store.CreateOrGetCertificateProvider("unknown"), nullptr);
+ // Test for getting previously created certificate providers.
+ ASSERT_EQ(store.CreateOrGetCertificateProvider("fake_plugin_1"),
+ cert_provider_1);
+ ASSERT_EQ(store.CreateOrGetCertificateProvider("fake_plugin_3"),
+ cert_provider_3);
+ // Release previously created certificate providers so that the store outlasts
+ // the certificate providers.
+ cert_provider_1.reset();
+ cert_provider_3.reset();
+}
+
+TEST_F(CertificateProviderStoreTest, Multithreaded) {
+ auto* fake_factory_1 = new FakeCertificateProviderFactory1;
+ CertificateProviderRegistry::RegisterCertificateProviderFactory(
+ std::unique_ptr<CertificateProviderFactory>(fake_factory_1));
+ CertificateProviderStore::PluginDefinitionMap map = {
+ {"fake_plugin_1",
+ {"fake1", fake_factory_1->CreateCertificateProviderConfig(Json::Object(),
+ nullptr)}}};
+ CertificateProviderStore store(std::move(map));
+ // Test concurrent `CreateOrGetCertificateProvider()` with the same key.
+ std::vector<std::thread> threads;
+ threads.reserve(1000);
+ for (auto i = 0; i < 1000; i++) {
+ threads.emplace_back([&store]() {
+ for (auto i = 0; i < 10; ++i) {
+ ASSERT_NE(store.CreateOrGetCertificateProvider("fake_plugin_1"),
+ nullptr);
+ }
+ });
+ }
+ for (auto& thread : threads) {
+ thread.join();
+ }
+}
+
+} // namespace
+} // namespace testing
+} // namespace grpc_core
+
+int main(int argc, char** argv) {
+ ::testing::InitGoogleTest(&argc, argv);
+ grpc::testing::TestEnvironment env(argc, argv);
+ auto result = RUN_ALL_TESTS();
+ return result;
+}
--- /dev/null
+//
+//
+// Copyright 2020 gRPC authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+//
+
+#include "src/core/ext/xds/file_watcher_certificate_provider_factory.h"
+
+#include "absl/strings/str_format.h"
+
+#include <gmock/gmock.h>
+#include <gtest/gtest.h>
+
+#include <grpc/grpc.h>
+
+#include "test/core/util/test_config.h"
+
+namespace grpc_core {
+namespace testing {
+namespace {
+
+const char* kIdentityCertFile = "/path/to/identity_cert_file";
+const char* kPrivateKeyFile = "/path/to/private_key_file";
+const char* kRootCertFile = "/path/to/root_cert_file";
+const int kRefreshInterval = 400;
+
+TEST(FileWatcherConfigTest, Basic) {
+ std::string json_str = absl::StrFormat(
+ "{"
+ " \"certificate_file\": \"%s\","
+ " \"private_key_file\": \"%s\","
+ " \"ca_certificate_file\": \"%s\","
+ " \"refresh_interval\": \"%ds\""
+ "}",
+ kIdentityCertFile, kPrivateKeyFile, kRootCertFile, kRefreshInterval);
+ grpc_error* error = GRPC_ERROR_NONE;
+ Json json = Json::Parse(json_str, &error);
+ ASSERT_EQ(error, GRPC_ERROR_NONE) << grpc_error_string(error);
+ auto config =
+ FileWatcherCertificateProviderFactory::Config::Parse(json, &error);
+ ASSERT_EQ(error, GRPC_ERROR_NONE) << grpc_error_string(error);
+ EXPECT_EQ(config->identity_cert_file(), kIdentityCertFile);
+ EXPECT_EQ(config->private_key_file(), kPrivateKeyFile);
+ EXPECT_EQ(config->root_cert_file(), kRootCertFile);
+ EXPECT_EQ(config->refresh_interval_ms(), kRefreshInterval * 1000);
+}
+
+TEST(FileWatcherConfigTest, DefaultRefreshInterval) {
+ std::string json_str = absl::StrFormat(
+ "{"
+ " \"certificate_file\": \"%s\","
+ " \"private_key_file\": \"%s\","
+ " \"ca_certificate_file\": \"%s\""
+ "}",
+ kIdentityCertFile, kPrivateKeyFile, kRootCertFile);
+ grpc_error* error = GRPC_ERROR_NONE;
+ Json json = Json::Parse(json_str, &error);
+ ASSERT_EQ(error, GRPC_ERROR_NONE) << grpc_error_string(error);
+ auto config =
+ FileWatcherCertificateProviderFactory::Config::Parse(json, &error);
+ ASSERT_EQ(error, GRPC_ERROR_NONE) << grpc_error_string(error);
+ EXPECT_EQ(config->identity_cert_file(), kIdentityCertFile);
+ EXPECT_EQ(config->private_key_file(), kPrivateKeyFile);
+ EXPECT_EQ(config->root_cert_file(), kRootCertFile);
+ EXPECT_EQ(config->refresh_interval_ms(), 600 * 1000);
+}
+
+TEST(FileWatcherConfigTest, OnlyRootCertificatesFileProvided) {
+ std::string json_str = absl::StrFormat(
+ "{"
+ " \"ca_certificate_file\": \"%s\""
+ "}",
+ kRootCertFile);
+ grpc_error* error = GRPC_ERROR_NONE;
+ Json json = Json::Parse(json_str, &error);
+ ASSERT_EQ(error, GRPC_ERROR_NONE) << grpc_error_string(error);
+ auto config =
+ FileWatcherCertificateProviderFactory::Config::Parse(json, &error);
+ ASSERT_EQ(error, GRPC_ERROR_NONE) << grpc_error_string(error);
+ EXPECT_TRUE(config->identity_cert_file().empty());
+ EXPECT_TRUE(config->private_key_file().empty());
+ EXPECT_EQ(config->root_cert_file(), kRootCertFile);
+ EXPECT_EQ(config->refresh_interval_ms(), 600 * 1000);
+}
+
+TEST(FileWatcherConfigTest, OnlyIdenityCertificatesAndPrivateKeyProvided) {
+ std::string json_str = absl::StrFormat(
+ "{"
+ " \"certificate_file\": \"%s\","
+ " \"private_key_file\": \"%s\""
+ "}",
+ kIdentityCertFile, kPrivateKeyFile);
+ grpc_error* error = GRPC_ERROR_NONE;
+ Json json = Json::Parse(json_str, &error);
+ ASSERT_EQ(error, GRPC_ERROR_NONE) << grpc_error_string(error);
+ auto config =
+ FileWatcherCertificateProviderFactory::Config::Parse(json, &error);
+ ASSERT_EQ(error, GRPC_ERROR_NONE) << grpc_error_string(error);
+ EXPECT_EQ(config->identity_cert_file(), kIdentityCertFile);
+ EXPECT_EQ(config->private_key_file(), kPrivateKeyFile);
+ EXPECT_TRUE(config->root_cert_file().empty());
+ EXPECT_EQ(config->refresh_interval_ms(), 600 * 1000);
+}
+
+TEST(FileWatcherConfigTest, WrongTypes) {
+ const char* json_str =
+ "{"
+ " \"certificate_file\": 123,"
+ " \"private_key_file\": 123,"
+ " \"ca_certificate_file\": 123,"
+ " \"refresh_interval\": 123"
+ "}";
+ grpc_error* error = GRPC_ERROR_NONE;
+ Json json = Json::Parse(json_str, &error);
+ ASSERT_EQ(error, GRPC_ERROR_NONE) << grpc_error_string(error);
+ auto config =
+ FileWatcherCertificateProviderFactory::Config::Parse(json, &error);
+ EXPECT_THAT(grpc_error_string(error),
+ ::testing::ContainsRegex(
+ "field:certificate_file error:type should be STRING.*"
+ "field:private_key_file error:type should be STRING.*"
+ "field:ca_certificate_file error:type should be STRING.*"
+ "field:refresh_interval error:type should be STRING of the "
+ "form given by "
+ "google.proto.Duration.*"));
+ GRPC_ERROR_UNREF(error);
+}
+
+TEST(FileWatcherConfigTest, IdentityCertProvidedButPrivateKeyMissing) {
+ std::string json_str = absl::StrFormat(
+ "{"
+ " \"certificate_file\": \"%s\""
+ "}",
+ kIdentityCertFile);
+ grpc_error* error = GRPC_ERROR_NONE;
+ Json json = Json::Parse(json_str, &error);
+ ASSERT_EQ(error, GRPC_ERROR_NONE) << grpc_error_string(error);
+ auto config =
+ FileWatcherCertificateProviderFactory::Config::Parse(json, &error);
+ EXPECT_THAT(grpc_error_string(error),
+ ::testing::ContainsRegex(
+ "fields \"certificate_file\" and \"private_key_file\" must "
+ "be both set or both unset."));
+ GRPC_ERROR_UNREF(error);
+}
+
+TEST(FileWatcherConfigTest, PrivateKeyProvidedButIdentityCertMissing) {
+ std::string json_str = absl::StrFormat(
+ "{"
+ " \"private_key_file\": \"%s\""
+ "}",
+ kPrivateKeyFile);
+ grpc_error* error = GRPC_ERROR_NONE;
+ Json json = Json::Parse(json_str, &error);
+ ASSERT_EQ(error, GRPC_ERROR_NONE) << grpc_error_string(error);
+ auto config =
+ FileWatcherCertificateProviderFactory::Config::Parse(json, &error);
+ EXPECT_THAT(grpc_error_string(error),
+ ::testing::ContainsRegex(
+ "fields \"certificate_file\" and \"private_key_file\" must "
+ "be both set or both unset."));
+ GRPC_ERROR_UNREF(error);
+}
+
+TEST(FileWatcherConfigTest, EmptyJsonObject) {
+ std::string json_str = absl::StrFormat("{}");
+ grpc_error* error = GRPC_ERROR_NONE;
+ Json json = Json::Parse(json_str, &error);
+ ASSERT_EQ(error, GRPC_ERROR_NONE) << grpc_error_string(error);
+ auto config =
+ FileWatcherCertificateProviderFactory::Config::Parse(json, &error);
+ EXPECT_THAT(
+ grpc_error_string(error),
+ ::testing::ContainsRegex("At least one of \"certificate_file\" and "
+ "\"ca_certificate_file\" must be specified."));
+ GRPC_ERROR_UNREF(error);
+}
+
+} // namespace
+} // namespace testing
+} // namespace grpc_core
+
+int main(int argc, char** argv) {
+ ::testing::InitGoogleTest(&argc, argv);
+ grpc::testing::TestEnvironment env(argc, argv);
+ grpc_init();
+ auto result = RUN_ALL_TESTS();
+ grpc_shutdown();
+ return result;
+}
--- /dev/null
+//
+// Copyright 2019 gRPC authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+#include <regex>
+
+#include "absl/strings/numbers.h"
+#include "absl/strings/str_format.h"
+
+#include <gmock/gmock.h>
+#include <gtest/gtest.h>
+
+#include <grpc/grpc.h>
+#include <grpc/slice.h>
+
+#include "src/core/ext/xds/certificate_provider_registry.h"
+#include "src/core/ext/xds/xds_bootstrap.h"
+#include "src/core/lib/gpr/env.h"
+#include "src/core/lib/gpr/tmpfile.h"
+#include "test/core/util/test_config.h"
+
+namespace grpc_core {
+namespace testing {
+
+class TestType {
+ public:
+ TestType(bool parse_xds_certificate_providers)
+ : parse_xds_certificate_providers_(parse_xds_certificate_providers) {}
+
+ bool parse_xds_certificate_providers() const {
+ return parse_xds_certificate_providers_;
+ }
+
+ std::string AsString() const {
+ return parse_xds_certificate_providers_
+ ? "WithCertificateProvidersParsing"
+ : "WithoutCertificateProvidersParsing";
+ }
+
+ private:
+ const bool parse_xds_certificate_providers_;
+};
+
+class XdsBootstrapTest : public ::testing::TestWithParam<TestType> {
+ public:
+ XdsBootstrapTest() {
+ if (GetParam().parse_xds_certificate_providers()) {
+ gpr_setenv("GRPC_XDS_EXPERIMENTAL_SECURITY_SUPPORT", "true");
+ } else {
+ gpr_unsetenv("GRPC_XDS_EXPERIMENTAL_SECURITY_SUPPORT");
+ }
+ grpc_init();
+ }
+
+ ~XdsBootstrapTest() override { grpc_shutdown_blocking(); }
+};
+
+TEST_P(XdsBootstrapTest, Basic) {
+ const char* json_str =
+ "{"
+ " \"xds_servers\": ["
+ " {"
+ " \"server_uri\": \"fake:///lb\","
+ " \"channel_creds\": ["
+ " {"
+ " \"type\": \"fake\","
+ " \"ignore\": 0"
+ " }"
+ " ],"
+ " \"ignore\": 0"
+ " },"
+ " {"
+ " \"server_uri\": \"ignored\","
+ " \"channel_creds\": ["
+ " {"
+ " \"type\": \"ignored\","
+ " \"ignore\": 0"
+ " },"
+ " {"
+ " \"type\": \"fake\""
+ " }"
+ " ],"
+ " \"ignore\": 0"
+ " }"
+ " ],"
+ " \"node\": {"
+ " \"id\": \"foo\","
+ " \"cluster\": \"bar\","
+ " \"locality\": {"
+ " \"region\": \"milky_way\","
+ " \"zone\": \"sol_system\","
+ " \"subzone\": \"earth\","
+ " \"ignore\": {}"
+ " },"
+ " \"metadata\": {"
+ " \"foo\": 1,"
+ " \"bar\": 2"
+ " },"
+ " \"ignore\": \"whee\""
+ " },"
+ " \"ignore\": {}"
+ "}";
+ grpc_error* error = GRPC_ERROR_NONE;
+ Json json = Json::Parse(json_str, &error);
+ ASSERT_EQ(error, GRPC_ERROR_NONE) << grpc_error_string(error);
+ XdsBootstrap bootstrap(std::move(json), &error);
+ EXPECT_EQ(error, GRPC_ERROR_NONE) << grpc_error_string(error);
+ EXPECT_EQ(bootstrap.server().server_uri, "fake:///lb");
+ EXPECT_EQ(bootstrap.server().channel_creds_type, "fake");
+ EXPECT_EQ(bootstrap.server().channel_creds_config.type(),
+ Json::Type::JSON_NULL);
+ ASSERT_NE(bootstrap.node(), nullptr);
+ EXPECT_EQ(bootstrap.node()->id, "foo");
+ EXPECT_EQ(bootstrap.node()->cluster, "bar");
+ EXPECT_EQ(bootstrap.node()->locality_region, "milky_way");
+ EXPECT_EQ(bootstrap.node()->locality_zone, "sol_system");
+ EXPECT_EQ(bootstrap.node()->locality_subzone, "earth");
+ ASSERT_EQ(bootstrap.node()->metadata.type(), Json::Type::OBJECT);
+ EXPECT_THAT(bootstrap.node()->metadata.object_value(),
+ ::testing::ElementsAre(
+ ::testing::Pair(
+ ::testing::Eq("bar"),
+ ::testing::AllOf(
+ ::testing::Property(&Json::type, Json::Type::NUMBER),
+ ::testing::Property(&Json::string_value, "2"))),
+ ::testing::Pair(
+ ::testing::Eq("foo"),
+ ::testing::AllOf(
+ ::testing::Property(&Json::type, Json::Type::NUMBER),
+ ::testing::Property(&Json::string_value, "1")))));
+}
+
+TEST_P(XdsBootstrapTest, ValidWithoutNode) {
+ const char* json_str =
+ "{"
+ " \"xds_servers\": ["
+ " {"
+ " \"server_uri\": \"fake:///lb\","
+ " \"channel_creds\": [{\"type\": \"fake\"}]"
+ " }"
+ " ]"
+ "}";
+ grpc_error* error = GRPC_ERROR_NONE;
+ Json json = Json::Parse(json_str, &error);
+ ASSERT_EQ(error, GRPC_ERROR_NONE) << grpc_error_string(error);
+ XdsBootstrap bootstrap(std::move(json), &error);
+ EXPECT_EQ(error, GRPC_ERROR_NONE) << grpc_error_string(error);
+ EXPECT_EQ(bootstrap.server().server_uri, "fake:///lb");
+ EXPECT_EQ(bootstrap.server().channel_creds_type, "fake");
+ EXPECT_EQ(bootstrap.node(), nullptr);
+}
+
+TEST_P(XdsBootstrapTest, InsecureCreds) {
+ const char* json_str =
+ "{"
+ " \"xds_servers\": ["
+ " {"
+ " \"server_uri\": \"fake:///lb\","
+ " \"channel_creds\": [{\"type\": \"insecure\"}]"
+ " }"
+ " ]"
+ "}";
+ grpc_error* error = GRPC_ERROR_NONE;
+ Json json = Json::Parse(json_str, &error);
+ ASSERT_EQ(error, GRPC_ERROR_NONE) << grpc_error_string(error);
+ XdsBootstrap bootstrap(std::move(json), &error);
+ EXPECT_EQ(error, GRPC_ERROR_NONE) << grpc_error_string(error);
+ EXPECT_EQ(bootstrap.server().server_uri, "fake:///lb");
+ EXPECT_EQ(bootstrap.server().channel_creds_type, "insecure");
+ EXPECT_EQ(bootstrap.node(), nullptr);
+}
+
+TEST_P(XdsBootstrapTest, GoogleDefaultCreds) {
+ // Generate call creds file needed by GoogleDefaultCreds.
+ const char token_str[] =
+ "{ \"client_id\": \"32555999999.apps.googleusercontent.com\","
+ " \"client_secret\": \"EmssLNjJy1332hD4KFsecret\","
+ " \"refresh_token\": \"1/Blahblasj424jladJDSGNf-u4Sua3HDA2ngjd42\","
+ " \"type\": \"authorized_user\"}";
+ char* creds_file_name;
+ FILE* creds_file = gpr_tmpfile("xds_bootstrap_test", &creds_file_name);
+ ASSERT_NE(creds_file_name, nullptr);
+ ASSERT_NE(creds_file, nullptr);
+ ASSERT_EQ(fwrite(token_str, 1, sizeof(token_str), creds_file),
+ sizeof(token_str));
+ fclose(creds_file);
+ gpr_setenv(GRPC_GOOGLE_CREDENTIALS_ENV_VAR, creds_file_name);
+ gpr_free(creds_file_name);
+ // Now run test.
+ const char* json_str =
+ "{"
+ " \"xds_servers\": ["
+ " {"
+ " \"server_uri\": \"fake:///lb\","
+ " \"channel_creds\": [{\"type\": \"google_default\"}]"
+ " }"
+ " ]"
+ "}";
+ grpc_error* error = GRPC_ERROR_NONE;
+ Json json = Json::Parse(json_str, &error);
+ ASSERT_EQ(error, GRPC_ERROR_NONE) << grpc_error_string(error);
+ XdsBootstrap bootstrap(std::move(json), &error);
+ EXPECT_EQ(error, GRPC_ERROR_NONE) << grpc_error_string(error);
+ EXPECT_EQ(bootstrap.server().server_uri, "fake:///lb");
+ EXPECT_EQ(bootstrap.server().channel_creds_type, "google_default");
+ EXPECT_EQ(bootstrap.node(), nullptr);
+}
+
+TEST_P(XdsBootstrapTest, MissingChannelCreds) {
+ const char* json_str =
+ "{"
+ " \"xds_servers\": ["
+ " {"
+ " \"server_uri\": \"fake:///lb\""
+ " }"
+ " ]"
+ "}";
+ grpc_error* error = GRPC_ERROR_NONE;
+ Json json = Json::Parse(json_str, &error);
+ ASSERT_EQ(error, GRPC_ERROR_NONE) << grpc_error_string(error);
+ XdsBootstrap bootstrap(std::move(json), &error);
+ EXPECT_THAT(grpc_error_string(error),
+ ::testing::ContainsRegex("\"channel_creds\" field not present"));
+ GRPC_ERROR_UNREF(error);
+}
+
+TEST_P(XdsBootstrapTest, NoKnownChannelCreds) {
+ const char* json_str =
+ "{"
+ " \"xds_servers\": ["
+ " {"
+ " \"server_uri\": \"fake:///lb\","
+ " \"channel_creds\": [{\"type\": \"unknown\"}]"
+ " }"
+ " ]"
+ "}";
+ grpc_error* error = GRPC_ERROR_NONE;
+ Json json = Json::Parse(json_str, &error);
+ ASSERT_EQ(error, GRPC_ERROR_NONE) << grpc_error_string(error);
+ XdsBootstrap bootstrap(std::move(json), &error);
+ EXPECT_THAT(grpc_error_string(error),
+ ::testing::ContainsRegex(
+ "no known creds type found in \"channel_creds\""));
+ GRPC_ERROR_UNREF(error);
+}
+
+TEST_P(XdsBootstrapTest, MissingXdsServers) {
+ grpc_error* error = GRPC_ERROR_NONE;
+ Json json = Json::Parse("{}", &error);
+ ASSERT_EQ(error, GRPC_ERROR_NONE) << grpc_error_string(error);
+ XdsBootstrap bootstrap(std::move(json), &error);
+ EXPECT_THAT(grpc_error_string(error),
+ ::testing::ContainsRegex("\"xds_servers\" field not present"));
+ GRPC_ERROR_UNREF(error);
+}
+
+TEST_P(XdsBootstrapTest, TopFieldsWrongTypes) {
+ const char* json_str =
+ "{"
+ " \"xds_servers\":1,"
+ " \"node\":1,"
+ " \"certificate_providers\":1"
+ "}";
+ grpc_error* error = GRPC_ERROR_NONE;
+ Json json = Json::Parse(json_str, &error);
+ ASSERT_EQ(error, GRPC_ERROR_NONE) << grpc_error_string(error);
+ XdsBootstrap bootstrap(std::move(json), &error);
+ EXPECT_THAT(grpc_error_string(error),
+ ::testing::ContainsRegex("\"xds_servers\" field is not an array.*"
+ "\"node\" field is not an object.*"));
+ if (GetParam().parse_xds_certificate_providers()) {
+ EXPECT_THAT(grpc_error_string(error),
+ ::testing::ContainsRegex(
+ "\"certificate_providers\" field is not an object"));
+ }
+ GRPC_ERROR_UNREF(error);
+}
+
+TEST_P(XdsBootstrapTest, XdsServerMissingServerUri) {
+ const char* json_str =
+ "{"
+ " \"xds_servers\":[{}]"
+ "}";
+ grpc_error* error = GRPC_ERROR_NONE;
+ Json json = Json::Parse(json_str, &error);
+ ASSERT_EQ(error, GRPC_ERROR_NONE) << grpc_error_string(error);
+ XdsBootstrap bootstrap(std::move(json), &error);
+ EXPECT_THAT(grpc_error_string(error),
+ ::testing::ContainsRegex("errors parsing \"xds_servers\" array.*"
+ "errors parsing index 0.*"
+ "\"server_uri\" field not present"));
+ GRPC_ERROR_UNREF(error);
+}
+
+TEST_P(XdsBootstrapTest, XdsServerUriAndCredsWrongTypes) {
+ const char* json_str =
+ "{"
+ " \"xds_servers\":["
+ " {"
+ " \"server_uri\":1,"
+ " \"channel_creds\":1"
+ " }"
+ " ]"
+ "}";
+ grpc_error* error = GRPC_ERROR_NONE;
+ Json json = Json::Parse(json_str, &error);
+ ASSERT_EQ(error, GRPC_ERROR_NONE) << grpc_error_string(error);
+ XdsBootstrap bootstrap(std::move(json), &error);
+ EXPECT_THAT(
+ grpc_error_string(error),
+ ::testing::ContainsRegex("errors parsing \"xds_servers\" array.*"
+ "errors parsing index 0.*"
+ "\"server_uri\" field is not a string.*"
+ "\"channel_creds\" field is not an array"));
+ GRPC_ERROR_UNREF(error);
+}
+
+TEST_P(XdsBootstrapTest, ChannelCredsFieldsWrongTypes) {
+ const char* json_str =
+ "{"
+ " \"xds_servers\":["
+ " {"
+ " \"server_uri\":\"foo\","
+ " \"channel_creds\":["
+ " {"
+ " \"type\":0,"
+ " \"config\":1"
+ " }"
+ " ]"
+ " }"
+ " ]"
+ "}";
+ grpc_error* error = GRPC_ERROR_NONE;
+ Json json = Json::Parse(json_str, &error);
+ ASSERT_EQ(error, GRPC_ERROR_NONE) << grpc_error_string(error);
+ XdsBootstrap bootstrap(std::move(json), &error);
+ EXPECT_THAT(
+ grpc_error_string(error),
+ ::testing::ContainsRegex("errors parsing \"xds_servers\" array.*"
+ "errors parsing index 0.*"
+ "errors parsing \"channel_creds\" array.*"
+ "errors parsing index 0.*"
+ "\"type\" field is not a string.*"
+ "\"config\" field is not an object"));
+ GRPC_ERROR_UNREF(error);
+}
+
+TEST_P(XdsBootstrapTest, NodeFieldsWrongTypes) {
+ const char* json_str =
+ "{"
+ " \"node\":{"
+ " \"id\":0,"
+ " \"cluster\":0,"
+ " \"locality\":0,"
+ " \"metadata\":0"
+ " }"
+ "}";
+ grpc_error* error = GRPC_ERROR_NONE;
+ Json json = Json::Parse(json_str, &error);
+ ASSERT_EQ(error, GRPC_ERROR_NONE) << grpc_error_string(error);
+ XdsBootstrap bootstrap(std::move(json), &error);
+ EXPECT_THAT(grpc_error_string(error),
+ ::testing::ContainsRegex("errors parsing \"node\" object.*"
+ "\"id\" field is not a string.*"
+ "\"cluster\" field is not a string.*"
+ "\"locality\" field is not an object.*"
+ "\"metadata\" field is not an object"));
+ GRPC_ERROR_UNREF(error);
+}
+
+TEST_P(XdsBootstrapTest, LocalityFieldsWrongType) {
+ const char* json_str =
+ "{"
+ " \"node\":{"
+ " \"locality\":{"
+ " \"region\":0,"
+ " \"zone\":0,"
+ " \"subzone\":0"
+ " }"
+ " }"
+ "}";
+ grpc_error* error = GRPC_ERROR_NONE;
+ Json json = Json::Parse(json_str, &error);
+ ASSERT_EQ(error, GRPC_ERROR_NONE) << grpc_error_string(error);
+ XdsBootstrap bootstrap(std::move(json), &error);
+ EXPECT_THAT(grpc_error_string(error),
+ ::testing::ContainsRegex("errors parsing \"node\" object.*"
+ "errors parsing \"locality\" object.*"
+ "\"region\" field is not a string.*"
+ "\"zone\" field is not a string.*"
+ "\"subzone\" field is not a string"));
+ GRPC_ERROR_UNREF(error);
+}
+
+TEST_P(XdsBootstrapTest, CertificateProvidersElementWrongType) {
+ const char* json_str =
+ "{"
+ " \"xds_servers\": ["
+ " {"
+ " \"server_uri\": \"fake:///lb\","
+ " \"channel_creds\": [{\"type\": \"fake\"}]"
+ " }"
+ " ],"
+ " \"certificate_providers\": {"
+ " \"plugin\":1"
+ " }"
+ "}";
+ grpc_error* error = GRPC_ERROR_NONE;
+ Json json = Json::Parse(json_str, &error);
+ ASSERT_EQ(error, GRPC_ERROR_NONE) << grpc_error_string(error);
+ XdsBootstrap bootstrap(std::move(json), &error);
+ if (GetParam().parse_xds_certificate_providers()) {
+ EXPECT_THAT(grpc_error_string(error),
+ ::testing::ContainsRegex(
+ "errors parsing \"certificate_providers\" object.*"
+ "element \"plugin\" is not an object"));
+ } else {
+ EXPECT_EQ(error, GRPC_ERROR_NONE) << grpc_error_string(error);
+ }
+ GRPC_ERROR_UNREF(error);
+}
+
+TEST_P(XdsBootstrapTest, CertificateProvidersPluginNameWrongType) {
+ const char* json_str =
+ "{"
+ " \"xds_servers\": ["
+ " {"
+ " \"server_uri\": \"fake:///lb\","
+ " \"channel_creds\": [{\"type\": \"fake\"}]"
+ " }"
+ " ],"
+ " \"certificate_providers\": {"
+ " \"plugin\": {"
+ " \"plugin_name\":1"
+ " }"
+ " }"
+ "}";
+ grpc_error* error = GRPC_ERROR_NONE;
+ Json json = Json::Parse(json_str, &error);
+ ASSERT_EQ(error, GRPC_ERROR_NONE) << grpc_error_string(error);
+ XdsBootstrap bootstrap(std::move(json), &error);
+ if (GetParam().parse_xds_certificate_providers()) {
+ EXPECT_THAT(grpc_error_string(error),
+ ::testing::ContainsRegex(
+ "errors parsing \"certificate_providers\" object.*"
+ "errors parsing element \"plugin\".*"
+ "\"plugin_name\" field is not a string"));
+ } else {
+ EXPECT_EQ(error, GRPC_ERROR_NONE) << grpc_error_string(error);
+ }
+ GRPC_ERROR_UNREF(error);
+}
+
+class FakeCertificateProviderFactory : public CertificateProviderFactory {
+ public:
+ class Config : public CertificateProviderFactory::Config {
+ public:
+ explicit Config(int value) : value_(value) {}
+
+ int value() const { return value_; }
+
+ const char* name() const override { return "fake"; }
+
+ std::string ToString() const override {
+ return absl::StrFormat(
+ "{\n"
+ " value=%d"
+ "}",
+ value_);
+ }
+
+ private:
+ int value_;
+ };
+
+ const char* name() const override { return "fake"; }
+
+ RefCountedPtr<CertificateProviderFactory::Config>
+ CreateCertificateProviderConfig(const Json& config_json,
+ grpc_error** error) override {
+ std::vector<grpc_error*> error_list;
+ EXPECT_EQ(config_json.type(), Json::Type::OBJECT);
+ auto it = config_json.object_value().find("value");
+ if (it == config_json.object_value().end()) {
+ return MakeRefCounted<FakeCertificateProviderFactory::Config>(0);
+ } else if (it->second.type() != Json::Type::NUMBER) {
+ *error = GRPC_ERROR_CREATE_FROM_STATIC_STRING(
+ "field:config field:value not of type number");
+ } else {
+ int value = 0;
+ EXPECT_TRUE(absl::SimpleAtoi(it->second.string_value(), &value));
+ return MakeRefCounted<FakeCertificateProviderFactory::Config>(value);
+ }
+ return nullptr;
+ }
+
+ RefCountedPtr<grpc_tls_certificate_provider> CreateCertificateProvider(
+ RefCountedPtr<CertificateProviderFactory::Config> config) override {
+ return nullptr;
+ }
+};
+
+TEST_P(XdsBootstrapTest, CertificateProvidersFakePluginParsingError) {
+ CertificateProviderRegistry::RegisterCertificateProviderFactory(
+ absl::make_unique<FakeCertificateProviderFactory>());
+ const char* json_str =
+ "{"
+ " \"xds_servers\": ["
+ " {"
+ " \"server_uri\": \"fake:///lb\","
+ " \"channel_creds\": [{\"type\": \"fake\"}]"
+ " }"
+ " ],"
+ " \"certificate_providers\": {"
+ " \"fake_plugin\": {"
+ " \"plugin_name\": \"fake\","
+ " \"config\": {"
+ " \"value\": \"10\""
+ " }"
+ " }"
+ " }"
+ "}";
+ grpc_error* error = GRPC_ERROR_NONE;
+ Json json = Json::Parse(json_str, &error);
+ ASSERT_EQ(error, GRPC_ERROR_NONE) << grpc_error_string(error);
+ XdsBootstrap bootstrap(std::move(json), &error);
+ if (GetParam().parse_xds_certificate_providers()) {
+ EXPECT_THAT(grpc_error_string(error),
+ ::testing::ContainsRegex(
+ "errors parsing \"certificate_providers\" object.*"
+ "errors parsing element \"fake_plugin\".*"
+ "field:config field:value not of type number"));
+ } else {
+ EXPECT_EQ(error, GRPC_ERROR_NONE) << grpc_error_string(error);
+ }
+ GRPC_ERROR_UNREF(error);
+}
+
+TEST_P(XdsBootstrapTest, CertificateProvidersFakePluginParsingSuccess) {
+ CertificateProviderRegistry::RegisterCertificateProviderFactory(
+ absl::make_unique<FakeCertificateProviderFactory>());
+ const char* json_str =
+ "{"
+ " \"xds_servers\": ["
+ " {"
+ " \"server_uri\": \"fake:///lb\","
+ " \"channel_creds\": [{\"type\": \"fake\"}]"
+ " }"
+ " ],"
+ " \"certificate_providers\": {"
+ " \"fake_plugin\": {"
+ " \"plugin_name\": \"fake\","
+ " \"config\": {"
+ " \"value\": 10"
+ " }"
+ " }"
+ " }"
+ "}";
+ grpc_error* error = GRPC_ERROR_NONE;
+ Json json = Json::Parse(json_str, &error);
+ ASSERT_EQ(error, GRPC_ERROR_NONE) << grpc_error_string(error);
+ XdsBootstrap bootstrap(std::move(json), &error);
+ ASSERT_TRUE(error == GRPC_ERROR_NONE) << grpc_error_string(error);
+ if (GetParam().parse_xds_certificate_providers()) {
+ const CertificateProviderStore::PluginDefinition& fake_plugin =
+ bootstrap.certificate_providers().at("fake_plugin");
+ ASSERT_EQ(fake_plugin.plugin_name, "fake");
+ ASSERT_STREQ(fake_plugin.config->name(), "fake");
+ ASSERT_EQ(
+ static_cast<RefCountedPtr<FakeCertificateProviderFactory::Config>>(
+ fake_plugin.config)
+ ->value(),
+ 10);
+ } else {
+ EXPECT_TRUE(bootstrap.certificate_providers().empty());
+ }
+}
+
+TEST_P(XdsBootstrapTest, CertificateProvidersFakePluginEmptyConfig) {
+ CertificateProviderRegistry::RegisterCertificateProviderFactory(
+ absl::make_unique<FakeCertificateProviderFactory>());
+ const char* json_str =
+ "{"
+ " \"xds_servers\": ["
+ " {"
+ " \"server_uri\": \"fake:///lb\","
+ " \"channel_creds\": [{\"type\": \"fake\"}]"
+ " }"
+ " ],"
+ " \"certificate_providers\": {"
+ " \"fake_plugin\": {"
+ " \"plugin_name\": \"fake\""
+ " }"
+ " }"
+ "}";
+ grpc_error* error = GRPC_ERROR_NONE;
+ Json json = Json::Parse(json_str, &error);
+ ASSERT_EQ(error, GRPC_ERROR_NONE) << grpc_error_string(error);
+ XdsBootstrap bootstrap(std::move(json), &error);
+ ASSERT_TRUE(error == GRPC_ERROR_NONE) << grpc_error_string(error);
+ if (GetParam().parse_xds_certificate_providers()) {
+ const CertificateProviderStore::PluginDefinition& fake_plugin =
+ bootstrap.certificate_providers().at("fake_plugin");
+ ASSERT_EQ(fake_plugin.plugin_name, "fake");
+ ASSERT_STREQ(fake_plugin.config->name(), "fake");
+ ASSERT_EQ(
+ static_cast<RefCountedPtr<FakeCertificateProviderFactory::Config>>(
+ fake_plugin.config)
+ ->value(),
+ 0);
+ } else {
+ EXPECT_TRUE(bootstrap.certificate_providers().empty());
+ }
+}
+
+std::string TestTypeName(const ::testing::TestParamInfo<TestType>& info) {
+ return info.param.AsString();
+}
+
+INSTANTIATE_TEST_SUITE_P(XdsBootstrap, XdsBootstrapTest,
+ ::testing::Values(TestType(false), TestType(true)),
+ &TestTypeName);
+
+} // namespace testing
+} // namespace grpc_core
+
+int main(int argc, char** argv) {
+ ::testing::InitGoogleTest(&argc, argv);
+ grpc::testing::TestEnvironment env(argc, argv);
+ int ret = RUN_ALL_TESTS();
+ return ret;
+}
--- /dev/null
+//
+//
+// Copyright 2020 gRPC authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+//
+
+#include <gmock/gmock.h>
+#include <gtest/gtest.h>
+
+#include "src/core/ext/xds/xds_certificate_provider.h"
+#include "test/core/util/test_config.h"
+
+namespace grpc_core {
+namespace testing {
+namespace {
+
+constexpr const char* kRootCert1 = "root_cert_1_contents";
+constexpr const char* kRootCert2 = "root_cert_2_contents";
+constexpr const char* kIdentityCert1PrivateKey = "identity_private_key_1";
+constexpr const char* kIdentityCert1 = "identity_cert_1_contents";
+constexpr const char* kIdentityCert2PrivateKey = "identity_private_key_2";
+constexpr const char* kIdentityCert2 = "identity_cert_2_contents";
+constexpr const char* kRootErrorMessage = "root_error_message";
+constexpr const char* kIdentityErrorMessage = "identity_error_message";
+
+PemKeyCertPairList MakeKeyCertPairs(const char* private_key,
+ const char* certs) {
+ if (strcmp(private_key, "") == 0 && strcmp(certs, "") == 0) {
+ return {};
+ }
+ grpc_ssl_pem_key_cert_pair* ssl_pair =
+ static_cast<grpc_ssl_pem_key_cert_pair*>(
+ gpr_malloc(sizeof(grpc_ssl_pem_key_cert_pair)));
+ ssl_pair->private_key = gpr_strdup(private_key);
+ ssl_pair->cert_chain = gpr_strdup(certs);
+ return PemKeyCertPairList{PemKeyCertPair(ssl_pair)};
+}
+
+PemKeyCertPairList MakeKeyCertPairsType1() {
+ return MakeKeyCertPairs(kIdentityCert1PrivateKey, kIdentityCert1);
+}
+
+PemKeyCertPairList MakeKeyCertPairsType2() {
+ return MakeKeyCertPairs(kIdentityCert2PrivateKey, kIdentityCert2);
+}
+
+class TestCertificatesWatcher
+ : public grpc_tls_certificate_distributor::TlsCertificatesWatcherInterface {
+ public:
+ ~TestCertificatesWatcher() override {
+ GRPC_ERROR_UNREF(root_cert_error_);
+ GRPC_ERROR_UNREF(identity_cert_error_);
+ }
+
+ void OnCertificatesChanged(
+ absl::optional<absl::string_view> root_certs,
+ absl::optional<PemKeyCertPairList> key_cert_pairs) override {
+ if (root_certs.has_value()) {
+ if (!root_certs_.has_value() ||
+ (root_certs_.has_value() &&
+ std::string(root_certs.value()) != root_certs_.value())) {
+ GRPC_ERROR_UNREF(root_cert_error_);
+ root_cert_error_ = GRPC_ERROR_NONE;
+ }
+ root_certs_.emplace(std::string(root_certs.value()));
+ }
+ if (key_cert_pairs.has_value()) {
+ if (key_cert_pairs != key_cert_pairs_) {
+ GRPC_ERROR_UNREF(identity_cert_error_);
+ identity_cert_error_ = GRPC_ERROR_NONE;
+ key_cert_pairs_ = key_cert_pairs;
+ }
+ }
+ }
+
+ void OnError(grpc_error* root_cert_error,
+ grpc_error* identity_cert_error) override {
+ GRPC_ERROR_UNREF(root_cert_error_);
+ root_cert_error_ = root_cert_error;
+ GRPC_ERROR_UNREF(identity_cert_error_);
+ identity_cert_error_ = identity_cert_error;
+ }
+
+ const absl::optional<std::string>& root_certs() const { return root_certs_; }
+
+ const absl::optional<PemKeyCertPairList>& key_cert_pairs() const {
+ return key_cert_pairs_;
+ }
+
+ grpc_error* root_cert_error() const { return root_cert_error_; }
+
+ grpc_error* identity_cert_error() const { return identity_cert_error_; }
+
+ private:
+ absl::optional<std::string> root_certs_;
+ absl::optional<PemKeyCertPairList> key_cert_pairs_;
+ grpc_error* root_cert_error_ = GRPC_ERROR_NONE;
+ grpc_error* identity_cert_error_ = GRPC_ERROR_NONE;
+};
+
+TEST(
+ XdsCertificateProviderTest,
+ RootCertDistributorDifferentFromIdentityCertDistributorDifferentCertNames) {
+ auto root_cert_distributor =
+ MakeRefCounted<grpc_tls_certificate_distributor>();
+ auto identity_cert_distributor =
+ MakeRefCounted<grpc_tls_certificate_distributor>();
+ XdsCertificateProvider provider("root", root_cert_distributor, "identity",
+ identity_cert_distributor);
+ auto* watcher = new TestCertificatesWatcher;
+ provider.distributor()->WatchTlsCertificates(
+ std::unique_ptr<TestCertificatesWatcher>(watcher), "", "");
+ EXPECT_EQ(watcher->root_certs(), absl::nullopt);
+ EXPECT_EQ(watcher->key_cert_pairs(), absl::nullopt);
+ EXPECT_EQ(watcher->root_cert_error(), GRPC_ERROR_NONE);
+ EXPECT_EQ(watcher->identity_cert_error(), GRPC_ERROR_NONE);
+ // Update both root certs and identity certs
+ root_cert_distributor->SetKeyMaterials("root", kRootCert1, absl::nullopt);
+ identity_cert_distributor->SetKeyMaterials("identity", absl::nullopt,
+ MakeKeyCertPairsType1());
+ EXPECT_EQ(watcher->root_certs(), kRootCert1);
+ EXPECT_EQ(watcher->key_cert_pairs(), MakeKeyCertPairsType1());
+ EXPECT_EQ(watcher->root_cert_error(), GRPC_ERROR_NONE);
+ EXPECT_EQ(watcher->identity_cert_error(), GRPC_ERROR_NONE);
+ // Second update for just root certs
+ root_cert_distributor->SetKeyMaterials(
+ "root", kRootCert2,
+ MakeKeyCertPairsType2() /* does not have an effect */);
+ EXPECT_EQ(watcher->root_certs(), kRootCert2);
+ EXPECT_EQ(watcher->key_cert_pairs(), MakeKeyCertPairsType1());
+ EXPECT_EQ(watcher->root_cert_error(), GRPC_ERROR_NONE);
+ EXPECT_EQ(watcher->identity_cert_error(), GRPC_ERROR_NONE);
+ // Second update for identity certs
+ identity_cert_distributor->SetKeyMaterials(
+ "identity", kRootCert1 /* does not have an effect */,
+ MakeKeyCertPairsType2());
+ EXPECT_EQ(watcher->root_certs(), kRootCert2);
+ EXPECT_EQ(watcher->key_cert_pairs(), MakeKeyCertPairsType2());
+ EXPECT_EQ(watcher->root_cert_error(), GRPC_ERROR_NONE);
+ EXPECT_EQ(watcher->identity_cert_error(), GRPC_ERROR_NONE);
+ // Set error for both root and identity
+ root_cert_distributor->SetErrorForCert(
+ "root", GRPC_ERROR_CREATE_FROM_STATIC_STRING(kRootErrorMessage),
+ absl::nullopt);
+ identity_cert_distributor->SetErrorForCert(
+ "identity", absl::nullopt,
+ GRPC_ERROR_CREATE_FROM_STATIC_STRING(kIdentityErrorMessage));
+ EXPECT_EQ(watcher->root_certs(), kRootCert2);
+ EXPECT_EQ(watcher->key_cert_pairs(), MakeKeyCertPairsType2());
+ EXPECT_THAT(grpc_error_string(watcher->root_cert_error()),
+ ::testing::HasSubstr(kRootErrorMessage));
+ EXPECT_THAT(grpc_error_string(watcher->identity_cert_error()),
+ ::testing::HasSubstr(kIdentityErrorMessage));
+ // Send an update for root certs. Test that the root cert error is reset.
+ root_cert_distributor->SetKeyMaterials("root", kRootCert1, absl::nullopt);
+ EXPECT_EQ(watcher->root_certs(), kRootCert1);
+ EXPECT_EQ(watcher->key_cert_pairs(), MakeKeyCertPairsType2());
+ EXPECT_EQ(watcher->root_cert_error(), GRPC_ERROR_NONE);
+ EXPECT_THAT(grpc_error_string(watcher->identity_cert_error()),
+ ::testing::HasSubstr(kIdentityErrorMessage));
+ // Send an update for identity certs. Test that the identity cert error is
+ // reset.
+ identity_cert_distributor->SetKeyMaterials("identity", absl::nullopt,
+ MakeKeyCertPairsType1());
+ EXPECT_EQ(watcher->root_certs(), kRootCert1);
+ EXPECT_EQ(watcher->key_cert_pairs(), MakeKeyCertPairsType1());
+ EXPECT_EQ(watcher->root_cert_error(), GRPC_ERROR_NONE);
+ EXPECT_EQ(watcher->identity_cert_error(), GRPC_ERROR_NONE);
+}
+
+TEST(XdsCertificateProviderTest,
+ RootCertDistributorDifferentFromIdentityCertDistributorSameCertNames) {
+ auto root_cert_distributor =
+ MakeRefCounted<grpc_tls_certificate_distributor>();
+ auto identity_cert_distributor =
+ MakeRefCounted<grpc_tls_certificate_distributor>();
+ XdsCertificateProvider provider("test", root_cert_distributor, "test",
+ identity_cert_distributor);
+ auto* watcher = new TestCertificatesWatcher;
+ provider.distributor()->WatchTlsCertificates(
+ std::unique_ptr<TestCertificatesWatcher>(watcher), "", "");
+ EXPECT_EQ(watcher->root_certs(), absl::nullopt);
+ EXPECT_EQ(watcher->key_cert_pairs(), absl::nullopt);
+ EXPECT_EQ(watcher->root_cert_error(), GRPC_ERROR_NONE);
+ EXPECT_EQ(watcher->identity_cert_error(), GRPC_ERROR_NONE);
+ // Update both root certs and identity certs
+ root_cert_distributor->SetKeyMaterials("test", kRootCert1, absl::nullopt);
+ identity_cert_distributor->SetKeyMaterials("test", absl::nullopt,
+ MakeKeyCertPairsType1());
+ EXPECT_EQ(watcher->root_certs(), kRootCert1);
+ EXPECT_EQ(watcher->key_cert_pairs(), MakeKeyCertPairsType1());
+ EXPECT_EQ(watcher->root_cert_error(), GRPC_ERROR_NONE);
+ EXPECT_EQ(watcher->identity_cert_error(), GRPC_ERROR_NONE);
+ // Second update for just root certs
+ root_cert_distributor->SetKeyMaterials("test", kRootCert2, absl::nullopt);
+ EXPECT_EQ(watcher->root_certs(), kRootCert2);
+ EXPECT_EQ(watcher->key_cert_pairs(), MakeKeyCertPairsType1());
+ EXPECT_EQ(watcher->root_cert_error(), GRPC_ERROR_NONE);
+ EXPECT_EQ(watcher->identity_cert_error(), GRPC_ERROR_NONE);
+ // Second update for identity certs
+ identity_cert_distributor->SetKeyMaterials("test", absl::nullopt,
+ MakeKeyCertPairsType2());
+ EXPECT_EQ(watcher->root_certs(), kRootCert2);
+ EXPECT_EQ(watcher->key_cert_pairs(), MakeKeyCertPairsType2());
+ EXPECT_EQ(watcher->root_cert_error(), GRPC_ERROR_NONE);
+ EXPECT_EQ(watcher->identity_cert_error(), GRPC_ERROR_NONE);
+ // Set error for both root and identity
+ root_cert_distributor->SetErrorForCert(
+ "test", GRPC_ERROR_CREATE_FROM_STATIC_STRING(kRootErrorMessage),
+ absl::nullopt);
+ identity_cert_distributor->SetErrorForCert(
+ "test", absl::nullopt,
+ GRPC_ERROR_CREATE_FROM_STATIC_STRING(kIdentityErrorMessage));
+ EXPECT_EQ(watcher->root_certs(), kRootCert2);
+ EXPECT_EQ(watcher->key_cert_pairs(), MakeKeyCertPairsType2());
+ EXPECT_THAT(grpc_error_string(watcher->root_cert_error()),
+ ::testing::HasSubstr(kRootErrorMessage));
+ EXPECT_THAT(grpc_error_string(watcher->identity_cert_error()),
+ ::testing::HasSubstr(kIdentityErrorMessage));
+ // Send an update for root certs. Test that the root cert error is reset.
+ root_cert_distributor->SetKeyMaterials("test", kRootCert1, absl::nullopt);
+ EXPECT_EQ(watcher->root_certs(), kRootCert1);
+ EXPECT_EQ(watcher->key_cert_pairs(), MakeKeyCertPairsType2());
+ EXPECT_EQ(watcher->root_cert_error(), GRPC_ERROR_NONE);
+ EXPECT_THAT(grpc_error_string(watcher->identity_cert_error()),
+ ::testing::HasSubstr(kIdentityErrorMessage));
+ // Send an update for identity certs. Test that the identity cert error is
+ // reset.
+ identity_cert_distributor->SetKeyMaterials("test", absl::nullopt,
+ MakeKeyCertPairsType1());
+ EXPECT_EQ(watcher->root_certs(), kRootCert1);
+ EXPECT_EQ(watcher->key_cert_pairs(), MakeKeyCertPairsType1());
+ EXPECT_EQ(watcher->root_cert_error(), GRPC_ERROR_NONE);
+ EXPECT_EQ(watcher->identity_cert_error(), GRPC_ERROR_NONE);
+ // Test update on unwatched cert name
+ identity_cert_distributor->SetKeyMaterials("identity", kRootCert2,
+ MakeKeyCertPairsType2());
+ root_cert_distributor->SetKeyMaterials("root", kRootCert1,
+ MakeKeyCertPairsType1());
+}
+
+TEST(XdsCertificateProviderTest,
+ RootCertDistributorSameAsIdentityCertDistributorDifferentCertNames) {
+ auto distributor = MakeRefCounted<grpc_tls_certificate_distributor>();
+ XdsCertificateProvider provider("root", distributor, "identity", distributor);
+ auto* watcher = new TestCertificatesWatcher;
+ provider.distributor()->WatchTlsCertificates(
+ std::unique_ptr<TestCertificatesWatcher>(watcher), "", "");
+ EXPECT_EQ(watcher->root_certs(), absl::nullopt);
+ EXPECT_EQ(watcher->key_cert_pairs(), absl::nullopt);
+ EXPECT_EQ(watcher->root_cert_error(), GRPC_ERROR_NONE);
+ EXPECT_EQ(watcher->identity_cert_error(), GRPC_ERROR_NONE);
+ // Update both root certs and identity certs
+ distributor->SetKeyMaterials("root", kRootCert1, MakeKeyCertPairsType2());
+ distributor->SetKeyMaterials("identity", kRootCert2, MakeKeyCertPairsType1());
+ EXPECT_EQ(watcher->root_certs(), kRootCert1);
+ EXPECT_EQ(watcher->key_cert_pairs(), MakeKeyCertPairsType1());
+ EXPECT_EQ(watcher->root_cert_error(), GRPC_ERROR_NONE);
+ EXPECT_EQ(watcher->identity_cert_error(), GRPC_ERROR_NONE);
+ // Second update for just root certs
+ distributor->SetKeyMaterials("root", kRootCert2, MakeKeyCertPairsType2());
+ EXPECT_EQ(watcher->root_certs(), kRootCert2);
+ EXPECT_EQ(watcher->key_cert_pairs(), MakeKeyCertPairsType1());
+ EXPECT_EQ(watcher->root_cert_error(), GRPC_ERROR_NONE);
+ EXPECT_EQ(watcher->identity_cert_error(), GRPC_ERROR_NONE);
+ // Second update for identity certs
+ distributor->SetKeyMaterials("identity", kRootCert1, MakeKeyCertPairsType2());
+ EXPECT_EQ(watcher->root_certs(), kRootCert2);
+ EXPECT_EQ(watcher->key_cert_pairs(), MakeKeyCertPairsType2());
+ EXPECT_EQ(watcher->root_cert_error(), GRPC_ERROR_NONE);
+ EXPECT_EQ(watcher->identity_cert_error(), GRPC_ERROR_NONE);
+ // Set error for root
+ distributor->SetErrorForCert(
+ "root", GRPC_ERROR_CREATE_FROM_STATIC_STRING(kRootErrorMessage),
+ GRPC_ERROR_CREATE_FROM_STATIC_STRING(kRootErrorMessage));
+ EXPECT_EQ(watcher->root_certs(), kRootCert2);
+ EXPECT_EQ(watcher->key_cert_pairs(), MakeKeyCertPairsType2());
+ EXPECT_THAT(grpc_error_string(watcher->root_cert_error()),
+ ::testing::HasSubstr(kRootErrorMessage));
+ EXPECT_EQ(watcher->identity_cert_error(), GRPC_ERROR_NONE);
+ distributor->SetErrorForCert(
+ "identity", GRPC_ERROR_CREATE_FROM_STATIC_STRING(kIdentityErrorMessage),
+ GRPC_ERROR_CREATE_FROM_STATIC_STRING(kIdentityErrorMessage));
+ EXPECT_EQ(watcher->root_certs(), kRootCert2);
+ EXPECT_EQ(watcher->key_cert_pairs(), MakeKeyCertPairsType2());
+ EXPECT_THAT(grpc_error_string(watcher->root_cert_error()),
+ ::testing::HasSubstr(kRootErrorMessage));
+ EXPECT_THAT(grpc_error_string(watcher->identity_cert_error()),
+ ::testing::HasSubstr(kIdentityErrorMessage));
+ // Send an update for root
+ distributor->SetKeyMaterials("root", kRootCert1, MakeKeyCertPairsType1());
+ EXPECT_EQ(watcher->root_certs(), kRootCert1);
+ EXPECT_EQ(watcher->key_cert_pairs(), MakeKeyCertPairsType2());
+ EXPECT_EQ(watcher->root_cert_error(), GRPC_ERROR_NONE);
+ EXPECT_THAT(grpc_error_string(watcher->identity_cert_error()),
+ ::testing::HasSubstr(kIdentityErrorMessage));
+ // Send an update for identity
+ distributor->SetKeyMaterials("identity", kRootCert2, MakeKeyCertPairsType1());
+ EXPECT_EQ(watcher->root_certs(), kRootCert1);
+ EXPECT_EQ(watcher->key_cert_pairs(), MakeKeyCertPairsType1());
+ EXPECT_EQ(watcher->root_cert_error(), GRPC_ERROR_NONE);
+ EXPECT_EQ(watcher->identity_cert_error(), GRPC_ERROR_NONE);
+}
+
+TEST(XdsCertificateProviderTest,
+ RootCertDistributorSameAsIdentityCertDistributorSameCertNames) {
+ auto distributor = MakeRefCounted<grpc_tls_certificate_distributor>();
+ XdsCertificateProvider provider("", distributor, "", distributor);
+ auto* watcher = new TestCertificatesWatcher;
+ provider.distributor()->WatchTlsCertificates(
+ std::unique_ptr<TestCertificatesWatcher>(watcher), "", "");
+ EXPECT_EQ(watcher->root_certs(), absl::nullopt);
+ EXPECT_EQ(watcher->key_cert_pairs(), absl::nullopt);
+ EXPECT_EQ(watcher->root_cert_error(), GRPC_ERROR_NONE);
+ EXPECT_EQ(watcher->identity_cert_error(), GRPC_ERROR_NONE);
+ // Update both root certs and identity certs
+ distributor->SetKeyMaterials("", kRootCert1, MakeKeyCertPairsType1());
+ EXPECT_EQ(watcher->root_certs(), kRootCert1);
+ EXPECT_EQ(watcher->key_cert_pairs(), MakeKeyCertPairsType1());
+ EXPECT_EQ(watcher->root_cert_error(), GRPC_ERROR_NONE);
+ EXPECT_EQ(watcher->identity_cert_error(), GRPC_ERROR_NONE);
+ // Second update for just root certs
+ distributor->SetKeyMaterials("", kRootCert2, absl::nullopt);
+ EXPECT_EQ(watcher->root_certs(), kRootCert2);
+ EXPECT_EQ(watcher->key_cert_pairs(), MakeKeyCertPairsType1());
+ EXPECT_EQ(watcher->root_cert_error(), GRPC_ERROR_NONE);
+ EXPECT_EQ(watcher->identity_cert_error(), GRPC_ERROR_NONE);
+ // Second update for identity certs
+ distributor->SetKeyMaterials("", absl::nullopt, MakeKeyCertPairsType2());
+ EXPECT_EQ(watcher->root_certs(), kRootCert2);
+ EXPECT_EQ(watcher->key_cert_pairs(), MakeKeyCertPairsType2());
+ EXPECT_EQ(watcher->root_cert_error(), GRPC_ERROR_NONE);
+ EXPECT_EQ(watcher->identity_cert_error(), GRPC_ERROR_NONE);
+ // Set error for root
+ distributor->SetErrorForCert(
+ "", GRPC_ERROR_CREATE_FROM_STATIC_STRING(kRootErrorMessage),
+ absl::nullopt);
+ EXPECT_EQ(watcher->root_certs(), kRootCert2);
+ EXPECT_EQ(watcher->key_cert_pairs(), MakeKeyCertPairsType2());
+ EXPECT_THAT(grpc_error_string(watcher->root_cert_error()),
+ ::testing::HasSubstr(kRootErrorMessage));
+ EXPECT_EQ(watcher->identity_cert_error(), GRPC_ERROR_NONE);
+ // Set error for identity
+ distributor->SetErrorForCert(
+ "", absl::nullopt,
+ GRPC_ERROR_CREATE_FROM_STATIC_STRING(kIdentityErrorMessage));
+ EXPECT_EQ(watcher->root_certs(), kRootCert2);
+ EXPECT_EQ(watcher->key_cert_pairs(), MakeKeyCertPairsType2());
+ EXPECT_THAT(grpc_error_string(watcher->root_cert_error()),
+ ::testing::HasSubstr(kRootErrorMessage));
+ EXPECT_THAT(grpc_error_string(watcher->identity_cert_error()),
+ ::testing::HasSubstr(kIdentityErrorMessage));
+ // Send an update for root
+ distributor->SetKeyMaterials("", kRootCert1, absl::nullopt);
+ EXPECT_EQ(watcher->root_certs(), kRootCert1);
+ EXPECT_EQ(watcher->key_cert_pairs(), MakeKeyCertPairsType2());
+ EXPECT_EQ(watcher->root_cert_error(), GRPC_ERROR_NONE);
+ EXPECT_THAT(grpc_error_string(watcher->identity_cert_error()),
+ ::testing::HasSubstr(kIdentityErrorMessage));
+ // Send an update for identity
+ distributor->SetKeyMaterials("", absl::nullopt, MakeKeyCertPairsType1());
+ EXPECT_EQ(watcher->root_certs(), kRootCert1);
+ EXPECT_EQ(watcher->key_cert_pairs(), MakeKeyCertPairsType1());
+ EXPECT_EQ(watcher->root_cert_error(), GRPC_ERROR_NONE);
+ EXPECT_EQ(watcher->identity_cert_error(), GRPC_ERROR_NONE);
+}
+
+TEST(XdsCertificateProviderTest, SwapOutDistributorsMultipleTimes) {
+ auto distributor = MakeRefCounted<grpc_tls_certificate_distributor>();
+ distributor->SetKeyMaterials("", kRootCert1, MakeKeyCertPairsType1());
+ XdsCertificateProvider provider("", nullptr, "", nullptr);
+ auto* watcher = new TestCertificatesWatcher;
+ provider.distributor()->WatchTlsCertificates(
+ std::unique_ptr<TestCertificatesWatcher>(watcher), "", "");
+ // Initially there are no certificate providers.
+ EXPECT_EQ(watcher->root_certs(), absl::nullopt);
+ EXPECT_EQ(watcher->key_cert_pairs(), absl::nullopt);
+ EXPECT_THAT(grpc_error_string(watcher->root_cert_error()),
+ ::testing::HasSubstr(
+ "No certificate provider available for root certificates"));
+ EXPECT_THAT(
+ grpc_error_string(watcher->identity_cert_error()),
+ ::testing::HasSubstr(
+ "No certificate provider available for identity certificates"));
+ // Update root cert distributor.
+ provider.UpdateRootCertNameAndDistributor("", distributor);
+ EXPECT_EQ(watcher->root_certs(), kRootCert1);
+ EXPECT_EQ(watcher->key_cert_pairs(), absl::nullopt);
+ EXPECT_EQ(watcher->root_cert_error(), GRPC_ERROR_NONE);
+ EXPECT_THAT(
+ grpc_error_string(watcher->identity_cert_error()),
+ ::testing::HasSubstr(
+ "No certificate provider available for identity certificates"));
+ // Update identity cert distributor
+ provider.UpdateIdentityCertNameAndDistributor("", distributor);
+ EXPECT_EQ(watcher->root_certs(), kRootCert1);
+ EXPECT_EQ(watcher->key_cert_pairs(), MakeKeyCertPairsType1());
+ EXPECT_EQ(watcher->root_cert_error(), GRPC_ERROR_NONE);
+ EXPECT_EQ(watcher->identity_cert_error(), GRPC_ERROR_NONE);
+ // Update both root and identity certs
+ distributor->SetKeyMaterials("", kRootCert2, MakeKeyCertPairsType2());
+ EXPECT_EQ(watcher->root_certs(), kRootCert2);
+ EXPECT_EQ(watcher->key_cert_pairs(), MakeKeyCertPairsType2());
+ EXPECT_EQ(watcher->root_cert_error(), GRPC_ERROR_NONE);
+ EXPECT_EQ(watcher->identity_cert_error(), GRPC_ERROR_NONE);
+ // Set error for both root and identity
+ distributor->SetErrorForCert(
+ "", GRPC_ERROR_CREATE_FROM_STATIC_STRING(kRootErrorMessage),
+ GRPC_ERROR_CREATE_FROM_STATIC_STRING(kIdentityErrorMessage));
+ EXPECT_EQ(watcher->root_certs(), kRootCert2);
+ EXPECT_EQ(watcher->key_cert_pairs(), MakeKeyCertPairsType2());
+ EXPECT_THAT(grpc_error_string(watcher->root_cert_error()),
+ ::testing::HasSubstr(kRootErrorMessage));
+ EXPECT_THAT(grpc_error_string(watcher->identity_cert_error()),
+ ::testing::HasSubstr(kIdentityErrorMessage));
+ // Send an update again
+ distributor->SetKeyMaterials("", kRootCert1, MakeKeyCertPairsType1());
+ EXPECT_EQ(watcher->root_certs(), kRootCert1);
+ EXPECT_EQ(watcher->key_cert_pairs(), MakeKeyCertPairsType1());
+ EXPECT_EQ(watcher->root_cert_error(), GRPC_ERROR_NONE);
+ EXPECT_EQ(watcher->identity_cert_error(), GRPC_ERROR_NONE);
+ // Remove root cert provider
+ provider.UpdateRootCertNameAndDistributor("", nullptr);
+ distributor->SetKeyMaterials("", kRootCert2, MakeKeyCertPairsType2());
+ EXPECT_EQ(watcher->root_certs(), kRootCert1); // not updated
+ EXPECT_EQ(watcher->key_cert_pairs(), MakeKeyCertPairsType2());
+ EXPECT_THAT(grpc_error_string(watcher->root_cert_error()),
+ ::testing::HasSubstr(
+ "No certificate provider available for root certificates"));
+ EXPECT_EQ(watcher->identity_cert_error(), GRPC_ERROR_NONE);
+ // Remove identity cert provider too
+ provider.UpdateIdentityCertNameAndDistributor("", nullptr);
+ distributor->SetKeyMaterials("", kRootCert1, MakeKeyCertPairsType1());
+ EXPECT_EQ(watcher->root_certs(), kRootCert1);
+ EXPECT_EQ(watcher->key_cert_pairs(), MakeKeyCertPairsType2()); // not updated
+ EXPECT_THAT(grpc_error_string(watcher->root_cert_error()),
+ ::testing::HasSubstr(
+ "No certificate provider available for root certificates"));
+ EXPECT_THAT(
+ grpc_error_string(watcher->identity_cert_error()),
+ ::testing::HasSubstr(
+ "No certificate provider available for identity certificates"));
+ // Change certificate names being watched, without any certificate updates.
+ provider.UpdateRootCertNameAndDistributor("root", distributor);
+ provider.UpdateIdentityCertNameAndDistributor("identity", distributor);
+ EXPECT_EQ(watcher->root_certs(), kRootCert1);
+ EXPECT_EQ(watcher->key_cert_pairs(), MakeKeyCertPairsType2());
+ EXPECT_THAT(grpc_error_string(watcher->root_cert_error()),
+ ::testing::HasSubstr(
+ "No certificate provider available for root certificates"));
+ EXPECT_THAT(
+ grpc_error_string(watcher->identity_cert_error()),
+ ::testing::HasSubstr(
+ "No certificate provider available for identity certificates"));
+ // Send out certificate updates.
+ distributor->SetKeyMaterials("root", kRootCert2, absl::nullopt);
+ distributor->SetKeyMaterials("identity", absl::nullopt,
+ MakeKeyCertPairsType1());
+ EXPECT_EQ(watcher->root_certs(), kRootCert2);
+ EXPECT_EQ(watcher->key_cert_pairs(), MakeKeyCertPairsType1());
+ EXPECT_EQ(watcher->root_cert_error(), GRPC_ERROR_NONE);
+ EXPECT_EQ(watcher->identity_cert_error(), GRPC_ERROR_NONE);
+ // Swap in new certificate distributors with different certificate names and
+ // existing updates.
+ auto root_cert_distributor =
+ MakeRefCounted<grpc_tls_certificate_distributor>();
+ auto identity_cert_distributor =
+ MakeRefCounted<grpc_tls_certificate_distributor>();
+ provider.UpdateRootCertNameAndDistributor("root", root_cert_distributor);
+ provider.UpdateIdentityCertNameAndDistributor("identity",
+ identity_cert_distributor);
+ EXPECT_EQ(watcher->root_certs(), kRootCert2);
+ EXPECT_EQ(watcher->key_cert_pairs(), MakeKeyCertPairsType1());
+ EXPECT_EQ(watcher->root_cert_error(), GRPC_ERROR_NONE);
+ EXPECT_EQ(watcher->identity_cert_error(), GRPC_ERROR_NONE);
+ // Change certificate names without any certificate updates.
+ provider.UpdateRootCertNameAndDistributor("test", root_cert_distributor);
+ provider.UpdateIdentityCertNameAndDistributor("test",
+ identity_cert_distributor);
+ EXPECT_EQ(watcher->root_certs(), kRootCert2);
+ EXPECT_EQ(watcher->key_cert_pairs(), MakeKeyCertPairsType1());
+ EXPECT_EQ(watcher->root_cert_error(), GRPC_ERROR_NONE);
+ EXPECT_EQ(watcher->identity_cert_error(), GRPC_ERROR_NONE);
+ // Send out certificate updates.
+ root_cert_distributor->SetKeyMaterials("test", kRootCert1,
+ MakeKeyCertPairsType1());
+ identity_cert_distributor->SetKeyMaterials("test", kRootCert2,
+ MakeKeyCertPairsType2());
+ EXPECT_EQ(watcher->root_certs(), kRootCert1);
+ EXPECT_EQ(watcher->key_cert_pairs(), MakeKeyCertPairsType2());
+ EXPECT_EQ(watcher->root_cert_error(), GRPC_ERROR_NONE);
+ EXPECT_EQ(watcher->identity_cert_error(), GRPC_ERROR_NONE);
+}
+
+TEST(XdsCertificateProviderTest, CertificateNameNotEmpty) {
+ XdsCertificateProvider provider("", nullptr, "", nullptr);
+ auto* watcher = new TestCertificatesWatcher;
+ provider.distributor()->WatchTlsCertificates(
+ std::unique_ptr<TestCertificatesWatcher>(watcher), "test", "test");
+ EXPECT_THAT(grpc_error_string(watcher->root_cert_error()),
+ ::testing::HasSubstr("Illegal certificate name: \'test\'"));
+ EXPECT_THAT(grpc_error_string(watcher->identity_cert_error()),
+ ::testing::HasSubstr("Illegal certificate name: \'test\'"));
+}
+
+} // namespace
+} // namespace testing
+} // namespace grpc_core
+
+int main(int argc, char** argv) {
+ ::testing::InitGoogleTest(&argc, argv);
+ grpc::testing::TestEnvironment env(argc, argv);
+ grpc_init();
+ auto result = RUN_ALL_TESTS();
+ grpc_shutdown();
+ return result;
+}
#include <gmock/gmock.h>
#include <grpc/grpc.h>
+#include <grpc/grpc_security.h>
#include <grpcpp/security/credentials.h>
#include <grpcpp/security/server_credentials.h>
#include <grpcpp/security/tls_credentials_options.h>
#include "src/core/lib/gpr/env.h"
#include "src/core/lib/gpr/tmpfile.h"
-#include "src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h"
#include "src/cpp/client/secure_credentials.h"
#include "src/cpp/common/tls_credentials_options_util.h"
namespace {
-typedef class ::grpc::experimental::TlsKeyMaterialsConfig TlsKeyMaterialsConfig;
-typedef class ::grpc::experimental::TlsCredentialReloadArg
- TlsCredentialReloadArg;
-typedef struct ::grpc::experimental::TlsCredentialReloadInterface
- TlsCredentialReloadInterface;
-typedef class ::grpc::experimental::TlsServerAuthorizationCheckArg
- TlsServerAuthorizationCheckArg;
-typedef struct ::grpc::experimental::TlsServerAuthorizationCheckInterface
- TlsServerAuthorizationCheckInterface;
-
-static void tls_credential_reload_callback(
- grpc_tls_credential_reload_arg* arg) {
- GPR_ASSERT(arg != nullptr);
- arg->status = GRPC_SSL_CERTIFICATE_CONFIG_RELOAD_UNCHANGED;
-}
+constexpr const char* kRootCertName = "root_cert_name";
+constexpr const char* kRootCertContents = "root_cert_contents";
+constexpr const char* kIdentityCertName = "identity_cert_name";
+constexpr const char* kIdentityCertPrivateKey = "identity_private_key";
+constexpr const char* kIdentityCertContents = "identity_cert_contents";
-class TestTlsCredentialReload : public TlsCredentialReloadInterface {
- int Schedule(TlsCredentialReloadArg* arg) override {
- GPR_ASSERT(arg != nullptr);
- TlsKeyMaterialsConfig::PemKeyCertPair pair = {"private_key3",
- "cert_chain3"};
- arg->set_pem_root_certs("new_pem_root_certs");
- arg->add_pem_key_cert_pair(pair);
- arg->set_status(GRPC_SSL_CERTIFICATE_CONFIG_RELOAD_NEW);
- return 0;
- }
-
- void Cancel(TlsCredentialReloadArg* arg) override {
- GPR_ASSERT(arg != nullptr);
- arg->set_status(GRPC_SSL_CERTIFICATE_CONFIG_RELOAD_FAIL);
- arg->set_error_details("cancelled");
- }
-};
+using ::grpc::experimental::StaticDataCertificateProvider;
+using ::grpc::experimental::TlsServerAuthorizationCheckArg;
+using ::grpc::experimental::TlsServerAuthorizationCheckConfig;
+using ::grpc::experimental::TlsServerAuthorizationCheckInterface;
static void tls_server_authorization_check_callback(
grpc_tls_server_authorization_check_arg* arg) {
namespace grpc {
namespace testing {
+namespace {
-class CredentialsTest : public ::testing::Test {
- protected:
-};
-
-TEST_F(CredentialsTest, InvalidGoogleRefreshToken) {
+TEST(CredentialsTest, InvalidGoogleRefreshToken) {
std::shared_ptr<CallCredentials> bad1 = GoogleRefreshTokenCredentials("");
EXPECT_EQ(static_cast<CallCredentials*>(nullptr), bad1.get());
}
-TEST_F(CredentialsTest, DefaultCredentials) {
+TEST(CredentialsTest, DefaultCredentials) {
auto creds = GoogleDefaultCredentials();
}
-TEST_F(CredentialsTest, StsCredentialsOptionsCppToCore) {
+TEST(CredentialsTest, StsCredentialsOptionsCppToCore) {
grpc::experimental::StsCredentialsOptions options;
options.token_exchange_service_uri = "https://foo.com/exchange";
options.resource = "resource";
EXPECT_EQ(options.actor_token_type, core_opts.actor_token_type);
}
-TEST_F(CredentialsTest, StsCredentialsOptionsJson) {
+TEST(CredentialsTest, StsCredentialsOptionsJson) {
const char valid_json[] = R"(
{
"token_exchange_service_uri": "https://foo/exchange",
::testing::HasSubstr("token_exchange_service_uri"));
}
-TEST_F(CredentialsTest, StsCredentialsOptionsFromEnv) {
+TEST(CredentialsTest, StsCredentialsOptionsFromEnv) {
// Unset env and check expected failure.
gpr_unsetenv("STS_CREDENTIALS");
grpc::experimental::StsCredentialsOptions options;
gpr_unsetenv("STS_CREDENTIALS");
}
-typedef class ::grpc::experimental::TlsKeyMaterialsConfig TlsKeyMaterialsConfig;
-
-TEST_F(CredentialsTest, TlsKeyMaterialsConfigCppToC) {
- std::shared_ptr<TlsKeyMaterialsConfig> config(new TlsKeyMaterialsConfig());
- struct TlsKeyMaterialsConfig::PemKeyCertPair pair = {"private_key",
- "cert_chain"};
- std::vector<TlsKeyMaterialsConfig::PemKeyCertPair> pair_list = {pair};
- config->set_key_materials("pem_root_certs", pair_list);
- grpc_tls_key_materials_config* c_config =
- ConvertToCKeyMaterialsConfig(config);
- EXPECT_STREQ("pem_root_certs", c_config->pem_root_certs());
- EXPECT_EQ(1, static_cast<int>(c_config->pem_key_cert_pair_list().size()));
- EXPECT_STREQ(pair.private_key.c_str(),
- c_config->pem_key_cert_pair_list()[0].private_key());
- EXPECT_STREQ(pair.cert_chain.c_str(),
- c_config->pem_key_cert_pair_list()[0].cert_chain());
- delete c_config;
-}
-
-TEST_F(CredentialsTest, TlsKeyMaterialsModifiers) {
- std::shared_ptr<TlsKeyMaterialsConfig> config(new TlsKeyMaterialsConfig());
- TlsKeyMaterialsConfig::PemKeyCertPair pair = {"private_key", "cert_chain"};
- config->add_pem_key_cert_pair(pair);
- config->set_pem_root_certs("pem_root_certs");
- EXPECT_STREQ(config->pem_root_certs().c_str(), "pem_root_certs");
- std::vector<TlsKeyMaterialsConfig::PemKeyCertPair> list =
- config->pem_key_cert_pair_list();
- EXPECT_EQ(static_cast<int>(list.size()), 1);
- EXPECT_STREQ(list[0].private_key.c_str(), "private_key");
- EXPECT_STREQ(list[0].cert_chain.c_str(), "cert_chain");
-}
-
-typedef class ::grpc::experimental::TlsCredentialReloadArg
- TlsCredentialReloadArg;
-typedef class ::grpc::experimental::TlsCredentialReloadConfig
- TlsCredentialReloadConfig;
-
-TEST_F(CredentialsTest, TlsCredentialReloadArgCallback) {
- grpc_tls_credential_reload_arg* c_arg = new grpc_tls_credential_reload_arg;
- c_arg->key_materials_config = grpc_tls_key_materials_config_create();
- c_arg->cb = tls_credential_reload_callback;
- c_arg->context = nullptr;
- TlsCredentialReloadArg* arg = new TlsCredentialReloadArg(c_arg);
- arg->set_pem_root_certs("pem_root_certs");
- TlsKeyMaterialsConfig::PemKeyCertPair pair = {"private_key", "cert_chain"};
- arg->add_pem_key_cert_pair(pair);
- arg->set_status(GRPC_SSL_CERTIFICATE_CONFIG_RELOAD_NEW);
- arg->OnCredentialReloadDoneCallback();
- EXPECT_EQ(arg->status(), GRPC_SSL_CERTIFICATE_CONFIG_RELOAD_UNCHANGED);
- EXPECT_STREQ(c_arg->key_materials_config->pem_root_certs(), "pem_root_certs");
- EXPECT_EQ(c_arg->key_materials_config->pem_key_cert_pair_list().size(), 1);
- EXPECT_STREQ(
- c_arg->key_materials_config->pem_key_cert_pair_list()[0].private_key(),
- "private_key");
- EXPECT_STREQ(
- c_arg->key_materials_config->pem_key_cert_pair_list()[0].cert_chain(),
- "cert_chain");
-
- // Cleanup.
- delete arg;
- delete c_arg->key_materials_config;
- delete c_arg;
-}
-
-TEST_F(CredentialsTest, TlsCredentialReloadConfigSchedule) {
- std::shared_ptr<TestTlsCredentialReload> test_credential_reload(
- new TestTlsCredentialReload());
- std::shared_ptr<TlsCredentialReloadConfig> config(
- new TlsCredentialReloadConfig(test_credential_reload));
- grpc_tls_credential_reload_arg* c_arg = new grpc_tls_credential_reload_arg();
- c_arg->error_details = new grpc_tls_error_details();
- c_arg->context = nullptr;
- TlsCredentialReloadArg* arg = new TlsCredentialReloadArg(c_arg);
- struct TlsKeyMaterialsConfig::PemKeyCertPair pair1 = {"private_key1",
- "cert_chain1"};
- struct TlsKeyMaterialsConfig::PemKeyCertPair pair2 = {"private_key2",
- "cert_chain2"};
- std::vector<TlsKeyMaterialsConfig::PemKeyCertPair> pair_list = {pair1, pair2};
- arg->set_key_materials("pem_root_certs", pair_list);
- arg->set_status(GRPC_SSL_CERTIFICATE_CONFIG_RELOAD_NEW);
- arg->set_error_details("error_details");
-
- int schedule_output = config->Schedule(arg);
- EXPECT_EQ(schedule_output, 0);
- EXPECT_STREQ(c_arg->key_materials_config->pem_root_certs(),
- "new_pem_root_certs");
- grpc_tls_key_materials_config::PemKeyCertPairList c_pair_list =
- c_arg->key_materials_config->pem_key_cert_pair_list();
- EXPECT_TRUE(!arg->is_pem_key_cert_pair_list_empty());
- EXPECT_EQ(static_cast<int>(c_pair_list.size()), 3);
- EXPECT_STREQ(c_pair_list[0].private_key(), "private_key1");
- EXPECT_STREQ(c_pair_list[0].cert_chain(), "cert_chain1");
- EXPECT_STREQ(c_pair_list[1].private_key(), "private_key2");
- EXPECT_STREQ(c_pair_list[1].cert_chain(), "cert_chain2");
- EXPECT_STREQ(c_pair_list[2].private_key(), "private_key3");
- EXPECT_STREQ(c_pair_list[2].cert_chain(), "cert_chain3");
- EXPECT_EQ(arg->status(), GRPC_SSL_CERTIFICATE_CONFIG_RELOAD_NEW);
- EXPECT_STREQ(arg->error_details().c_str(), "error_details");
-
- // Cleanup.
- delete c_arg->key_materials_config;
- if (c_arg->destroy_context != nullptr) {
- c_arg->destroy_context(c_arg->context);
- }
- delete c_arg->error_details;
- delete c_arg;
- delete config->c_config();
-}
-
-TEST_F(CredentialsTest, TlsCredentialReloadConfigCppToC) {
- std::shared_ptr<TestTlsCredentialReload> test_credential_reload(
- new TestTlsCredentialReload());
- TlsCredentialReloadConfig config(test_credential_reload);
- grpc_tls_credential_reload_arg c_arg;
- c_arg.error_details = new grpc_tls_error_details();
- c_arg.context = nullptr;
- c_arg.cb_user_data = static_cast<void*>(nullptr);
- grpc_tls_key_materials_config c_key_materials;
- std::string test_private_key = "private_key";
- std::string test_cert_chain = "cert_chain";
- grpc_ssl_pem_key_cert_pair* ssl_pair =
- (grpc_ssl_pem_key_cert_pair*)gpr_malloc(
- sizeof(grpc_ssl_pem_key_cert_pair));
- ssl_pair->private_key = gpr_strdup(test_private_key.c_str());
- ssl_pair->cert_chain = gpr_strdup(test_cert_chain.c_str());
- ::grpc_core::PemKeyCertPair pem_key_cert_pair =
- ::grpc_core::PemKeyCertPair(ssl_pair);
- ::absl::InlinedVector<::grpc_core::PemKeyCertPair, 1> pem_key_cert_pair_list;
- pem_key_cert_pair_list.push_back(pem_key_cert_pair);
- std::string test_pem_root_certs = "pem_root_certs";
- c_key_materials.set_key_materials(test_pem_root_certs.c_str(),
- pem_key_cert_pair_list);
- c_arg.key_materials_config = &c_key_materials;
- c_arg.status = GRPC_SSL_CERTIFICATE_CONFIG_RELOAD_UNCHANGED;
- std::string test_error_details = "error_details";
- c_arg.error_details->set_error_details(test_error_details.c_str());
-
- grpc_tls_credential_reload_config* c_config = config.c_config();
- c_arg.config = c_config;
- int c_schedule_output = c_config->Schedule(&c_arg);
- EXPECT_EQ(c_schedule_output, 0);
- EXPECT_EQ(c_arg.cb_user_data, nullptr);
- EXPECT_STREQ(c_arg.key_materials_config->pem_root_certs(),
- "new_pem_root_certs");
- ::absl::InlinedVector<::grpc_core::PemKeyCertPair, 1> pair_list =
- c_arg.key_materials_config->pem_key_cert_pair_list();
- EXPECT_EQ(static_cast<int>(pair_list.size()), 2);
- EXPECT_STREQ(pair_list[0].private_key(), "private_key");
- EXPECT_STREQ(pair_list[0].cert_chain(), "cert_chain");
- EXPECT_STREQ(pair_list[1].private_key(), "private_key3");
- EXPECT_STREQ(pair_list[1].cert_chain(), "cert_chain3");
- EXPECT_EQ(c_arg.status, GRPC_SSL_CERTIFICATE_CONFIG_RELOAD_NEW);
- EXPECT_STREQ(c_arg.error_details->error_details().c_str(),
- test_error_details.c_str());
-
- // Cleanup.
- c_arg.destroy_context(c_arg.context);
- delete c_arg.error_details;
- delete config.c_config();
-}
-
-typedef class ::grpc::experimental::TlsServerAuthorizationCheckArg
- TlsServerAuthorizationCheckArg;
-typedef class ::grpc::experimental::TlsServerAuthorizationCheckConfig
- TlsServerAuthorizationCheckConfig;
-
-TEST_F(CredentialsTest, TlsServerAuthorizationCheckArgCallback) {
+TEST(CredentialsTest, TlsServerAuthorizationCheckArgCallback) {
grpc_tls_server_authorization_check_arg* c_arg =
new grpc_tls_server_authorization_check_arg;
c_arg->cb = tls_server_authorization_check_callback;
delete c_arg;
}
-TEST_F(CredentialsTest, TlsServerAuthorizationCheckConfigSchedule) {
+TEST(CredentialsTest, TlsServerAuthorizationCheckConfigSchedule) {
std::shared_ptr<TestTlsServerAuthorizationCheck>
test_server_authorization_check(new TestTlsServerAuthorizationCheck());
TlsServerAuthorizationCheckConfig config(test_server_authorization_check);
c_arg->destroy_context(c_arg->context);
}
delete c_arg;
- delete config.c_config();
}
-TEST_F(CredentialsTest, TlsServerAuthorizationCheckConfigCppToC) {
+TEST(CredentialsTest, TlsServerAuthorizationCheckConfigCppToC) {
std::shared_ptr<TestTlsServerAuthorizationCheck>
test_server_authorization_check(new TestTlsServerAuthorizationCheck());
TlsServerAuthorizationCheckConfig config(test_server_authorization_check);
delete c_arg.error_details;
gpr_free(const_cast<char*>(c_arg.target_name));
gpr_free(const_cast<char*>(c_arg.peer_cert));
- delete config.c_config();
-}
-
-typedef class ::grpc::experimental::TlsCredentialsOptions TlsCredentialsOptions;
-
-TEST_F(CredentialsTest, TlsCredentialsOptionsCppToC) {
- std::shared_ptr<TlsKeyMaterialsConfig> key_materials_config(
- new TlsKeyMaterialsConfig());
- struct TlsKeyMaterialsConfig::PemKeyCertPair pair = {"private_key",
- "cert_chain"};
- std::vector<TlsKeyMaterialsConfig::PemKeyCertPair> pair_list = {pair};
- key_materials_config->set_key_materials("pem_root_certs", pair_list);
-
- std::shared_ptr<TestTlsCredentialReload> test_credential_reload(
- new TestTlsCredentialReload());
- std::shared_ptr<TlsCredentialReloadConfig> credential_reload_config(
- new TlsCredentialReloadConfig(test_credential_reload));
-
- std::shared_ptr<TestTlsServerAuthorizationCheck>
- test_server_authorization_check(new TestTlsServerAuthorizationCheck());
- std::shared_ptr<TlsServerAuthorizationCheckConfig>
- server_authorization_check_config(new TlsServerAuthorizationCheckConfig(
- test_server_authorization_check));
-
- TlsCredentialsOptions options = TlsCredentialsOptions(
- GRPC_TLS_SERVER_VERIFICATION, key_materials_config,
- credential_reload_config, server_authorization_check_config);
- grpc_tls_credentials_options* c_options = options.c_credentials_options();
- EXPECT_EQ(c_options->cert_request_type(),
- GRPC_SSL_DONT_REQUEST_CLIENT_CERTIFICATE);
- EXPECT_EQ(c_options->server_verification_option(),
- GRPC_TLS_SERVER_VERIFICATION);
- grpc_tls_key_materials_config* c_key_materials_config =
- c_options->key_materials_config();
- grpc_tls_credential_reload_config* c_credential_reload_config =
- c_options->credential_reload_config();
- grpc_tls_credential_reload_arg c_credential_reload_arg;
- c_credential_reload_arg.cb_user_data = nullptr;
- c_credential_reload_arg.key_materials_config =
- c_options->key_materials_config();
- c_credential_reload_arg.status = GRPC_SSL_CERTIFICATE_CONFIG_RELOAD_UNCHANGED;
- std::string test_error_details = "error_details";
- c_credential_reload_arg.error_details = new grpc_tls_error_details();
- c_credential_reload_arg.error_details->set_error_details(
- test_error_details.c_str());
- c_credential_reload_arg.context = nullptr;
- grpc_tls_server_authorization_check_config*
- c_server_authorization_check_config =
- c_options->server_authorization_check_config();
- grpc_tls_server_authorization_check_arg c_server_authorization_check_arg;
- c_server_authorization_check_arg.cb = tls_server_authorization_check_callback;
- c_server_authorization_check_arg.cb_user_data = nullptr;
- c_server_authorization_check_arg.success = 0;
- c_server_authorization_check_arg.target_name = "target_name";
- c_server_authorization_check_arg.peer_cert = "peer_cert";
- c_server_authorization_check_arg.status = GRPC_STATUS_UNAUTHENTICATED;
- c_server_authorization_check_arg.error_details = new grpc_tls_error_details();
- c_server_authorization_check_arg.error_details->set_error_details(
- "error_details");
- c_server_authorization_check_arg.context = nullptr;
- EXPECT_STREQ(c_key_materials_config->pem_root_certs(), "pem_root_certs");
- EXPECT_EQ(
- static_cast<int>(c_key_materials_config->pem_key_cert_pair_list().size()),
- 1);
- EXPECT_STREQ(
- c_key_materials_config->pem_key_cert_pair_list()[0].private_key(),
- "private_key");
- EXPECT_STREQ(c_key_materials_config->pem_key_cert_pair_list()[0].cert_chain(),
- "cert_chain");
-
- GPR_ASSERT(c_credential_reload_config != nullptr);
- int c_credential_reload_schedule_output =
- c_credential_reload_config->Schedule(&c_credential_reload_arg);
- EXPECT_EQ(c_credential_reload_schedule_output, 0);
- EXPECT_EQ(c_credential_reload_arg.cb_user_data, nullptr);
- EXPECT_STREQ(c_credential_reload_arg.key_materials_config->pem_root_certs(),
- "new_pem_root_certs");
- ::absl::InlinedVector<::grpc_core::PemKeyCertPair, 1> c_pair_list =
- c_credential_reload_arg.key_materials_config->pem_key_cert_pair_list();
- EXPECT_EQ(static_cast<int>(c_pair_list.size()), 2);
- EXPECT_STREQ(c_pair_list[0].private_key(), "private_key");
- EXPECT_STREQ(c_pair_list[0].cert_chain(), "cert_chain");
- EXPECT_STREQ(c_pair_list[1].private_key(), "private_key3");
- EXPECT_STREQ(c_pair_list[1].cert_chain(), "cert_chain3");
- EXPECT_EQ(c_credential_reload_arg.status,
- GRPC_SSL_CERTIFICATE_CONFIG_RELOAD_NEW);
- EXPECT_STREQ(c_credential_reload_arg.error_details->error_details().c_str(),
- test_error_details.c_str());
-
- int c_server_authorization_check_schedule_output =
- c_server_authorization_check_config->Schedule(
- &c_server_authorization_check_arg);
- EXPECT_EQ(c_server_authorization_check_schedule_output, 1);
- EXPECT_STREQ(
- static_cast<char*>(c_server_authorization_check_arg.cb_user_data),
- "cb_user_data");
- EXPECT_EQ(c_server_authorization_check_arg.success, 1);
- EXPECT_STREQ(c_server_authorization_check_arg.target_name,
- "sync_target_name");
- EXPECT_STREQ(c_server_authorization_check_arg.peer_cert, "sync_peer_cert");
- EXPECT_EQ(c_server_authorization_check_arg.status, GRPC_STATUS_OK);
- EXPECT_STREQ(
- c_server_authorization_check_arg.error_details->error_details().c_str(),
- "sync_error_details");
-
- // Cleanup.
- c_credential_reload_arg.destroy_context(c_credential_reload_arg.context);
- delete c_credential_reload_arg.error_details;
- c_server_authorization_check_arg.destroy_context(
- c_server_authorization_check_arg.context);
- gpr_free(c_server_authorization_check_arg.cb_user_data);
- gpr_free(const_cast<char*>(c_server_authorization_check_arg.target_name));
- gpr_free(const_cast<char*>(c_server_authorization_check_arg.peer_cert));
- delete c_server_authorization_check_arg.error_details;
- delete c_options;
}
-// This test demonstrates how the TLS credentials will be used.
-TEST_F(CredentialsTest, LoadTlsChannelCredentials) {
- std::shared_ptr<TestTlsCredentialReload> test_credential_reload(
- new TestTlsCredentialReload());
- std::shared_ptr<TlsCredentialReloadConfig> credential_reload_config(
- new TlsCredentialReloadConfig(test_credential_reload));
-
- std::shared_ptr<TestTlsServerAuthorizationCheck>
- test_server_authorization_check(new TestTlsServerAuthorizationCheck());
- std::shared_ptr<TlsServerAuthorizationCheckConfig>
- server_authorization_check_config(new TlsServerAuthorizationCheckConfig(
- test_server_authorization_check));
-
- TlsCredentialsOptions options = TlsCredentialsOptions(
- GRPC_TLS_SERVER_VERIFICATION, nullptr, credential_reload_config,
+TEST(
+ CredentialsTest,
+ TlsChannelCredentialsWithStaticDataCertificateProviderLoadingRootAndIdentity) {
+ experimental::IdentityKeyCertPair key_cert_pair;
+ key_cert_pair.private_key = kIdentityCertPrivateKey;
+ key_cert_pair.certificate_chain = kIdentityCertContents;
+ std::vector<experimental::IdentityKeyCertPair> identity_key_cert_pairs;
+ identity_key_cert_pairs.emplace_back(key_cert_pair);
+ auto certificate_provider = std::make_shared<StaticDataCertificateProvider>(
+ kRootCertContents, identity_key_cert_pairs);
+ auto test_server_authorization_check =
+ std::make_shared<TestTlsServerAuthorizationCheck>();
+ auto server_authorization_check_config =
+ std::make_shared<TlsServerAuthorizationCheckConfig>(
+ test_server_authorization_check);
+ grpc::experimental::TlsChannelCredentialsOptions options(
+ certificate_provider);
+ options.watch_root_certs();
+ options.set_root_cert_name(kRootCertName);
+ options.watch_identity_key_cert_pairs();
+ options.set_identity_cert_name(kIdentityCertName);
+ options.set_server_verification_option(GRPC_TLS_SERVER_VERIFICATION);
+ options.set_server_authorization_check_config(
server_authorization_check_config);
- std::shared_ptr<grpc::ChannelCredentials> channel_credentials =
- grpc::experimental::TlsCredentials(options);
+ auto channel_credentials = grpc::experimental::TlsCredentials(options);
GPR_ASSERT(channel_credentials.get() != nullptr);
}
-TEST_F(CredentialsTest, TlsCredentialReloadConfigErrorMessages) {
- std::shared_ptr<TlsCredentialReloadConfig> config(
- new TlsCredentialReloadConfig(nullptr));
- grpc_tls_credential_reload_arg* c_arg = new grpc_tls_credential_reload_arg;
- c_arg->error_details = new grpc_tls_error_details();
- c_arg->context = nullptr;
- TlsCredentialReloadArg* arg = new TlsCredentialReloadArg(c_arg);
- int schedule_output = config->Schedule(arg);
-
- EXPECT_EQ(schedule_output, 1);
- EXPECT_EQ(arg->status(), GRPC_SSL_CERTIFICATE_CONFIG_RELOAD_FAIL);
- EXPECT_STREQ(arg->error_details().c_str(),
- "the interface of the credential reload config is nullptr");
-
- arg->set_status(GRPC_SSL_CERTIFICATE_CONFIG_RELOAD_UNCHANGED);
- config->Cancel(arg);
- EXPECT_EQ(arg->status(), GRPC_SSL_CERTIFICATE_CONFIG_RELOAD_FAIL);
- EXPECT_STREQ(arg->error_details().c_str(),
- "the interface of the credential reload config is nullptr");
-
- // Cleanup.
- if (c_arg->destroy_context != nullptr) {
- c_arg->destroy_context(c_arg->context);
- }
- delete c_arg->error_details;
- delete c_arg;
- delete config->c_config();
+// ChannelCredentials should always have root credential presented.
+// Otherwise the system root certificates will be loaded, which will cause
+// failure in some tests under MacOS/Windows.
+TEST(CredentialsTest,
+ TlsChannelCredentialsWithStaticDataCertificateProviderLoadingRootOnly) {
+ auto certificate_provider =
+ std::make_shared<StaticDataCertificateProvider>(kRootCertContents);
+ auto test_server_authorization_check =
+ std::make_shared<TestTlsServerAuthorizationCheck>();
+ auto server_authorization_check_config =
+ std::make_shared<TlsServerAuthorizationCheckConfig>(
+ test_server_authorization_check);
+ GPR_ASSERT(certificate_provider != nullptr);
+ GPR_ASSERT(certificate_provider->c_provider() != nullptr);
+ grpc::experimental::TlsChannelCredentialsOptions options(
+ certificate_provider);
+ options.watch_root_certs();
+ options.set_root_cert_name(kRootCertName);
+ options.set_server_verification_option(GRPC_TLS_SERVER_VERIFICATION);
+ options.set_server_authorization_check_config(
+ server_authorization_check_config);
+ auto channel_credentials = grpc::experimental::TlsCredentials(options);
+ GPR_ASSERT(channel_credentials.get() != nullptr);
}
-TEST_F(CredentialsTest, TlsServerAuthorizationCheckConfigErrorMessages) {
+TEST(CredentialsTest, TlsServerAuthorizationCheckConfigErrorMessages) {
std::shared_ptr<TlsServerAuthorizationCheckConfig> config(
new TlsServerAuthorizationCheckConfig(nullptr));
grpc_tls_server_authorization_check_arg* c_arg =
c_arg->destroy_context(c_arg->context);
}
delete c_arg;
- delete config->c_config();
}
+} // namespace
} // namespace testing
} // namespace grpc
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
HEADER_SEARCH_PATHS = ../../../include;
- IPHONEOS_DEPLOYMENT_TARGET = 11.1;
+ IPHONEOS_DEPLOYMENT_TARGET = 9.0;
MTL_ENABLE_DEBUG_INFO = YES;
ONLY_ACTIVE_ARCH = YES;
SDKROOT = iphoneos;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
HEADER_SEARCH_PATHS = ../../../include;
- IPHONEOS_DEPLOYMENT_TARGET = 11.1;
+ IPHONEOS_DEPLOYMENT_TARGET = 9.0;
MTL_ENABLE_DEBUG_INFO = NO;
SDKROOT = iphoneos;
USER_HEADER_SEARCH_PATHS = ../../..;
CODE_SIGN_STYLE = Automatic;
DEVELOPMENT_TEAM = EQHXZ8M8AV;
INFOPLIST_FILE = generic/Info.plist;
- IPHONEOS_DEPLOYMENT_TARGET = 11.2;
+ IPHONEOS_DEPLOYMENT_TARGET = 9.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
PRODUCT_BUNDLE_IDENTIFIER = io.grpc.generic;
PRODUCT_NAME = "$(TARGET_NAME)";
CODE_SIGN_STYLE = Automatic;
DEVELOPMENT_TEAM = EQHXZ8M8AV;
INFOPLIST_FILE = generic/Info.plist;
- IPHONEOS_DEPLOYMENT_TARGET = 11.2;
+ IPHONEOS_DEPLOYMENT_TARGET = 9.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
PRODUCT_BUNDLE_IDENTIFIER = io.grpc.generic;
PRODUCT_NAME = "$(TARGET_NAME)";
source 'https://github.com/CocoaPods/Specs.git'
-platform :ios, '8.0'
+platform :ios, '9.0'
install! 'cocoapods', :deterministic_uuids => false
testonly = True,
srcs = ["golden_file_test.cc"],
external_deps = [
+ "absl/flags:flag",
"gtest",
- "gflags",
],
deps = [
"//:grpc++",
*
*/
+#include <gtest/gtest.h>
+
#include <fstream>
#include <sstream>
-#include <gflags/gflags.h>
-#include <gtest/gtest.h>
-
+#include "absl/flags/flag.h"
#include "test/core/util/test_config.h"
#include "test/cpp/util/test_config.h"
-// In some distros, gflags is in the namespace google, and in some others,
-// in gflags. This hack is enabling us to find both.
-namespace google {}
-namespace gflags {}
-using namespace google;
-using namespace gflags;
-
-DEFINE_string(
- generated_file_path, "",
+ABSL_FLAG(
+ std::string, generated_file_path, "",
"path to the directory containing generated files compiler_test.grpc.pb.h "
"and compiler_test_mock.grpc.pb.h");
}
TEST(GoldenFileTest, TestGeneratedFile) {
- run_test(FLAGS_generated_file_path + "compiler_test.grpc.pb.h",
+ run_test(absl::GetFlag(FLAGS_generated_file_path) + "compiler_test.grpc.pb.h",
kGoldenFilePath);
}
TEST(GoldenMockFileTest, TestGeneratedMockFile) {
- run_test(FLAGS_generated_file_path + "compiler_test_mock.grpc.pb.h",
- kMockGoldenFilePath);
+ run_test(
+ absl::GetFlag(FLAGS_generated_file_path) + "compiler_test_mock.grpc.pb.h",
+ kMockGoldenFilePath);
}
int main(int argc, char** argv) {
grpc::testing::TestEnvironment env(argc, argv);
::testing::InitGoogleTest(&argc, argv);
grpc::testing::InitTest(&argc, &argv, true);
- if (FLAGS_generated_file_path.empty()) {
- FLAGS_generated_file_path = "gens/src/proto/grpc/testing/";
+ if (absl::GetFlag(FLAGS_generated_file_path).empty()) {
+ absl::SetFlag(&FLAGS_generated_file_path, "gens/src/proto/grpc/testing/");
+ }
+ if (absl::GetFlag(FLAGS_generated_file_path).back() != '/') {
+ absl::SetFlag(&FLAGS_generated_file_path,
+ absl::GetFlag(FLAGS_generated_file_path).append("/"));
}
- if (FLAGS_generated_file_path.back() != '/')
- FLAGS_generated_file_path.append("/");
return RUN_ALL_TESTS();
}
// Skip test if slowdown factor > 1
if (grpc_test_slowdown_factor() == 1) {
run_cmd("sudo sntp -sS pool.ntp.org");
- grpc_shutdown_blocking();
+ grpc_shutdown();
}
}
}
}
- void TearDown() override { grpc_shutdown_blocking(); }
+ void TearDown() override { grpc_shutdown(); }
bool do_not_test_{false};
};
testonly = True,
srcs = ["client_crash_test_server.cc"],
external_deps = [
- "gflags",
+ "absl/flags:flag",
"gtest",
],
deps = [
srcs = ["proto_server_reflection_test.cc"],
external_deps = [
"gtest",
- "gflags",
],
deps = [
":test_service_impl",
testonly = True,
srcs = ["server_crash_test_client.cc"],
external_deps = [
- "gflags",
+ "absl/flags:flag",
"gtest",
],
deps = [
"//test/cpp/util:test_util",
],
)
+
+grpc_cc_test(
+ name = "xds_credentials_end2end_test",
+ srcs = ["xds_credentials_end2end_test.cc"],
+ external_deps = [
+ "gtest",
+ ],
+ deps = [
+ ":test_service_impl",
+ "//:gpr",
+ "//:grpc",
+ "//:grpc++",
+ "//src/proto/grpc/testing:echo_messages_proto",
+ "//src/proto/grpc/testing:echo_proto",
+ "//test/core/util:grpc_test_util",
+ "//test/cpp/util:test_util",
+ ],
+)
#include <grpcpp/server_builder.h>
#include <grpcpp/server_context.h>
+#include "absl/memory/memory.h"
+
#include "src/core/ext/filters/client_channel/backup_poller.h"
#include "src/core/lib/gpr/tls.h"
#include "src/core/lib/iomgr/port.h"
using grpc::testing::EchoRequest;
using grpc::testing::EchoResponse;
-using grpc::testing::kTlsCredentialsType;
using std::chrono::system_clock;
namespace grpc {
void* ignored_tag;
bool ignored_ok;
cq_->Shutdown();
- while (cq_->Next(&ignored_tag, &ignored_ok))
- ;
+ while (cq_->Next(&ignored_tag, &ignored_ok)) {
+ }
stub_.reset();
grpc_recycle_unused_port(port_);
}
auto server_creds = GetCredentialsProvider()->GetServerCredentials(
GetParam().credentials_type);
builder.AddListeningPort(server_address_.str(), server_creds);
- service_.reset(new grpc::testing::EchoTestService::AsyncService());
+ service_ =
+ absl::make_unique<grpc::testing::EchoTestService::AsyncService>();
builder.RegisterService(service_.get());
if (GetParam().health_check_service) {
builder.RegisterService(&health_check_);
void* ignored_tag;
bool ignored_ok;
cq_->Shutdown();
- while (cq_->Next(&ignored_tag, &ignored_ok))
- ;
+ while (cq_->Next(&ignored_tag, &ignored_ok)) {
+ }
BuildAndStartServer();
// It needs more than GRPC_CLIENT_CHANNEL_BACKUP_POLL_INTERVAL_MS time to
// reconnect the channel.
#include <grpcpp/channel.h>
#include <grpcpp/client_context.h>
#include <grpcpp/create_channel.h>
+#include <grpcpp/ext/channelz_service_plugin.h>
#include <grpcpp/security/credentials.h>
#include <grpcpp/security/server_credentials.h>
#include <grpcpp/server.h>
#include <grpcpp/server_builder.h>
#include <grpcpp/server_context.h>
-#include <grpcpp/ext/channelz_service_plugin.h>
+#include "absl/memory/memory.h"
+
#include "src/core/lib/gpr/env.h"
#include "src/proto/grpc/channelz/channelz.grpc.pb.h"
#include "src/proto/grpc/testing/echo.grpc.pb.h"
"localhost:" + to_string(backends_[i].port);
backend_builder.AddListeningPort(backend_server_address,
InsecureServerCredentials());
- backends_[i].service.reset(new TestServiceImpl);
+ backends_[i].service = absl::make_unique<TestServiceImpl>();
// ensure that the backend itself has channelz disabled.
backend_builder.AddChannelArgument(GRPC_ARG_ENABLE_CHANNELZ, 0);
backend_builder.RegisterService(backends_[i].service.get());
#include <sstream>
#include <thread>
+#include "absl/memory/memory.h"
#include "src/core/lib/gpr/env.h"
#include "src/core/lib/iomgr/iomgr.h"
#include "src/proto/grpc/testing/echo.grpc.pb.h"
// Add 20 dummy server interceptors
creators.reserve(20);
for (auto i = 0; i < 20; i++) {
- creators.push_back(std::unique_ptr<DummyInterceptorFactory>(
- new DummyInterceptorFactory()));
+ creators.push_back(absl::make_unique<DummyInterceptorFactory>());
}
builder.experimental().SetInterceptorCreators(std::move(creators));
}
assert(false);
}
stub_ = grpc::testing::EchoTestService::NewStub(channel_);
- generic_stub_.reset(new GenericStub(channel_));
+ generic_stub_ = absl::make_unique<GenericStub>(channel_);
DummyInterceptor::Reset();
}
: reuses_remaining_(reuses), do_writes_done_(do_writes_done) {
activate_ = [this, test, method_name, test_str] {
if (reuses_remaining_ > 0) {
- cli_ctx_.reset(new ClientContext);
+ cli_ctx_ = absl::make_unique<ClientContext>();
reuses_remaining_--;
test->generic_stub_->experimental().PrepareBidiStreamingCall(
cli_ctx_.get(), method_name, this);
#include <grpcpp/server_builder.h>
#include <grpcpp/server_context.h>
+#include "absl/memory/memory.h"
+
#include "src/proto/grpc/testing/duplicate/echo_duplicate.grpc.pb.h"
#include "src/proto/grpc/testing/echo.grpc.pb.h"
#include "test/core/util/port.h"
using grpc::testing::EchoRequest;
using grpc::testing::EchoResponse;
-using std::chrono::system_clock;
static std::string g_root;
std::ostringstream addr_stream;
addr_stream << "localhost:" << port;
auto addr = addr_stream.str();
- server_.reset(new SubProcess({
+ server_ = absl::make_unique<SubProcess>(std::vector<std::string>({
g_root + "/client_crash_test_server",
"--address=" + addr,
}));
*
*/
-#include <gflags/gflags.h>
-#include <iostream>
-#include <memory>
-#include <string>
-
#include <grpc/support/log.h>
#include <grpcpp/server.h>
#include <grpcpp/server_builder.h>
#include <grpcpp/server_context.h>
+#include <iostream>
+#include <memory>
+#include <string>
+
+#include "absl/flags/flag.h"
#include "src/proto/grpc/testing/echo.grpc.pb.h"
#include "test/cpp/util/test_config.h"
-DEFINE_string(address, "", "Address to bind to");
+ABSL_FLAG(std::string, address, "", "Address to bind to");
using grpc::testing::EchoRequest;
using grpc::testing::EchoResponse;
-// In some distros, gflags is in the namespace google, and in some others,
-// in gflags. This hack is enabling us to find both.
-namespace google {}
-namespace gflags {}
-using namespace google;
-using namespace gflags;
-
namespace grpc {
namespace testing {
ServiceImpl service;
ServerBuilder builder;
- builder.AddListeningPort(FLAGS_address, grpc::InsecureServerCredentials());
+ builder.AddListeningPort(absl::GetFlag(FLAGS_address),
+ grpc::InsecureServerCredentials());
builder.RegisterService(&service);
std::unique_ptr<Server> server(builder.BuildAndStart());
- std::cout << "Server listening on " << FLAGS_address << std::endl;
+ std::cout << "Server listening on " << absl::GetFlag(FLAGS_address)
+ << std::endl;
server->Wait();
}
} // namespace testing
#include <memory>
#include <vector>
+#include "absl/memory/memory.h"
+
#include <grpcpp/channel.h>
#include <grpcpp/client_context.h>
#include <grpcpp/create_channel.h>
+#include <grpcpp/create_channel_posix.h>
#include <grpcpp/generic/generic_stub.h>
#include <grpcpp/impl/codegen/proto_utils.h>
#include <grpcpp/server.h>
#include <grpcpp/server_builder.h>
#include <grpcpp/server_context.h>
+#include <grpcpp/server_posix.h>
#include <grpcpp/support/client_interceptor.h>
+#include "src/core/lib/iomgr/port.h"
#include "src/proto/grpc/testing/echo.grpc.pb.h"
#include "test/core/util/port.h"
#include "test/core/util/test_config.h"
#include "test/cpp/util/byte_buffer_proto_helper.h"
#include "test/cpp/util/string_ref_helper.h"
+#ifdef GRPC_POSIX_SOCKET
+#include <fcntl.h>
+#include "src/core/lib/iomgr/socket_utils_posix.h"
+#endif /* GRPC_POSIX_SOCKET */
+
#include <gtest/gtest.h>
namespace grpc {
kAsyncCQBidiStreaming,
};
+enum class ChannelType {
+ kHttpChannel,
+ kFdChannel,
+};
+
/* Hijacks Echo RPC and fills in the expected values */
class HijackingInterceptor : public experimental::Interceptor {
public:
EXPECT_EQ(info->type(), experimental::ClientRpcInfo::Type::UNARY);
}
- virtual void Intercept(experimental::InterceptorBatchMethods* methods) {
+ void Intercept(experimental::InterceptorBatchMethods* methods) override {
bool hijack = false;
if (methods->QueryInterceptionHookPoint(
experimental::InterceptionHookPoints::PRE_SEND_INITIAL_METADATA)) {
class HijackingInterceptorFactory
: public experimental::ClientInterceptorFactoryInterface {
public:
- virtual experimental::Interceptor* CreateClientInterceptor(
+ experimental::Interceptor* CreateClientInterceptor(
experimental::ClientRpcInfo* info) override {
return new HijackingInterceptor(info);
}
EXPECT_EQ(strcmp("/grpc.testing.EchoTestService/Echo", info->method()), 0);
}
- virtual void Intercept(experimental::InterceptorBatchMethods* methods) {
+ void Intercept(experimental::InterceptorBatchMethods* methods) override {
if (methods->QueryInterceptionHookPoint(
experimental::InterceptionHookPoints::PRE_SEND_INITIAL_METADATA)) {
auto* map = methods->GetSendInitialMetadata();
class HijackingInterceptorMakesAnotherCallFactory
: public experimental::ClientInterceptorFactoryInterface {
public:
- virtual experimental::Interceptor* CreateClientInterceptor(
+ experimental::Interceptor* CreateClientInterceptor(
experimental::ClientRpcInfo* info) override {
return new HijackingInterceptorMakesAnotherCall(info);
}
info_ = info;
}
- virtual void Intercept(experimental::InterceptorBatchMethods* methods) {
+ void Intercept(experimental::InterceptorBatchMethods* methods) override {
bool hijack = false;
if (methods->QueryInterceptionHookPoint(
experimental::InterceptionHookPoints::PRE_SEND_INITIAL_METADATA)) {
ClientStreamingRpcHijackingInterceptor(experimental::ClientRpcInfo* info) {
info_ = info;
}
- virtual void Intercept(experimental::InterceptorBatchMethods* methods) {
+ void Intercept(experimental::InterceptorBatchMethods* methods) override {
bool hijack = false;
if (methods->QueryInterceptionHookPoint(
experimental::InterceptionHookPoints::PRE_SEND_INITIAL_METADATA)) {
class ClientStreamingRpcHijackingInterceptorFactory
: public experimental::ClientInterceptorFactoryInterface {
public:
- virtual experimental::Interceptor* CreateClientInterceptor(
+ experimental::Interceptor* CreateClientInterceptor(
experimental::ClientRpcInfo* info) override {
return new ClientStreamingRpcHijackingInterceptor(info);
}
got_failed_message_ = false;
}
- virtual void Intercept(experimental::InterceptorBatchMethods* methods) {
+ void Intercept(experimental::InterceptorBatchMethods* methods) override {
bool hijack = false;
if (methods->QueryInterceptionHookPoint(
experimental::InterceptionHookPoints::PRE_SEND_INITIAL_METADATA)) {
class ServerStreamingRpcHijackingInterceptorFactory
: public experimental::ClientInterceptorFactoryInterface {
public:
- virtual experimental::Interceptor* CreateClientInterceptor(
+ experimental::Interceptor* CreateClientInterceptor(
experimental::ClientRpcInfo* info) override {
return new ServerStreamingRpcHijackingInterceptor(info);
}
class BidiStreamingRpcHijackingInterceptorFactory
: public experimental::ClientInterceptorFactoryInterface {
public:
- virtual experimental::Interceptor* CreateClientInterceptor(
+ experimental::Interceptor* CreateClientInterceptor(
experimental::ClientRpcInfo* info) override {
return new BidiStreamingRpcHijackingInterceptor(info);
}
post_recv_status_ = false;
}
- virtual void Intercept(experimental::InterceptorBatchMethods* methods) {
+ void Intercept(experimental::InterceptorBatchMethods* methods) override {
if (methods->QueryInterceptionHookPoint(
experimental::InterceptionHookPoints::PRE_SEND_INITIAL_METADATA)) {
auto* map = methods->GetSendInitialMetadata();
class LoggingInterceptorFactory
: public experimental::ClientInterceptorFactoryInterface {
public:
- virtual experimental::Interceptor* CreateClientInterceptor(
+ experimental::Interceptor* CreateClientInterceptor(
experimental::ClientRpcInfo* info) override {
return new LoggingInterceptor(info);
}
class TestScenario {
public:
- explicit TestScenario(const RPCType& type) : type_(type) {}
+ explicit TestScenario(const ChannelType& channel_type,
+ const RPCType& rpc_type)
+ : channel_type_(channel_type), rpc_type_(rpc_type) {}
+
+ ChannelType channel_type() const { return channel_type_; }
- RPCType type() const { return type_; }
+ RPCType rpc_type() const { return rpc_type_; }
private:
- RPCType type_;
+ const ChannelType channel_type_;
+ const RPCType rpc_type_;
};
std::vector<TestScenario> CreateTestScenarios() {
std::vector<TestScenario> scenarios;
- scenarios.emplace_back(RPCType::kSyncUnary);
- scenarios.emplace_back(RPCType::kSyncClientStreaming);
- scenarios.emplace_back(RPCType::kSyncServerStreaming);
- scenarios.emplace_back(RPCType::kSyncBidiStreaming);
- scenarios.emplace_back(RPCType::kAsyncCQUnary);
- scenarios.emplace_back(RPCType::kAsyncCQServerStreaming);
+ std::vector<RPCType> rpc_types;
+ rpc_types.emplace_back(RPCType::kSyncUnary);
+ rpc_types.emplace_back(RPCType::kSyncClientStreaming);
+ rpc_types.emplace_back(RPCType::kSyncServerStreaming);
+ rpc_types.emplace_back(RPCType::kSyncBidiStreaming);
+ rpc_types.emplace_back(RPCType::kAsyncCQUnary);
+ rpc_types.emplace_back(RPCType::kAsyncCQServerStreaming);
+ for (const auto& rpc_type : rpc_types) {
+ scenarios.emplace_back(ChannelType::kHttpChannel, rpc_type);
+// TODO(yashykt): Maybe add support for non-posix sockets too
+#ifdef GRPC_POSIX_SOCKET
+ scenarios.emplace_back(ChannelType::kFdChannel, rpc_type);
+#endif /* GRPC_POSIX_SOCKET */
+ }
return scenarios;
}
: public ::testing::TestWithParam<TestScenario> {
protected:
ParameterizedClientInterceptorsEnd2endTest() {
- int port = grpc_pick_unused_port_or_die();
-
ServerBuilder builder;
- server_address_ = "localhost:" + std::to_string(port);
- builder.AddListeningPort(server_address_, InsecureServerCredentials());
builder.RegisterService(&service_);
- server_ = builder.BuildAndStart();
+ if (GetParam().channel_type() == ChannelType::kHttpChannel) {
+ int port = grpc_pick_unused_port_or_die();
+ server_address_ = "localhost:" + std::to_string(port);
+ builder.AddListeningPort(server_address_, InsecureServerCredentials());
+ server_ = builder.BuildAndStart();
+ }
+#ifdef GRPC_POSIX_SOCKET
+ else if (GetParam().channel_type() == ChannelType::kFdChannel) {
+ int flags;
+ GPR_ASSERT(socketpair(AF_UNIX, SOCK_STREAM, 0, sv_) == 0);
+ flags = fcntl(sv_[0], F_GETFL, 0);
+ GPR_ASSERT(fcntl(sv_[0], F_SETFL, flags | O_NONBLOCK) == 0);
+ flags = fcntl(sv_[1], F_GETFL, 0);
+ GPR_ASSERT(fcntl(sv_[1], F_SETFL, flags | O_NONBLOCK) == 0);
+ GPR_ASSERT(grpc_set_socket_no_sigpipe_if_possible(sv_[0]) ==
+ GRPC_ERROR_NONE);
+ GPR_ASSERT(grpc_set_socket_no_sigpipe_if_possible(sv_[1]) ==
+ GRPC_ERROR_NONE);
+ server_ = builder.BuildAndStart();
+ AddInsecureChannelFromFd(server_.get(), sv_[1]);
+ }
+#endif /* GRPC_POSIX_SOCKET */
+ }
+
+ ~ParameterizedClientInterceptorsEnd2endTest() override {
+ server_->Shutdown();
}
- ~ParameterizedClientInterceptorsEnd2endTest() { server_->Shutdown(); }
+ std::shared_ptr<grpc::Channel> CreateClientChannel(
+ std::vector<std::unique_ptr<
+ grpc::experimental::ClientInterceptorFactoryInterface>>
+ creators) {
+ if (GetParam().channel_type() == ChannelType::kHttpChannel) {
+ return experimental::CreateCustomChannelWithInterceptors(
+ server_address_, InsecureChannelCredentials(), ChannelArguments(),
+ std::move(creators));
+ }
+#ifdef GRPC_POSIX_SOCKET
+ else if (GetParam().channel_type() == ChannelType::kFdChannel) {
+ return experimental::CreateCustomInsecureChannelWithInterceptorsFromFd(
+ "", sv_[0], ChannelArguments(), std::move(creators));
+ }
+#endif /* GRPC_POSIX_SOCKET */
+ return nullptr;
+ }
void SendRPC(const std::shared_ptr<Channel>& channel) {
- switch (GetParam().type()) {
+ switch (GetParam().rpc_type()) {
case RPCType::kSyncUnary:
MakeCall(channel);
break;
}
std::string server_address_;
+ int sv_[2];
EchoTestServiceStreamingImpl service_;
std::unique_ptr<Server> server_;
};
DummyInterceptor::Reset();
std::vector<std::unique_ptr<experimental::ClientInterceptorFactoryInterface>>
creators;
- creators.push_back(std::unique_ptr<LoggingInterceptorFactory>(
- new LoggingInterceptorFactory()));
+ creators.push_back(absl::make_unique<LoggingInterceptorFactory>());
// Add 20 dummy interceptors
for (auto i = 0; i < 20; i++) {
- creators.push_back(std::unique_ptr<DummyInterceptorFactory>(
- new DummyInterceptorFactory()));
+ creators.push_back(absl::make_unique<DummyInterceptorFactory>());
}
- auto channel = experimental::CreateCustomChannelWithInterceptors(
- server_address_, InsecureChannelCredentials(), args, std::move(creators));
+ auto channel = CreateClientChannel(std::move(creators));
SendRPC(channel);
- LoggingInterceptor::VerifyCall(GetParam().type());
+ LoggingInterceptor::VerifyCall(GetParam().rpc_type());
// Make sure all 20 dummy interceptors were run
EXPECT_EQ(DummyInterceptor::GetNumTimesRun(), 20);
}
server_ = builder.BuildAndStart();
}
- ~ClientInterceptorsEnd2endTest() { server_->Shutdown(); }
+ ~ClientInterceptorsEnd2endTest() override { server_->Shutdown(); }
std::string server_address_;
TestServiceImpl service_;
ChannelArguments args;
std::vector<std::unique_ptr<experimental::ClientInterceptorFactoryInterface>>
creators;
- creators.push_back(std::unique_ptr<HijackingInterceptorFactory>(
- new HijackingInterceptorFactory()));
+ creators.push_back(absl::make_unique<HijackingInterceptorFactory>());
auto channel = experimental::CreateCustomChannelWithInterceptors(
server_address_, nullptr, args, std::move(creators));
MakeCall(channel);
// Add 20 dummy interceptors before hijacking interceptor
creators.reserve(20);
for (auto i = 0; i < 20; i++) {
- creators.push_back(std::unique_ptr<DummyInterceptorFactory>(
- new DummyInterceptorFactory()));
+ creators.push_back(absl::make_unique<DummyInterceptorFactory>());
}
- creators.push_back(std::unique_ptr<HijackingInterceptorFactory>(
- new HijackingInterceptorFactory()));
+ creators.push_back(absl::make_unique<HijackingInterceptorFactory>());
// Add 20 dummy interceptors after hijacking interceptor
for (auto i = 0; i < 20; i++) {
- creators.push_back(std::unique_ptr<DummyInterceptorFactory>(
- new DummyInterceptorFactory()));
+ creators.push_back(absl::make_unique<DummyInterceptorFactory>());
}
auto channel = experimental::CreateCustomChannelWithInterceptors(
server_address_, InsecureChannelCredentials(), args, std::move(creators));
ChannelArguments args;
std::vector<std::unique_ptr<experimental::ClientInterceptorFactoryInterface>>
creators;
- creators.push_back(std::unique_ptr<LoggingInterceptorFactory>(
- new LoggingInterceptorFactory()));
- creators.push_back(std::unique_ptr<HijackingInterceptorFactory>(
- new HijackingInterceptorFactory()));
+ creators.push_back(absl::make_unique<LoggingInterceptorFactory>());
+ creators.push_back(absl::make_unique<HijackingInterceptorFactory>());
auto channel = experimental::CreateCustomChannelWithInterceptors(
server_address_, InsecureChannelCredentials(), args, std::move(creators));
MakeCall(channel);
// Add 5 dummy interceptors before hijacking interceptor
creators.reserve(5);
for (auto i = 0; i < 5; i++) {
- creators.push_back(std::unique_ptr<DummyInterceptorFactory>(
- new DummyInterceptorFactory()));
+ creators.push_back(absl::make_unique<DummyInterceptorFactory>());
}
creators.push_back(
std::unique_ptr<experimental::ClientInterceptorFactoryInterface>(
new HijackingInterceptorMakesAnotherCallFactory()));
// Add 7 dummy interceptors after hijacking interceptor
for (auto i = 0; i < 7; i++) {
- creators.push_back(std::unique_ptr<DummyInterceptorFactory>(
- new DummyInterceptorFactory()));
+ creators.push_back(absl::make_unique<DummyInterceptorFactory>());
}
auto channel = server_->experimental().InProcessChannelWithInterceptors(
args, std::move(creators));
server_ = builder.BuildAndStart();
}
- ~ClientInterceptorsCallbackEnd2endTest() { server_->Shutdown(); }
+ ~ClientInterceptorsCallbackEnd2endTest() override { server_->Shutdown(); }
std::string server_address_;
TestServiceImpl service_;
DummyInterceptor::Reset();
std::vector<std::unique_ptr<experimental::ClientInterceptorFactoryInterface>>
creators;
- creators.push_back(std::unique_ptr<LoggingInterceptorFactory>(
- new LoggingInterceptorFactory()));
+ creators.push_back(absl::make_unique<LoggingInterceptorFactory>());
// Add 20 dummy interceptors
for (auto i = 0; i < 20; i++) {
- creators.push_back(std::unique_ptr<DummyInterceptorFactory>(
- new DummyInterceptorFactory()));
+ creators.push_back(absl::make_unique<DummyInterceptorFactory>());
}
auto channel = server_->experimental().InProcessChannelWithInterceptors(
args, std::move(creators));
DummyInterceptor::Reset();
std::vector<std::unique_ptr<experimental::ClientInterceptorFactoryInterface>>
creators;
- creators.push_back(std::unique_ptr<LoggingInterceptorFactory>(
- new LoggingInterceptorFactory()));
+ creators.push_back(absl::make_unique<LoggingInterceptorFactory>());
// Add 20 dummy interceptors and 20 null interceptors
for (auto i = 0; i < 20; i++) {
- creators.push_back(std::unique_ptr<DummyInterceptorFactory>(
- new DummyInterceptorFactory()));
- creators.push_back(
- std::unique_ptr<NullInterceptorFactory>(new NullInterceptorFactory()));
+ creators.push_back(absl::make_unique<DummyInterceptorFactory>());
+ creators.push_back(absl::make_unique<NullInterceptorFactory>());
}
auto channel = server_->experimental().InProcessChannelWithInterceptors(
args, std::move(creators));
server_ = builder.BuildAndStart();
}
- ~ClientInterceptorsStreamingEnd2endTest() { server_->Shutdown(); }
+ ~ClientInterceptorsStreamingEnd2endTest() override { server_->Shutdown(); }
std::string server_address_;
EchoTestServiceStreamingImpl service_;
DummyInterceptor::Reset();
std::vector<std::unique_ptr<experimental::ClientInterceptorFactoryInterface>>
creators;
- creators.push_back(std::unique_ptr<LoggingInterceptorFactory>(
- new LoggingInterceptorFactory()));
+ creators.push_back(absl::make_unique<LoggingInterceptorFactory>());
// Add 20 dummy interceptors
for (auto i = 0; i < 20; i++) {
- creators.push_back(std::unique_ptr<DummyInterceptorFactory>(
- new DummyInterceptorFactory()));
+ creators.push_back(absl::make_unique<DummyInterceptorFactory>());
}
auto channel = experimental::CreateCustomChannelWithInterceptors(
server_address_, InsecureChannelCredentials(), args, std::move(creators));
DummyInterceptor::Reset();
std::vector<std::unique_ptr<experimental::ClientInterceptorFactoryInterface>>
creators;
- creators.push_back(std::unique_ptr<LoggingInterceptorFactory>(
- new LoggingInterceptorFactory()));
+ creators.push_back(absl::make_unique<LoggingInterceptorFactory>());
// Add 20 dummy interceptors
for (auto i = 0; i < 20; i++) {
- creators.push_back(std::unique_ptr<DummyInterceptorFactory>(
- new DummyInterceptorFactory()));
+ creators.push_back(absl::make_unique<DummyInterceptorFactory>());
}
auto channel = experimental::CreateCustomChannelWithInterceptors(
server_address_, InsecureChannelCredentials(), args, std::move(creators));
std::vector<std::unique_ptr<experimental::ClientInterceptorFactoryInterface>>
creators;
creators.push_back(
- std::unique_ptr<ClientStreamingRpcHijackingInterceptorFactory>(
- new ClientStreamingRpcHijackingInterceptorFactory()));
+ absl::make_unique<ClientStreamingRpcHijackingInterceptorFactory>());
auto channel = experimental::CreateCustomChannelWithInterceptors(
server_address_, InsecureChannelCredentials(), args, std::move(creators));
std::vector<std::unique_ptr<experimental::ClientInterceptorFactoryInterface>>
creators;
creators.push_back(
- std::unique_ptr<ServerStreamingRpcHijackingInterceptorFactory>(
- new ServerStreamingRpcHijackingInterceptorFactory()));
+ absl::make_unique<ServerStreamingRpcHijackingInterceptorFactory>());
auto channel = experimental::CreateCustomChannelWithInterceptors(
server_address_, InsecureChannelCredentials(), args, std::move(creators));
MakeServerStreamingCall(channel);
std::vector<std::unique_ptr<experimental::ClientInterceptorFactoryInterface>>
creators;
creators.push_back(
- std::unique_ptr<ServerStreamingRpcHijackingInterceptorFactory>(
- new ServerStreamingRpcHijackingInterceptorFactory()));
+ absl::make_unique<ServerStreamingRpcHijackingInterceptorFactory>());
auto channel = experimental::CreateCustomChannelWithInterceptors(
server_address_, InsecureChannelCredentials(), args, std::move(creators));
MakeAsyncCQServerStreamingCall(channel);
std::vector<std::unique_ptr<experimental::ClientInterceptorFactoryInterface>>
creators;
creators.push_back(
- std::unique_ptr<BidiStreamingRpcHijackingInterceptorFactory>(
- new BidiStreamingRpcHijackingInterceptorFactory()));
+ absl::make_unique<BidiStreamingRpcHijackingInterceptorFactory>());
auto channel = experimental::CreateCustomChannelWithInterceptors(
server_address_, InsecureChannelCredentials(), args, std::move(creators));
MakeBidiStreamingCall(channel);
DummyInterceptor::Reset();
std::vector<std::unique_ptr<experimental::ClientInterceptorFactoryInterface>>
creators;
- creators.push_back(std::unique_ptr<LoggingInterceptorFactory>(
- new LoggingInterceptorFactory()));
+ creators.push_back(absl::make_unique<LoggingInterceptorFactory>());
// Add 20 dummy interceptors
for (auto i = 0; i < 20; i++) {
- creators.push_back(std::unique_ptr<DummyInterceptorFactory>(
- new DummyInterceptorFactory()));
+ creators.push_back(absl::make_unique<DummyInterceptorFactory>());
}
auto channel = experimental::CreateCustomChannelWithInterceptors(
server_address_, InsecureChannelCredentials(), args, std::move(creators));
server_ = builder.BuildAndStart();
}
- ~ClientGlobalInterceptorEnd2endTest() { server_->Shutdown(); }
+ ~ClientGlobalInterceptorEnd2endTest() override { server_->Shutdown(); }
std::string server_address_;
TestServiceImpl service_;
// Add 20 dummy interceptors
creators.reserve(20);
for (auto i = 0; i < 20; i++) {
- creators.push_back(std::unique_ptr<DummyInterceptorFactory>(
- new DummyInterceptorFactory()));
+ creators.push_back(absl::make_unique<DummyInterceptorFactory>());
}
auto channel = experimental::CreateCustomChannelWithInterceptors(
server_address_, InsecureChannelCredentials(), args, std::move(creators));
// Add 20 dummy interceptors
creators.reserve(20);
for (auto i = 0; i < 20; i++) {
- creators.push_back(std::unique_ptr<DummyInterceptorFactory>(
- new DummyInterceptorFactory()));
+ creators.push_back(absl::make_unique<DummyInterceptorFactory>());
}
auto channel = experimental::CreateCustomChannelWithInterceptors(
server_address_, InsecureChannelCredentials(), args, std::move(creators));
// Add 20 dummy interceptors
creators.reserve(20);
for (auto i = 0; i < 20; i++) {
- creators.push_back(std::unique_ptr<DummyInterceptorFactory>(
- new DummyInterceptorFactory()));
+ creators.push_back(absl::make_unique<DummyInterceptorFactory>());
}
auto channel = experimental::CreateCustomChannelWithInterceptors(
server_address_, InsecureChannelCredentials(), args, std::move(creators));
#include <string>
#include <thread>
+#include "absl/memory/memory.h"
#include "absl/strings/str_cat.h"
#include <grpc/grpc.h>
#include "src/proto/grpc/testing/echo.grpc.pb.h"
#include "src/proto/grpc/testing/xds/orca_load_report_for_test.pb.h"
#include "test/core/util/port.h"
+#include "test/core/util/resolve_localhost_ip46.h"
#include "test/core/util/test_config.h"
#include "test/core/util/test_lb_policies.h"
#include "test/cpp/end2end/test_service_impl.h"
using grpc::testing::EchoRequest;
using grpc::testing::EchoResponse;
-using std::chrono::system_clock;
// defined in tcp_client.cc
extern grpc_tcp_client_vtable* grpc_tcp_client_impl;
class FakeResolverResponseGeneratorWrapper {
public:
- FakeResolverResponseGeneratorWrapper()
- : response_generator_(grpc_core::MakeRefCounted<
+ explicit FakeResolverResponseGeneratorWrapper(bool ipv6_only)
+ : ipv6_only_(ipv6_only),
+ response_generator_(grpc_core::MakeRefCounted<
grpc_core::FakeResolverResponseGenerator>()) {}
FakeResolverResponseGeneratorWrapper(
FakeResolverResponseGeneratorWrapper&& other) noexcept {
+ ipv6_only_ = other.ipv6_only_;
response_generator_ = std::move(other.response_generator_);
}
std::unique_ptr<grpc_core::ServerAddress::AttributeInterface> attribute =
nullptr) {
grpc_core::ExecCtx exec_ctx;
- response_generator_->SetResponse(BuildFakeResults(
- ports, service_config_json, attribute_key, std::move(attribute)));
+ response_generator_->SetResponse(
+ BuildFakeResults(ipv6_only_, ports, service_config_json, attribute_key,
+ std::move(attribute)));
}
void SetNextResolutionUponError(const std::vector<int>& ports) {
grpc_core::ExecCtx exec_ctx;
- response_generator_->SetReresolutionResponse(BuildFakeResults(ports));
+ response_generator_->SetReresolutionResponse(
+ BuildFakeResults(ipv6_only_, ports));
}
void SetFailureOnReresolution() {
private:
static grpc_core::Resolver::Result BuildFakeResults(
- const std::vector<int>& ports, const char* service_config_json = nullptr,
+ bool ipv6_only, const std::vector<int>& ports,
+ const char* service_config_json = nullptr,
const char* attribute_key = nullptr,
std::unique_ptr<grpc_core::ServerAddress::AttributeInterface> attribute =
nullptr) {
grpc_core::Resolver::Result result;
for (const int& port : ports) {
- std::string lb_uri_str = absl::StrCat("ipv4:127.0.0.1:", port);
+ std::string lb_uri_str =
+ absl::StrCat(ipv6_only ? "ipv6:[::1]:" : "ipv4:127.0.0.1:", port);
grpc_uri* lb_uri = grpc_uri_parse(lb_uri_str.c_str(), true);
GPR_ASSERT(lb_uri != nullptr);
grpc_resolved_address address;
return result;
}
+ bool ipv6_only_ = false;
grpc_core::RefCountedPtr<grpc_core::FakeResolverResponseGenerator>
response_generator_;
};
#endif
}
- void SetUp() override { grpc_init(); }
+ void SetUp() override {
+ grpc_init();
+ bool localhost_resolves_to_ipv4 = false;
+ bool localhost_resolves_to_ipv6 = false;
+ grpc_core::LocalhostResolves(&localhost_resolves_to_ipv4,
+ &localhost_resolves_to_ipv6);
+ ipv6_only_ = !localhost_resolves_to_ipv4 && localhost_resolves_to_ipv6;
+ }
void TearDown() override {
for (size_t i = 0; i < servers_.size(); ++i) {
}
servers_.clear();
creds_.reset();
- grpc_shutdown_blocking();
+ grpc_shutdown();
}
void CreateServers(size_t num_servers,
}
FakeResolverResponseGeneratorWrapper BuildResolverResponseGenerator() {
- return FakeResolverResponseGeneratorWrapper();
+ return FakeResolverResponseGeneratorWrapper(ipv6_only_);
}
std::unique_ptr<grpc::testing::EchoTestService::Stub> BuildStub(
const std::string& lb_policy_name,
const FakeResolverResponseGeneratorWrapper& response_generator,
ChannelArguments args = ChannelArguments()) {
- if (lb_policy_name.size() > 0) {
+ if (!lb_policy_name.empty()) {
args.SetLoadBalancingPolicyName(lb_policy_name);
} // else, default to pick first
args.SetPointer(GRPC_ARG_FAKE_RESOLVER_RESPONSE_GENERATOR,
grpc::internal::Mutex mu;
grpc::internal::MutexLock lock(&mu);
grpc::internal::CondVar cond;
- thread_.reset(new std::thread(
- std::bind(&ServerData::Serve, this, server_host, &mu, &cond)));
+ thread_ = absl::make_unique<std::thread>(
+ std::bind(&ServerData::Serve, this, server_host, &mu, &cond));
cond.WaitUntil(&mu, [this] { return server_ready_; });
server_ready_ = false;
gpr_log(GPR_INFO, "server startup complete");
}
bool WaitForChannelState(
- Channel* channel, std::function<bool(grpc_connectivity_state)> predicate,
+ Channel* channel,
+ const std::function<bool(grpc_connectivity_state)>& predicate,
bool try_to_connect = false, int timeout_seconds = 5) {
const gpr_timespec deadline =
grpc_timeout_seconds_to_deadline(timeout_seconds);
std::vector<std::unique_ptr<ServerData>> servers_;
const std::string kRequestMessage_;
std::shared_ptr<ChannelCredentials> creds_;
+ bool ipv6_only_ = false;
};
TEST_F(ClientLbEnd2endTest, ChannelStateConnectingWhenResolving) {
grpc_core::RegisterTestPickArgsLoadBalancingPolicy(SavePickArgs);
}
- static void TearDownTestCase() { grpc_shutdown_blocking(); }
+ static void TearDownTestCase() { grpc_shutdown(); }
const std::vector<grpc_core::PickArgsSeen>& args_seen_list() {
grpc::internal::MutexLock lock(&mu_);
ReportTrailerIntercepted);
}
- static void TearDownTestCase() { grpc_shutdown_blocking(); }
+ static void TearDownTestCase() { grpc_shutdown(); }
int trailers_intercepted() {
grpc::internal::MutexLock lock(&mu_);
self->trailers_intercepted_++;
self->trailing_metadata_ = args_seen.metadata;
if (backend_metric_data != nullptr) {
- self->load_report_.reset(new udpa::data::orca::v1::OrcaLoadReport);
+ self->load_report_ =
+ absl::make_unique<udpa::data::orca::v1::OrcaLoadReport>();
self->load_report_->set_cpu_utilization(
backend_metric_data->cpu_utilization);
self->load_report_->set_mem_utilization(
self->load_report_->set_rps(backend_metric_data->requests_per_second);
for (const auto& p : backend_metric_data->request_cost) {
std::string name = std::string(p.first);
- (*self->load_report_->mutable_request_cost())[std::move(name)] =
- p.second;
+ (*self->load_report_->mutable_request_cost())[name] = p.second;
}
for (const auto& p : backend_metric_data->utilization) {
std::string name = std::string(p.first);
- (*self->load_report_->mutable_utilization())[std::move(name)] =
- p.second;
+ (*self->load_report_->mutable_utilization())[name] = p.second;
}
}
}
grpc_core::RegisterAddressTestLoadBalancingPolicy(SaveAddress);
}
- static void TearDownTestCase() { grpc_shutdown_blocking(); }
+ static void TearDownTestCase() { grpc_shutdown(); }
const std::vector<std::string>& addresses_seen() {
grpc::internal::MutexLock lock(&mu_);
// Make sure that the attributes wind up on the subchannels.
std::vector<std::string> expected;
for (const int port : GetServersPorts()) {
- expected.emplace_back(absl::StrCat(
- "127.0.0.1:", port, " args={} attributes={", kAttributeKey, "=foo}"));
+ expected.emplace_back(
+ absl::StrCat(ipv6_only_ ? "[::1]:" : "127.0.0.1:", port,
+ " args={} attributes={", kAttributeKey, "=foo}"));
}
EXPECT_EQ(addresses_seen(), expected);
}
server_ = builder.BuildAndStart();
}
- ~DelegatingChannelTest() { server_->Shutdown(); }
+ ~DelegatingChannelTest() override { server_->Shutdown(); }
std::string server_address_;
TestServiceImpl service_;
#include <mutex>
#include <thread>
+#include "absl/memory/memory.h"
#include "absl/strings/str_format.h"
+
#include "src/core/ext/filters/client_channel/backup_poller.h"
#include "src/core/lib/gpr/env.h"
#include "src/core/lib/iomgr/iomgr.h"
void StartServer(const std::shared_ptr<AuthMetadataProcessor>& processor) {
int port = grpc_pick_unused_port_or_die();
first_picked_port_ = port;
- server_address_ << "127.0.0.1:" << port;
+ server_address_ << "localhost:" << port;
// Setup server
BuildAndStartServer(processor);
}
// Add 20 dummy server interceptors
creators.reserve(20);
for (auto i = 0; i < 20; i++) {
- creators.push_back(std::unique_ptr<DummyInterceptorFactory>(
- new DummyInterceptorFactory()));
+ creators.push_back(absl::make_unique<DummyInterceptorFactory>());
}
builder.experimental().SetInterceptorCreators(std::move(creators));
}
interceptor_creators = {}) {
ResetChannel(std::move(interceptor_creators));
if (GetParam().use_proxy) {
- proxy_service_.reset(new Proxy(channel_));
+ proxy_service_ = absl::make_unique<Proxy>(channel_);
int port = grpc_pick_unused_port_or_die();
std::ostringstream proxyaddr;
proxyaddr << "localhost:" << port;
}
int port = grpc_pick_unused_port_or_die();
std::ostringstream server_address;
- server_address << "127.0.0.1:" << port;
+ server_address << "localhost:" << port;
// Channel to non-existing server
auto channel =
grpc::CreateChannel(server_address.str(), InsecureChannelCredentials());
public:
CredentialsInterceptor(experimental::ClientRpcInfo* info) : info_(info) {}
- void Intercept(experimental::InterceptorBatchMethods* methods) {
+ void Intercept(experimental::InterceptorBatchMethods* methods) override {
if (methods->QueryInterceptionHookPoint(
experimental::InterceptionHookPoints::PRE_SEND_INITIAL_METADATA)) {
std::shared_ptr<CallCredentials> creds =
class CredentialsInterceptorFactory
: public experimental::ClientInterceptorFactoryInterface {
CredentialsInterceptor* CreateClientInterceptor(
- experimental::ClientRpcInfo* info) {
+ experimental::ClientRpcInfo* info) override {
return new CredentialsInterceptor(info);
}
};
}
std::vector<std::unique_ptr<experimental::ClientInterceptorFactoryInterface>>
interceptor_creators;
- interceptor_creators.push_back(std::unique_ptr<CredentialsInterceptorFactory>(
- new CredentialsInterceptorFactory()));
+ interceptor_creators.push_back(
+ absl::make_unique<CredentialsInterceptorFactory>());
ResetStub(std::move(interceptor_creators));
EchoRequest request;
EchoResponse response;
}
std::vector<std::unique_ptr<experimental::ClientInterceptorFactoryInterface>>
interceptor_creators;
- interceptor_creators.push_back(std::unique_ptr<CredentialsInterceptorFactory>(
- new CredentialsInterceptorFactory()));
+ interceptor_creators.push_back(
+ absl::make_unique<CredentialsInterceptorFactory>());
ResetStub(std::move(interceptor_creators));
EchoRequest request;
EchoResponse response;
ResourceQuotaEnd2endTest()
: server_resource_quota_("server_resource_quota") {}
- virtual void ConfigureServerBuilder(ServerBuilder* builder) override {
+ void ConfigureServerBuilder(ServerBuilder* builder) override {
builder->SetResourceQuota(server_resource_quota_);
}
#include <grpcpp/support/config.h>
#include <grpcpp/support/slice.h>
+#include "absl/memory/memory.h"
+
#include "src/cpp/common/channel_filter.h"
#include "src/proto/grpc/testing/echo.grpc.pb.h"
#include "test/core/util/port.h"
using grpc::testing::EchoRequest;
using grpc::testing::EchoResponse;
-using std::chrono::system_clock;
namespace grpc {
namespace testing {
class ChannelDataImpl : public ChannelData {
public:
grpc_error* Init(grpc_channel_element* /*elem*/,
- grpc_channel_element_args* /*args*/) {
+ grpc_channel_element_args* /*args*/) override {
IncrementConnectionCounter();
return GRPC_ERROR_NONE;
}
bool ignored_ok;
cli_cq_.Shutdown();
srv_cq_->Shutdown();
- while (cli_cq_.Next(&ignored_tag, &ignored_ok))
- ;
- while (srv_cq_->Next(&ignored_tag, &ignored_ok))
- ;
+ while (cli_cq_.Next(&ignored_tag, &ignored_ok)) {
+ }
+ while (srv_cq_->Next(&ignored_tag, &ignored_ok)) {
+ }
}
void ResetStub() {
std::shared_ptr<Channel> channel = grpc::CreateChannel(
server_address_.str(), InsecureChannelCredentials());
- generic_stub_.reset(new GenericStub(channel));
+ generic_stub_ = absl::make_unique<GenericStub>(channel);
ResetConnectionCounter();
ResetCallCounter();
}
#include <random>
#include <thread>
+#include "absl/memory/memory.h"
+
#include "src/core/lib/backoff/backoff.h"
#include "src/core/lib/gpr/env.h"
#include "src/proto/grpc/testing/echo.grpc.pb.h"
// ip6-looopback, but ipv6 support is not enabled by default in docker.
port_ = SERVER_PORT;
- server_.reset(new ServerData(port_, GetParam().credentials_type));
+ server_ = absl::make_unique<ServerData>(port_, GetParam().credentials_type);
server_->Start(server_host_);
}
void StopServer() { server_->Shutdown(); }
std::shared_ptr<Channel> BuildChannel(
const std::string& lb_policy_name,
ChannelArguments args = ChannelArguments()) {
- if (lb_policy_name.size() > 0) {
+ if (!lb_policy_name.empty()) {
args.SetLoadBalancingPolicyName(lb_policy_name);
} // else, default to pick first
auto channel_creds = GetCredentialsProvider()->GetChannelCredentials(
bool SendRpc(
const std::unique_ptr<grpc::testing::EchoTestService::Stub>& stub,
int timeout_ms = 0, bool wait_for_ready = false) {
- auto response = std::unique_ptr<EchoResponse>(new EchoResponse());
+ auto response = absl::make_unique<EchoResponse>();
EchoRequest request;
auto& msg = GetParam().message_content;
request.set_message(msg);
std::mutex mu;
std::unique_lock<std::mutex> lock(mu);
std::condition_variable cond;
- thread_.reset(new std::thread(
- std::bind(&ServerData::Serve, this, server_host, &mu, &cond)));
+ thread_ = absl::make_unique<std::thread>(
+ std::bind(&ServerData::Serve, this, server_host, &mu, &cond));
cond.wait(lock, [this] { return server_ready_; });
server_ready_ = false;
gpr_log(GPR_INFO, "server startup complete");
#include <grpcpp/server_context.h>
#include <grpcpp/support/slice.h>
+#include "absl/memory/memory.h"
+
#include "src/proto/grpc/testing/echo.grpc.pb.h"
#include "test/core/util/port.h"
#include "test/core/util/test_config.h"
using grpc::testing::EchoRequest;
using grpc::testing::EchoResponse;
-using std::chrono::system_clock;
namespace grpc {
namespace testing {
bool ignored_ok;
cli_cq_.Shutdown();
srv_cq_->Shutdown();
- while (cli_cq_.Next(&ignored_tag, &ignored_ok))
- ;
- while (srv_cq_->Next(&ignored_tag, &ignored_ok))
- ;
+ while (cli_cq_.Next(&ignored_tag, &ignored_ok)) {
+ }
+ while (srv_cq_->Next(&ignored_tag, &ignored_ok)) {
+ }
shut_down_ = true;
}
}
std::shared_ptr<Channel> channel = grpc::CreateChannel(
server_address_.str(), InsecureChannelCredentials());
stub_ = grpc::testing::EchoTestService::NewStub(channel);
- generic_stub_.reset(new GenericStub(channel));
+ generic_stub_ = absl::make_unique<GenericStub>(channel);
}
void server_ok(int i) { verify_ok(srv_cq_.get(), i, true); }
SerializeToByteBuffer(&send_request);
std::thread request_call([this]() { server_ok(4); });
std::unique_ptr<GenericClientAsyncResponseReader> call =
- generic_stub_->PrepareUnaryCall(&cli_ctx, kMethodName,
- *cli_send_buffer.get(), &cli_cq_);
+ generic_stub_->PrepareUnaryCall(&cli_ctx, kMethodName, *cli_send_buffer,
+ &cli_cq_);
call->StartCall();
ByteBuffer cli_recv_buffer;
call->Finish(&cli_recv_buffer, &recv_status, tag(1));
#include "src/cpp/server/secure_server_credentials.h"
#include "test/core/util/port.h"
+#include "test/core/util/resolve_localhost_ip46.h"
#include "test/core/util/test_config.h"
#include "test/cpp/end2end/test_service_impl.h"
return std::string(reinterpret_cast<const char*>(&ip4), sizeof(ip4));
}
+std::string Ip6ToPackedString(const char* ip_str) {
+ struct in6_addr ip6;
+ GPR_ASSERT(inet_pton(AF_INET6, ip_str, &ip6) == 1);
+ return std::string(reinterpret_cast<const char*>(&ip6), sizeof(ip6));
+}
+
struct ClientStats {
size_t num_calls_started = 0;
size_t num_calls_finished = 0;
gpr_log(GPR_INFO, "LB[%p]: shut down", this);
}
- static LoadBalanceResponse BuildResponseForBackends(
- const std::vector<int>& backend_ports,
- const std::map<std::string, size_t>& drop_token_counts) {
- LoadBalanceResponse response;
- for (const auto& drop_token_count : drop_token_counts) {
- for (size_t i = 0; i < drop_token_count.second; ++i) {
- auto* server = response.mutable_server_list()->add_servers();
- server->set_drop(true);
- server->set_load_balance_token(drop_token_count.first);
- }
- }
- for (const int& backend_port : backend_ports) {
- auto* server = response.mutable_server_list()->add_servers();
- server->set_ip_address(Ip4ToPackedString("127.0.0.1"));
- server->set_port(backend_port);
- static int token_count = 0;
- server->set_load_balance_token(
- absl::StrFormat("token%03d", ++token_count));
- }
- return response;
- }
-
ClientStats WaitForLoadReport() {
grpc::internal::MutexLock lock(&mu_);
grpc::internal::CondVar cv;
static void TearDownTestCase() { grpc_shutdown(); }
void SetUp() override {
+ bool localhost_resolves_to_ipv4 = false;
+ bool localhost_resolves_to_ipv6 = false;
+ grpc_core::LocalhostResolves(&localhost_resolves_to_ipv4,
+ &localhost_resolves_to_ipv6);
+ ipv6_only_ = !localhost_resolves_to_ipv4 && localhost_resolves_to_ipv6;
response_generator_ =
grpc_core::MakeRefCounted<grpc_core::FakeResolverResponseGenerator>();
// Start the backends.
std::string balancer_name;
};
- static grpc_core::ServerAddressList CreateLbAddressesFromAddressDataList(
+ grpc_core::ServerAddressList CreateLbAddressesFromAddressDataList(
const std::vector<AddressData>& address_data) {
grpc_core::ServerAddressList addresses;
for (const auto& addr : address_data) {
- std::string lb_uri_str = absl::StrCat("ipv4:127.0.0.1:", addr.port);
+ std::string lb_uri_str = absl::StrCat(
+ ipv6_only_ ? "ipv6:[::1]:" : "ipv4:127.0.0.1:", addr.port);
grpc_uri* lb_uri = grpc_uri_parse(lb_uri_str.c_str(), true);
GPR_ASSERT(lb_uri != nullptr);
grpc_resolved_address address;
return addresses;
}
- static grpc_core::Resolver::Result MakeResolverResult(
+ grpc_core::Resolver::Result MakeResolverResult(
const std::vector<AddressData>& balancer_address_data,
const std::vector<AddressData>& backend_address_data = {},
const char* service_config_json = kDefaultServiceConfig) {
balancers_[i]->service_.add_response(response, delay_ms);
}
+ LoadBalanceResponse BuildResponseForBackends(
+ const std::vector<int>& backend_ports,
+ const std::map<std::string, size_t>& drop_token_counts) {
+ LoadBalanceResponse response;
+ for (const auto& drop_token_count : drop_token_counts) {
+ for (size_t i = 0; i < drop_token_count.second; ++i) {
+ auto* server = response.mutable_server_list()->add_servers();
+ server->set_drop(true);
+ server->set_load_balance_token(drop_token_count.first);
+ }
+ }
+ for (const int& backend_port : backend_ports) {
+ auto* server = response.mutable_server_list()->add_servers();
+ server->set_ip_address(ipv6_only_ ? Ip6ToPackedString("::1")
+ : Ip4ToPackedString("127.0.0.1"));
+ server->set_port(backend_port);
+ static int token_count = 0;
+ server->set_load_balance_token(
+ absl::StrFormat("token%03d", ++token_count));
+ }
+ return response;
+ }
+
Status SendRpc(EchoResponse* response = nullptr, int timeout_ms = 1000,
bool wait_for_ready = false,
const Status& expected_status = Status::OK) {
const size_t num_backends_;
const size_t num_balancers_;
const int client_load_reporting_interval_seconds_;
+ bool ipv6_only_ = false;
std::shared_ptr<Channel> channel_;
std::unique_ptr<grpc::testing::EchoTestService::Stub> stub_;
std::vector<std::unique_ptr<ServerThread<BackendServiceImpl>>> backends_;
SetNextResolutionAllBalancers();
const size_t kNumRpcsPerAddress = 100;
ScheduleResponseForBalancer(
- 0, BalancerServiceImpl::BuildResponseForBackends(GetBackendPorts(), {}),
- 0);
+ 0, BuildResponseForBackends(GetBackendPorts(), {}), 0);
// Make sure that trying to connect works without a call.
channel_->GetState(true /* try_to_connect */);
// We need to wait for all backends to come online.
TEST_F(SingleBalancerTest, ReturnServerStatus) {
SetNextResolutionAllBalancers();
ScheduleResponseForBalancer(
- 0, BalancerServiceImpl::BuildResponseForBackends(GetBackendPorts(), {}),
- 0);
+ 0, BuildResponseForBackends(GetBackendPorts(), {}), 0);
// We need to wait for all backends to come online.
WaitForAllBackends();
// Send a request that the backend will fail, and make sure we get
" ]\n"
"}");
ScheduleResponseForBalancer(
- 0, BalancerServiceImpl::BuildResponseForBackends(GetBackendPorts(), {}),
- 0);
+ 0, BuildResponseForBackends(GetBackendPorts(), {}), 0);
CheckRpcSendOk(1, 1000 /* timeout_ms */, true /* wait_for_ready */);
balancers_[0]->service_.NotifyDoneWithServerlists();
// The balancer got a single request.
" ]\n"
"}");
ScheduleResponseForBalancer(
- 0, BalancerServiceImpl::BuildResponseForBackends(GetBackendPorts(), {}),
- 0);
+ 0, BuildResponseForBackends(GetBackendPorts(), {}), 0);
const size_t kNumRpcs = num_backends_ * 2;
CheckRpcSendOk(kNumRpcs, 1000 /* timeout_ms */, true /* wait_for_ready */);
balancers_[0]->service_.NotifyDoneWithServerlists();
" ]\n"
"}");
ScheduleResponseForBalancer(
- 0, BalancerServiceImpl::BuildResponseForBackends(GetBackendPorts(), {}),
- 0);
+ 0, BuildResponseForBackends(GetBackendPorts(), {}), 0);
const size_t kNumRpcs = num_backends_ * 2;
CheckRpcSendOk(kNumRpcs, 1000 /* timeout_ms */, true /* wait_for_ready */);
// Check that all requests went to the first backend. This verifies
ports.push_back(backends_[0]->port_);
ports.push_back(backends_[0]->port_);
const size_t kNumRpcsPerAddress = 10;
- ScheduleResponseForBalancer(
- 0, BalancerServiceImpl::BuildResponseForBackends(ports, {}), 0);
+ ScheduleResponseForBalancer(0, BuildResponseForBackends(ports, {}), 0);
// We need to wait for the backend to come online.
WaitForBackend(0);
// Send kNumRpcsPerAddress RPCs per server.
SetNextResolution({AddressData{balancers_[0]->port_, "lb"}});
const size_t kNumRpcsPerAddress = 100;
ScheduleResponseForBalancer(
- 0, BalancerServiceImpl::BuildResponseForBackends(GetBackendPorts(), {}),
- 0);
+ 0, BuildResponseForBackends(GetBackendPorts(), {}), 0);
// Make sure that trying to connect works without a call.
channel_->GetState(true /* try_to_connect */);
// We need to wait for all backends to come online.
ScheduleResponseForBalancer(0, LoadBalanceResponse(), 0);
// Send non-empty serverlist only after kServerlistDelayMs
ScheduleResponseForBalancer(
- 0, BalancerServiceImpl::BuildResponseForBackends(GetBackendPorts(), {}),
- kServerlistDelayMs);
+ 0, BuildResponseForBackends(GetBackendPorts(), {}), kServerlistDelayMs);
const auto t0 = system_clock::now();
// Client will block: LB will initially send empty serverlist.
CheckRpcSendOk(1, kCallDeadlineMs, true /* wait_for_ready */);
for (size_t i = 0; i < kNumUnreachableServers; ++i) {
ports.push_back(grpc_pick_unused_port_or_die());
}
- ScheduleResponseForBalancer(
- 0, BalancerServiceImpl::BuildResponseForBackends(ports, {}), 0);
+ ScheduleResponseForBalancer(0, BuildResponseForBackends(ports, {}), 0);
const Status status = SendRpc();
// The error shouldn't be DEADLINE_EXCEEDED.
EXPECT_EQ(StatusCode::UNAVAILABLE, status.error_code());
// Send non-empty serverlist only after kServerlistDelayMs.
ScheduleResponseForBalancer(
0,
- BalancerServiceImpl::BuildResponseForBackends(
+ BuildResponseForBackends(
GetBackendPorts(kNumBackendsInResolution /* start_index */), {}),
kServerlistDelayMs);
// Send non-empty serverlist only after kServerlistDelayMs.
ScheduleResponseForBalancer(
0,
- BalancerServiceImpl::BuildResponseForBackends(
+ BuildResponseForBackends(
GetBackendPorts(kNumBackendsInResolution +
kNumBackendsInResolutionUpdate /* start_index */),
{}),
balancer_addresses.emplace_back(AddressData{balancers_[i]->port_, ""});
}
SetNextResolution(balancer_addresses, backend_addresses);
- ScheduleResponseForBalancer(0,
- BalancerServiceImpl::BuildResponseForBackends(
- GetBackendPorts(kNumFallbackBackends), {}),
- 0);
+ ScheduleResponseForBalancer(
+ 0, BuildResponseForBackends(GetBackendPorts(kNumFallbackBackends), {}),
+ 0);
// Try to connect.
channel_->GetState(true /* try_to_connect */);
WaitForAllBackends(1 /* num_requests_multiple_of */,
// Now start the balancer again. This should cause us to exit
// fallback mode.
balancers_[0]->Start(server_host_);
- ScheduleResponseForBalancer(0,
- BalancerServiceImpl::BuildResponseForBackends(
- GetBackendPorts(kNumFallbackBackends), {}),
- 0);
+ ScheduleResponseForBalancer(
+ 0, BuildResponseForBackends(GetBackendPorts(kNumFallbackBackends), {}),
+ 0);
WaitForAllBackends(1 /* num_requests_multiple_of */,
kNumFallbackBackends /* start_index */);
}
balancer_addresses.emplace_back(AddressData{balancers_[i]->port_, ""});
}
SetNextResolution(balancer_addresses, backend_addresses);
- ScheduleResponseForBalancer(0,
- BalancerServiceImpl::BuildResponseForBackends(
- GetBackendPorts(kNumFallbackBackends), {}),
- 0);
+ ScheduleResponseForBalancer(
+ 0, BuildResponseForBackends(GetBackendPorts(kNumFallbackBackends), {}),
+ 0);
// Try to connect.
channel_->GetState(true /* try_to_connect */);
WaitForAllBackends(1 /* num_requests_multiple_of */,
// Now start the balancer again. This should cause us to exit
// fallback mode.
balancers_[0]->Start(server_host_);
- ScheduleResponseForBalancer(0,
- BalancerServiceImpl::BuildResponseForBackends(
- GetBackendPorts(kNumFallbackBackends), {}),
- 0);
+ ScheduleResponseForBalancer(
+ 0, BuildResponseForBackends(GetBackendPorts(kNumFallbackBackends), {}),
+ 0);
WaitForAllBackends(1 /* num_requests_multiple_of */,
kNumFallbackBackends /* start_index */);
}
// then sends the serverlist again.
// The serverlist points to backend 1.
LoadBalanceResponse serverlist_resp =
- BalancerServiceImpl::BuildResponseForBackends({backends_[1]->port_}, {});
+ BuildResponseForBackends({backends_[1]->port_}, {});
LoadBalanceResponse fallback_resp;
fallback_resp.mutable_fallback_response();
ScheduleResponseForBalancer(0, serverlist_resp, 0);
SetNextResolutionAllBalancers();
const size_t kNumRpcsPerAddress = 100;
ScheduleResponseForBalancer(
- 0, BalancerServiceImpl::BuildResponseForBackends(GetBackendPorts(), {}),
- 0);
+ 0, BuildResponseForBackends(GetBackendPorts(), {}), 0);
// Make sure that trying to connect works without a call.
channel_->GetState(true /* try_to_connect */);
// Send kNumRpcsPerAddress RPCs per server.
SetNextResolutionAllBalancers(kServiceConfigWithTarget);
ScheduleResponseForBalancer(
- 0, BalancerServiceImpl::BuildResponseForBackends(GetBackendPorts(), {}),
- 0);
+ 0, BuildResponseForBackends(GetBackendPorts(), {}), 0);
// Make sure that trying to connect works without a call.
channel_->GetState(true /* try_to_connect */);
// We need to wait for all backends to come online.
SetNextResolutionAllBalancers();
const std::vector<int> first_backend{GetBackendPorts()[0]};
const std::vector<int> second_backend{GetBackendPorts()[1]};
- ScheduleResponseForBalancer(
- 0, BalancerServiceImpl::BuildResponseForBackends(first_backend, {}), 0);
- ScheduleResponseForBalancer(
- 1, BalancerServiceImpl::BuildResponseForBackends(second_backend, {}), 0);
+ ScheduleResponseForBalancer(0, BuildResponseForBackends(first_backend, {}),
+ 0);
+ ScheduleResponseForBalancer(1, BuildResponseForBackends(second_backend, {}),
+ 0);
// Wait until the first backend is ready.
WaitForBackend(0);
const std::vector<int> first_backend{GetBackendPorts()[0]};
const std::vector<int> second_backend{GetBackendPorts()[0]};
- ScheduleResponseForBalancer(
- 0, BalancerServiceImpl::BuildResponseForBackends(first_backend, {}), 0);
- ScheduleResponseForBalancer(
- 1, BalancerServiceImpl::BuildResponseForBackends(second_backend, {}), 0);
+ ScheduleResponseForBalancer(0, BuildResponseForBackends(first_backend, {}),
+ 0);
+ ScheduleResponseForBalancer(1, BuildResponseForBackends(second_backend, {}),
+ 0);
// Wait until the first backend is ready.
WaitForBackend(0);
const std::vector<int> first_backend{GetBackendPorts()[0]};
const std::vector<int> second_backend{GetBackendPorts()[1]};
- ScheduleResponseForBalancer(
- 0, BalancerServiceImpl::BuildResponseForBackends(first_backend, {}), 0);
- ScheduleResponseForBalancer(
- 1, BalancerServiceImpl::BuildResponseForBackends(second_backend, {}), 0);
+ ScheduleResponseForBalancer(0, BuildResponseForBackends(first_backend, {}),
+ 0);
+ ScheduleResponseForBalancer(1, BuildResponseForBackends(second_backend, {}),
+ 0);
// Start servers and send 10 RPCs per server.
gpr_log(GPR_INFO, "========= BEFORE FIRST BATCH ==========");
TEST_F(UpdatesWithClientLoadReportingTest, ReresolveDeadBalancer) {
const std::vector<int> first_backend{GetBackendPorts()[0]};
const std::vector<int> second_backend{GetBackendPorts()[1]};
- ScheduleResponseForBalancer(
- 0, BalancerServiceImpl::BuildResponseForBackends(first_backend, {}), 0);
- ScheduleResponseForBalancer(
- 1, BalancerServiceImpl::BuildResponseForBackends(second_backend, {}), 0);
+ ScheduleResponseForBalancer(0, BuildResponseForBackends(first_backend, {}),
+ 0);
+ ScheduleResponseForBalancer(1, BuildResponseForBackends(second_backend, {}),
+ 0);
// Ask channel to connect to trigger resolver creation.
channel_->GetState(true);
const int num_total_addresses = num_backends_ + num_of_drop_addresses;
ScheduleResponseForBalancer(
0,
- BalancerServiceImpl::BuildResponseForBackends(
+ BuildResponseForBackends(
GetBackendPorts(),
{{"rate_limiting", num_of_drop_by_rate_limiting_addresses},
{"load_balancing", num_of_drop_by_load_balancing_addresses}}),
const int num_of_drop_by_load_balancing_addresses = 1;
ScheduleResponseForBalancer(
0,
- BalancerServiceImpl::BuildResponseForBackends(
+ BuildResponseForBackends(
{}, {{"rate_limiting", num_of_drop_by_rate_limiting_addresses},
{"load_balancing", num_of_drop_by_load_balancing_addresses}}),
0);
TEST_F(SingleBalancerTest, DropAll) {
SetNextResolutionAllBalancers();
ScheduleResponseForBalancer(
- 0, BalancerServiceImpl::BuildResponseForBackends(GetBackendPorts(), {}),
- 0);
+ 0, BuildResponseForBackends(GetBackendPorts(), {}), 0);
const int num_of_drop_by_rate_limiting_addresses = 1;
const int num_of_drop_by_load_balancing_addresses = 1;
ScheduleResponseForBalancer(
0,
- BalancerServiceImpl::BuildResponseForBackends(
+ BuildResponseForBackends(
{}, {{"rate_limiting", num_of_drop_by_rate_limiting_addresses},
{"load_balancing", num_of_drop_by_load_balancing_addresses}}),
1000);
SetNextResolutionAllBalancers();
const size_t kNumRpcsPerAddress = 100;
ScheduleResponseForBalancer(
- 0, BalancerServiceImpl::BuildResponseForBackends(GetBackendPorts(), {}),
- 0);
+ 0, BuildResponseForBackends(GetBackendPorts(), {}), 0);
// Wait until all backends are ready.
int num_ok = 0;
int num_failure = 0;
// Balancer returns backends starting at index 1.
ScheduleResponseForBalancer(
0,
- BalancerServiceImpl::BuildResponseForBackends(
- GetBackendPorts(0, kNumBackendsFirstPass), {}),
+ BuildResponseForBackends(GetBackendPorts(0, kNumBackendsFirstPass), {}),
0);
// Wait until all backends returned by the balancer are ready.
int num_ok = 0;
}
// Now restart the balancer, this time pointing to all backends.
balancers_[0]->Start(server_host_);
- ScheduleResponseForBalancer(0,
- BalancerServiceImpl::BuildResponseForBackends(
- GetBackendPorts(kNumBackendsFirstPass), {}),
- 0);
+ ScheduleResponseForBalancer(
+ 0, BuildResponseForBackends(GetBackendPorts(kNumBackendsFirstPass), {}),
+ 0);
// Wait for queries to start going to one of the new backends.
// This tells us that we're now using the new serverlist.
do {
const int num_total_addresses = num_backends_ + num_of_drop_addresses;
ScheduleResponseForBalancer(
0,
- BalancerServiceImpl::BuildResponseForBackends(
+ BuildResponseForBackends(
GetBackendPorts(),
{{"rate_limiting", num_of_drop_by_rate_limiting_addresses},
{"load_balancing", num_of_drop_by_load_balancing_addresses}}),
bool ignored_ok;
for (auto it = cqs_.begin(); it != cqs_.end(); ++it) {
(*it)->Shutdown();
- while ((*it)->Next(&ignored_tag, &ignored_ok))
- ;
+ while ((*it)->Next(&ignored_tag, &ignored_ok)) {
+ }
}
}
#include "test/cpp/end2end/interceptors_util.h"
+#include "absl/memory/memory.h"
+
namespace grpc {
namespace testing {
// Add 20 dummy interceptors before hijacking interceptor
creators.reserve(20);
for (auto i = 0; i < 20; i++) {
- creators.push_back(std::unique_ptr<DummyInterceptorFactory>(
- new DummyInterceptorFactory()));
+ creators.push_back(absl::make_unique<DummyInterceptorFactory>());
}
return creators;
}
public:
DummyInterceptor() {}
- virtual void Intercept(experimental::InterceptorBatchMethods* methods) {
+ void Intercept(experimental::InterceptorBatchMethods* methods) override {
if (methods->QueryInterceptionHookPoint(
experimental::InterceptionHookPoints::PRE_SEND_INITIAL_METADATA)) {
num_times_run_++;
: public experimental::ClientInterceptorFactoryInterface,
public experimental::ServerInterceptorFactoryInterface {
public:
- virtual experimental::Interceptor* CreateClientInterceptor(
+ experimental::Interceptor* CreateClientInterceptor(
experimental::ClientRpcInfo* /*info*/) override {
return new DummyInterceptor();
}
- virtual experimental::Interceptor* CreateServerInterceptor(
+ experimental::Interceptor* CreateServerInterceptor(
experimental::ServerRpcInfo* /*info*/) override {
return new DummyInterceptor();
}
: public experimental::ClientInterceptorFactoryInterface,
public experimental::ServerInterceptorFactoryInterface {
public:
- virtual experimental::Interceptor* CreateClientInterceptor(
+ experimental::Interceptor* CreateClientInterceptor(
experimental::ClientRpcInfo* /*info*/) override {
return nullptr;
}
- virtual experimental::Interceptor* CreateServerInterceptor(
+ experimental::Interceptor* CreateServerInterceptor(
experimental::ServerRpcInfo* /*info*/) override {
return nullptr;
}
std::function<void(experimental::RpcAllocatorState* allocator_state,
const EchoRequest* req, EchoResponse* resp)>
mutator) {
- allocator_mutator_ = mutator;
+ allocator_mutator_ = std::move(mutator);
}
experimental::ServerUnaryReactor* Echo(
}
}
- ~MessageAllocatorEnd2endTestBase() = default;
+ ~MessageAllocatorEnd2endTestBase() override = default;
void CreateServer(
experimental::MessageAllocator<EchoRequest, EchoResponse>* allocator) {
using grpc::testing::EchoTestService;
using grpc::testing::MockClientReaderWriter;
using std::vector;
-using std::chrono::system_clock;
using ::testing::_;
using ::testing::AtLeast;
using ::testing::DoAll;
-using ::testing::Invoke;
using ::testing::Return;
using ::testing::SaveArg;
using ::testing::SetArgPointee;
buff += n;
continue;
}
- if (buff == "") continue;
+ if (buff.empty()) continue;
result.push_back(buff);
buff = "";
}
- if (buff != "") result.push_back(buff);
+ if (!buff.empty()) result.push_back(buff);
return result;
}
#include <grpcpp/server_builder.h>
#include <grpcpp/server_context.h>
+#include "absl/memory/memory.h"
+
#include "src/core/lib/gpr/tls.h"
#include "src/core/lib/iomgr/port.h"
#include "src/proto/grpc/testing/echo.grpc.pb.h"
void* ignored_tag;
bool ignored_ok;
cq_->Shutdown();
- while (LoopForTag(&ignored_tag, &ignored_ok))
- ;
+ while (LoopForTag(&ignored_tag, &ignored_ok)) {
+ }
stub_.reset();
grpc_recycle_unused_port(port_);
}
ServerBuilder builder;
builder.AddListeningPort(server_address_.str(),
grpc::InsecureServerCredentials());
- service_.reset(new grpc::testing::EchoTestService::AsyncService());
+ service_ =
+ absl::make_unique<grpc::testing::EchoTestService::AsyncService>();
builder.RegisterService(service_.get());
cq_ = builder.AddCompletionQueue();
server_ = builder.BuildAndStart();
#include <grpcpp/server_builder.h>
#include <grpcpp/server_context.h>
+#include "absl/memory/memory.h"
+
#include "src/proto/grpc/testing/echo.grpc.pb.h"
#include "test/core/util/port.h"
#include "test/core/util/test_config.h"
std::shared_ptr<Channel> channel =
grpc::CreateChannel(target, InsecureChannelCredentials());
stub_ = grpc::testing::EchoTestService::NewStub(channel);
- desc_db_.reset(new ProtoReflectionDescriptorDatabase(channel));
- desc_pool_.reset(new protobuf::DescriptorPool(desc_db_.get()));
+ desc_db_ = absl::make_unique<ProtoReflectionDescriptorDatabase>(channel);
+ desc_pool_ = absl::make_unique<protobuf::DescriptorPool>(desc_db_.get());
}
string to_string(const int number) {
std::vector<std::string> services;
desc_db_->GetServices(&services);
// The service list has at least one service (reflection servcie).
- EXPECT_TRUE(services.size() > 0);
+ EXPECT_TRUE(!services.empty());
for (auto it = services.begin(); it != services.end(); ++it) {
CompareService(*it);
void* ignored_tag;
bool ignored_ok;
cq_->Shutdown();
- while (cq_->Next(&ignored_tag, &ignored_ok))
- ;
+ while (cq_->Next(&ignored_tag, &ignored_ok)) {
+ }
stub_.reset();
grpc_recycle_unused_port(port_);
}
#include <grpcpp/server_builder.h>
#include <grpcpp/server_context.h>
+#include "absl/memory/memory.h"
+
#include "src/proto/grpc/testing/echo.grpc.pb.h"
#include "test/core/util/port.h"
#include "test/core/util/test_config.h"
void SetUp() override {
port_ = grpc_pick_unused_port_or_die();
- builder_.reset(new ServerBuilder());
+ builder_ = absl::make_unique<ServerBuilder>();
}
void InsertPlugin() {
void RunCQ() {
void* tag;
bool ok;
- while (cq_->Next(&tag, &ok))
- ;
+ while (cq_->Next(&tag, &ok)) {
+ }
}
};
#include <grpcpp/server_builder.h>
#include <grpcpp/server_context.h>
+#include "absl/memory/memory.h"
+
#include "src/proto/grpc/testing/duplicate/echo_duplicate.grpc.pb.h"
#include "src/proto/grpc/testing/echo.grpc.pb.h"
#include "test/core/util/port.h"
using grpc::testing::EchoRequest;
using grpc::testing::EchoResponse;
-using std::chrono::system_clock;
static std::string g_root;
std::ostringstream addr_stream;
addr_stream << "localhost:" << port;
auto addr = addr_stream.str();
- client_.reset(new SubProcess({g_root + "/server_crash_test_client",
+ client_ = absl::make_unique<SubProcess>(
+ std::vector<std::string>({g_root + "/server_crash_test_client",
"--address=" + addr, "--mode=" + mode}));
GPR_ASSERT(client_);
*
*/
-#include <gflags/gflags.h>
-#include <iostream>
-#include <memory>
-#include <sstream>
-#include <string>
-
#include <grpc/support/log.h>
#include <grpcpp/channel.h>
#include <grpcpp/client_context.h>
#include <grpcpp/create_channel.h>
+#include <iostream>
+#include <memory>
+#include <sstream>
+#include <string>
+
+#include "absl/flags/flag.h"
#include "src/proto/grpc/testing/echo.grpc.pb.h"
#include "test/cpp/util/test_config.h"
-DEFINE_string(address, "", "Address to connect to");
-DEFINE_string(mode, "", "Test mode to use");
+ABSL_FLAG(std::string, address, "", "Address to connect to");
+ABSL_FLAG(std::string, mode, "", "Test mode to use");
using grpc::testing::EchoRequest;
using grpc::testing::EchoResponse;
int main(int argc, char** argv) {
grpc::testing::InitTest(&argc, &argv, true);
- auto stub = grpc::testing::EchoTestService::NewStub(
- grpc::CreateChannel(FLAGS_address, grpc::InsecureChannelCredentials()));
+ auto stub = grpc::testing::EchoTestService::NewStub(grpc::CreateChannel(
+ absl::GetFlag(FLAGS_address), grpc::InsecureChannelCredentials()));
EchoRequest request;
EchoResponse response;
grpc::ClientContext context;
context.set_wait_for_ready(true);
- if (FLAGS_mode == "bidi") {
+ if (absl::GetFlag(FLAGS_mode) == "bidi") {
auto stream = stub->BidiStream(&context);
for (int i = 0;; i++) {
std::ostringstream msg;
GPR_ASSERT(stream->Read(&response));
GPR_ASSERT(response.message() == request.message());
}
- } else if (FLAGS_mode == "response") {
+ } else if (absl::GetFlag(FLAGS_mode) == "response") {
EchoRequest request;
request.set_message("Hello");
auto stream = stub->ResponseStream(&context, request);
GPR_ASSERT(stream->Read(&response));
}
} else {
- gpr_log(GPR_ERROR, "invalid test mode '%s'", FLAGS_mode.c_str());
+ gpr_log(GPR_ERROR, "invalid test mode '%s'",
+ absl::GetFlag(FLAGS_mode).c_str());
return 1;
}
void SetUp() override {
int port = grpc_pick_unused_port_or_die();
picked_port_ = port;
- server_address_ << "127.0.0.1:" << port;
+ server_address_ << "localhost:" << port;
ServerBuilder builder;
builder.AddListeningPort(server_address_.str(),
InsecureServerCredentials());
#include <grpcpp/server_context.h>
#include <grpcpp/support/server_interceptor.h>
+#include "absl/memory/memory.h"
+#include "absl/strings/match.h"
+
#include "src/proto/grpc/testing/echo.grpc.pb.h"
#include "test/core/util/port.h"
#include "test/core/util/test_config.h"
bool found = false;
// Check that we received the metadata as an echo
for (const auto& pair : *map) {
- found = pair.first.find("testkey") == 0 &&
- pair.second.find("testvalue") == 0;
+ found = absl::StartsWith(pair.first, "testkey") &&
+ absl::StartsWith(pair.second, "testvalue");
if (found) break;
}
EXPECT_EQ(found, true);
class LoggingInterceptorFactory
: public experimental::ServerInterceptorFactoryInterface {
public:
- virtual experimental::Interceptor* CreateServerInterceptor(
+ experimental::Interceptor* CreateServerInterceptor(
experimental::ServerRpcInfo* info) override {
return new LoggingInterceptor(info);
}
class SyncSendMessageTesterFactory
: public experimental::ServerInterceptorFactoryInterface {
public:
- virtual experimental::Interceptor* CreateServerInterceptor(
+ experimental::Interceptor* CreateServerInterceptor(
experimental::ServerRpcInfo* info) override {
return new SyncSendMessageTester(info);
}
class SyncSendMessageVerifierFactory
: public experimental::ServerInterceptorFactoryInterface {
public:
- virtual experimental::Interceptor* CreateServerInterceptor(
+ experimental::Interceptor* CreateServerInterceptor(
experimental::ServerRpcInfo* info) override {
return new SyncSendMessageVerifier(info);
}
new LoggingInterceptorFactory()));
// Add 20 dummy interceptor factories and null interceptor factories
for (auto i = 0; i < 20; i++) {
- creators.push_back(std::unique_ptr<DummyInterceptorFactory>(
- new DummyInterceptorFactory()));
- creators.push_back(std::unique_ptr<NullInterceptorFactory>(
- new NullInterceptorFactory()));
+ creators.push_back(absl::make_unique<DummyInterceptorFactory>());
+ creators.push_back(absl::make_unique<NullInterceptorFactory>());
}
builder.experimental().SetInterceptorCreators(std::move(creators));
server_ = builder.BuildAndStart();
std::unique_ptr<experimental::ServerInterceptorFactoryInterface>(
new LoggingInterceptorFactory()));
for (auto i = 0; i < 20; i++) {
- creators.push_back(std::unique_ptr<DummyInterceptorFactory>(
- new DummyInterceptorFactory()));
+ creators.push_back(absl::make_unique<DummyInterceptorFactory>());
}
builder.experimental().SetInterceptorCreators(std::move(creators));
server_ = builder.BuildAndStart();
std::unique_ptr<experimental::ServerInterceptorFactoryInterface>(
new LoggingInterceptorFactory()));
for (auto i = 0; i < 20; i++) {
- creators.push_back(std::unique_ptr<DummyInterceptorFactory>(
- new DummyInterceptorFactory()));
+ creators.push_back(absl::make_unique<DummyInterceptorFactory>());
}
builder.experimental().SetInterceptorCreators(std::move(creators));
auto cq = builder.AddCompletionQueue();
cq->Shutdown();
void* ignored_tag;
bool ignored_ok;
- while (cq->Next(&ignored_tag, &ignored_ok))
- ;
+ while (cq->Next(&ignored_tag, &ignored_ok)) {
+ }
grpc_recycle_unused_port(port);
}
std::unique_ptr<experimental::ServerInterceptorFactoryInterface>(
new LoggingInterceptorFactory()));
for (auto i = 0; i < 20; i++) {
- creators.push_back(std::unique_ptr<DummyInterceptorFactory>(
- new DummyInterceptorFactory()));
+ creators.push_back(absl::make_unique<DummyInterceptorFactory>());
}
builder.experimental().SetInterceptorCreators(std::move(creators));
auto cq = builder.AddCompletionQueue();
cq->Shutdown();
void* ignored_tag;
bool ignored_ok;
- while (cq->Next(&ignored_tag, &ignored_ok))
- ;
+ while (cq->Next(&ignored_tag, &ignored_ok)) {
+ }
grpc_recycle_unused_port(port);
}
creators;
creators.reserve(20);
for (auto i = 0; i < 20; i++) {
- creators.push_back(std::unique_ptr<DummyInterceptorFactory>(
- new DummyInterceptorFactory()));
+ creators.push_back(absl::make_unique<DummyInterceptorFactory>());
}
builder.experimental().SetInterceptorCreators(std::move(creators));
auto srv_cq = builder.AddCompletionQueue();
server->Shutdown();
void* ignored_tag;
bool ignored_ok;
- while (cli_cq.Next(&ignored_tag, &ignored_ok))
- ;
- while (srv_cq->Next(&ignored_tag, &ignored_ok))
- ;
+ while (cli_cq.Next(&ignored_tag, &ignored_ok)) {
+ }
+ while (srv_cq->Next(&ignored_tag, &ignored_ok)) {
+ }
grpc_recycle_unused_port(port);
}
creators;
creators.reserve(20);
for (auto i = 0; i < 20; i++) {
- creators.push_back(std::unique_ptr<DummyInterceptorFactory>(
- new DummyInterceptorFactory()));
+ creators.push_back(absl::make_unique<DummyInterceptorFactory>());
}
builder.experimental().SetInterceptorCreators(std::move(creators));
auto cq = builder.AddCompletionQueue();
cq->Shutdown();
void* ignored_tag;
bool ignored_ok;
- while (cq->Next(&ignored_tag, &ignored_ok))
- ;
+ while (cq->Next(&ignored_tag, &ignored_ok)) {
+ }
grpc_recycle_unused_port(port);
}
creators;
creators.reserve(20);
for (auto i = 0; i < 20; i++) {
- creators.push_back(std::unique_ptr<DummyInterceptorFactory>(
- new DummyInterceptorFactory()));
+ creators.push_back(absl::make_unique<DummyInterceptorFactory>());
}
builder.experimental().SetInterceptorCreators(std::move(creators));
auto server = builder.BuildAndStart();
#include <string>
#include <thread>
+#include "absl/memory/memory.h"
#include "absl/strings/str_cat.h"
#include <grpc/grpc.h>
#include "src/proto/grpc/testing/echo.grpc.pb.h"
#include "test/core/util/port.h"
+#include "test/core/util/resolve_localhost_ip46.h"
#include "test/core/util/test_config.h"
#include "test/cpp/end2end/test_service_impl.h"
using grpc::testing::EchoRequest;
using grpc::testing::EchoResponse;
-using std::chrono::system_clock;
namespace grpc {
namespace testing {
grpc_init();
response_generator_ =
grpc_core::MakeRefCounted<grpc_core::FakeResolverResponseGenerator>();
+ bool localhost_resolves_to_ipv4 = false;
+ bool localhost_resolves_to_ipv6 = false;
+ grpc_core::LocalhostResolves(&localhost_resolves_to_ipv4,
+ &localhost_resolves_to_ipv6);
+ ipv6_only_ = !localhost_resolves_to_ipv4 && localhost_resolves_to_ipv6;
}
void TearDown() override {
stub_.reset();
servers_.clear();
creds_.reset();
- grpc_shutdown_blocking();
+ grpc_shutdown();
}
void CreateServers(size_t num_servers,
grpc_core::Resolver::Result BuildFakeResults(const std::vector<int>& ports) {
grpc_core::Resolver::Result result;
for (const int& port : ports) {
- std::string lb_uri_str = absl::StrCat("ipv4:127.0.0.1:", port);
+ std::string lb_uri_str =
+ absl::StrCat(ipv6_only_ ? "ipv6:[::1]:" : "ipv4:127.0.0.1:", port);
grpc_uri* lb_uri = grpc_uri_parse(lb_uri_str.c_str(), true);
GPR_ASSERT(lb_uri != nullptr);
grpc_resolved_address address;
grpc::internal::Mutex mu;
grpc::internal::MutexLock lock(&mu);
grpc::internal::CondVar cond;
- thread_.reset(new std::thread(
- std::bind(&ServerData::Serve, this, server_host, &mu, &cond)));
+ thread_ = absl::make_unique<std::thread>(
+ std::bind(&ServerData::Serve, this, server_host, &mu, &cond));
cond.WaitUntil(&mu, [this] { return server_ready_; });
server_ready_ = false;
gpr_log(GPR_INFO, "server startup complete");
return "{\"version\": \"invalid_default\"";
}
+ bool ipv6_only_ = false;
const std::string server_host_;
std::unique_ptr<grpc::testing::EchoTestService::Stub> stub_;
std::vector<std::unique_ptr<ServerData>> servers_;
using grpc::testing::EchoRequest;
using grpc::testing::EchoResponse;
-using std::chrono::system_clock;
const char* kLargeString =
"("
#include "src/proto/grpc/testing/echo.grpc.pb.h"
#include "test/cpp/util/string_ref_helper.h"
-using std::chrono::system_clock;
-
namespace grpc {
namespace testing {
using grpc::testing::EchoRequest;
using grpc::testing::EchoResponse;
-using std::chrono::system_clock;
const int kNumThreads = 100; // Number of threads
const int kNumAsyncSendThreads = 2;
void* ignored_tag;
bool ignored_ok;
- while (cq_->Next(&ignored_tag, &ignored_ok))
- ;
+ while (cq_->Next(&ignored_tag, &ignored_ok)) {
+ }
this->TearDownEnd();
}
void TearDown() override {
void* ignored_tag;
bool ignored_ok;
- while (cq_.Next(&ignored_tag, &ignored_ok))
- ;
+ while (cq_.Next(&ignored_tag, &ignored_ok)) {
+ }
common_.TearDown();
}
#include <grpcpp/server_builder.h>
#include <grpcpp/server_context.h>
+#include "absl/memory/memory.h"
+
#include "src/core/lib/iomgr/timer.h"
#include "src/proto/grpc/testing/echo.grpc.pb.h"
#include "test/core/util/port.h"
std::ostringstream addr_stream;
addr_stream << "localhost:" << port;
server_address_ = addr_stream.str();
- server_.reset(new SubProcess({
+ server_ = absl::make_unique<SubProcess>(std::vector<std::string>({
g_root + "/client_crash_test_server",
"--address=" + server_address_,
}));
static void TearDownTestCase() { server_.reset(); }
- void SetUp() {
+ void SetUp() override {
channel_ =
grpc::CreateChannel(server_address_, InsecureChannelCredentials());
GPR_ASSERT(channel_);
stub_ = grpc::testing::EchoTestService::NewStub(channel_);
}
- void TearDown() { reset_now_offset(); }
+ void TearDown() override { reset_now_offset(); }
std::unique_ptr<grpc::testing::EchoTestService::Stub> CreateStub() {
return grpc::testing::EchoTestService::NewStub(channel_);
--- /dev/null
+//
+//
+// Copyright 2020 gRPC authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+//
+
+#include <gmock/gmock.h>
+#include <gtest/gtest.h>
+
+#include <grpc/grpc.h>
+#include <grpcpp/server_builder.h>
+
+#include "test/core/util/port.h"
+#include "test/core/util/test_config.h"
+#include "test/cpp/end2end/test_service_impl.h"
+#include "test/cpp/util/test_credentials_provider.h"
+
+namespace grpc {
+namespace testing {
+namespace {
+
+class XdsCredentialsEnd2EndFallbackTest
+ : public ::testing::TestWithParam<const char*> {
+ protected:
+ XdsCredentialsEnd2EndFallbackTest() {
+ int port = grpc_pick_unused_port_or_die();
+ ServerBuilder builder;
+ server_address_ = "localhost:" + std::to_string(port);
+ builder.AddListeningPort(
+ server_address_,
+ GetCredentialsProvider()->GetServerCredentials(GetParam()));
+ builder.RegisterService(&service_);
+ server_ = builder.BuildAndStart();
+ }
+
+ std::string server_address_;
+ TestServiceImpl service_;
+ std::unique_ptr<Server> server_;
+};
+
+TEST_P(XdsCredentialsEnd2EndFallbackTest, NoXdsSchemeInTarget) {
+ // Target does not use 'xds:///' scheme and should result in using fallback
+ // credentials.
+ ChannelArguments args;
+ auto channel = grpc::CreateCustomChannel(
+ server_address_,
+ grpc::experimental::XdsCredentials(
+ GetCredentialsProvider()->GetChannelCredentials(GetParam(), &args)),
+ args);
+ auto stub = grpc::testing::EchoTestService::NewStub(channel);
+ ClientContext ctx;
+ EchoRequest req;
+ req.set_message("Hello");
+ EchoResponse resp;
+ Status s = stub->Echo(&ctx, req, &resp);
+ EXPECT_EQ(s.ok(), true);
+ EXPECT_EQ(resp.message(), "Hello");
+}
+
+INSTANTIATE_TEST_SUITE_P(XdsCredentialsEnd2EndFallback,
+ XdsCredentialsEnd2EndFallbackTest,
+ ::testing::ValuesIn(std::vector<const char*>(
+ {kInsecureCredentialsType, kTlsCredentialsType})));
+
+} // namespace
+} // namespace testing
+} // namespace grpc
+
+int main(int argc, char** argv) {
+ ::testing::InitGoogleTest(&argc, argv);
+ grpc::testing::TestEnvironment env(argc, argv);
+ const auto result = RUN_ALL_TESTS();
+ return result;
+}
#include <gmock/gmock.h>
#include <gtest/gtest.h>
+#include "absl/memory/memory.h"
#include "absl/strings/str_cat.h"
#include "absl/types/optional.h"
#include "src/cpp/server/secure_server_credentials.h"
#include "test/core/util/port.h"
+#include "test/core/util/resolve_localhost_ip46.h"
#include "test/core/util/test_config.h"
#include "test/cpp/end2end/test_service_impl.h"
std::map<std::string, uint64_t> dropped_requests_;
};
+// TODO(roth) move all of the code that deals with default resource contents out
+// of AdsServiceImpl and into XdsEnd2EndTest.
class AdsServiceImpl : public std::enable_shared_from_this<AdsServiceImpl> {
public:
struct ResponseState {
struct EdsResourceArgs {
struct Locality {
- Locality(const std::string& sub_zone, std::vector<int> ports,
+ Locality(std::string sub_zone, std::vector<int> ports,
int lb_weight = kDefaultLocalityWeight,
int priority = kDefaultLocalityPriority,
std::vector<HealthStatus> health_statuses = {})
FractionalPercent::MILLION;
};
- explicit AdsServiceImpl(bool enable_load_reporting)
+ AdsServiceImpl()
: v2_rpc_service_(this, /*is_v2=*/true),
- v3_rpc_service_(this, /*is_v2=*/false) {
- // Construct RDS response data.
- default_route_config_.set_name(kDefaultRouteConfigurationName);
- auto* virtual_host = default_route_config_.add_virtual_hosts();
- virtual_host->add_domains("*");
- auto* route = virtual_host->add_routes();
- route->mutable_match()->set_prefix("");
- route->mutable_route()->set_cluster(kDefaultClusterName);
- SetRdsResource(default_route_config_);
- // Construct LDS response data (with inlined RDS result).
- default_listener_ = BuildListener(default_route_config_);
- SetLdsResource(default_listener_);
- // Construct CDS response data.
- default_cluster_.set_name(kDefaultClusterName);
- default_cluster_.set_type(Cluster::EDS);
- auto* eds_config = default_cluster_.mutable_eds_cluster_config();
- eds_config->mutable_eds_config()->mutable_ads();
- eds_config->set_service_name(kDefaultEdsServiceName);
- default_cluster_.set_lb_policy(Cluster::ROUND_ROBIN);
- if (enable_load_reporting) {
- default_cluster_.mutable_lrs_server()->mutable_self();
- }
- SetCdsResource(default_cluster_);
- }
+ v3_rpc_service_(this, /*is_v2=*/false) {}
bool seen_v2_client() const { return seen_v2_client_; }
bool seen_v3_client() const { return seen_v3_client_; }
return &v3_rpc_service_;
}
- Listener default_listener() const { return default_listener_; }
- RouteConfiguration default_route_config() const {
- return default_route_config_;
- }
- Cluster default_cluster() const { return default_cluster_; }
-
ResponseState lds_response_state() {
grpc_core::MutexLock lock(&ads_mu_);
return resource_type_response_state_[kLdsTypeUrl];
resource_types_to_ignore_.emplace(type_url);
}
+ void SetResourceMinVersion(const std::string& type_url, int version) {
+ grpc_core::MutexLock lock(&ads_mu_);
+ resource_type_min_versions_[type_url] = version;
+ }
+
void UnsetResource(const std::string& type_url, const std::string& name) {
grpc_core::MutexLock lock(&ads_mu_);
- ResourceState& state = resource_map_[type_url][name];
- ++state.version;
- state.resource.reset();
- gpr_log(GPR_INFO, "ADS[%p]: Unsetting %s resource %s to version %u", this,
- type_url.c_str(), name.c_str(), state.version);
- for (SubscriptionState* subscription : state.subscriptions) {
+ ResourceTypeState& resource_type_state = resource_map_[type_url];
+ ++resource_type_state.resource_type_version;
+ ResourceState& resource_state = resource_type_state.resource_name_map[name];
+ resource_state.resource_type_version =
+ resource_type_state.resource_type_version;
+ resource_state.resource.reset();
+ gpr_log(GPR_INFO,
+ "ADS[%p]: Unsetting %s resource %s; resource_type_version now %u",
+ this, type_url.c_str(), name.c_str(),
+ resource_type_state.resource_type_version);
+ for (SubscriptionState* subscription : resource_state.subscriptions) {
subscription->update_queue->emplace_back(type_url, name);
}
}
void SetResource(google::protobuf::Any resource, const std::string& type_url,
const std::string& name) {
grpc_core::MutexLock lock(&ads_mu_);
- ResourceState& state = resource_map_[type_url][name];
- ++state.version;
- state.resource = std::move(resource);
- gpr_log(GPR_INFO, "ADS[%p]: Updating %s resource %s to version %u", this,
- type_url.c_str(), name.c_str(), state.version);
- for (SubscriptionState* subscription : state.subscriptions) {
+ ResourceTypeState& resource_type_state = resource_map_[type_url];
+ ++resource_type_state.resource_type_version;
+ ResourceState& resource_state = resource_type_state.resource_name_map[name];
+ resource_state.resource_type_version =
+ resource_type_state.resource_type_version;
+ resource_state.resource = std::move(resource);
+ gpr_log(GPR_INFO,
+ "ADS[%p]: Updating %s resource %s; resource_type_version now %u",
+ this, type_url.c_str(), name.c_str(),
+ resource_type_state.resource_type_version);
+ for (SubscriptionState* subscription : resource_state.subscriptions) {
subscription->update_queue->emplace_back(type_url, name);
}
}
SetResource(std::move(resource), kEdsTypeUrl, assignment.cluster_name());
}
- void SetLdsToUseDynamicRds() {
- auto listener = default_listener_;
- HttpConnectionManager http_connection_manager;
- auto* rds = http_connection_manager.mutable_rds();
- rds->set_route_config_name(kDefaultRouteConfigurationName);
- rds->mutable_config_source()->mutable_ads();
- listener.mutable_api_listener()->mutable_api_listener()->PackFrom(
- http_connection_manager);
- SetLdsResource(listener);
- }
-
- static Listener BuildListener(const RouteConfiguration& route_config) {
- HttpConnectionManager http_connection_manager;
- *(http_connection_manager.mutable_route_config()) = route_config;
- Listener listener;
- listener.set_name(kServerName);
- listener.mutable_api_listener()->mutable_api_listener()->PackFrom(
- http_connection_manager);
- return listener;
- }
-
- static ClusterLoadAssignment BuildEdsResource(
- const EdsResourceArgs& args,
- const char* eds_service_name = kDefaultEdsServiceName) {
- ClusterLoadAssignment assignment;
- assignment.set_cluster_name(eds_service_name);
- for (const auto& locality : args.locality_list) {
- auto* endpoints = assignment.add_endpoints();
- endpoints->mutable_load_balancing_weight()->set_value(locality.lb_weight);
- endpoints->set_priority(locality.priority);
- endpoints->mutable_locality()->set_region(kDefaultLocalityRegion);
- endpoints->mutable_locality()->set_zone(kDefaultLocalityZone);
- endpoints->mutable_locality()->set_sub_zone(locality.sub_zone);
- for (size_t i = 0; i < locality.ports.size(); ++i) {
- const int& port = locality.ports[i];
- auto* lb_endpoints = endpoints->add_lb_endpoints();
- if (locality.health_statuses.size() > i &&
- locality.health_statuses[i] != HealthStatus::UNKNOWN) {
- lb_endpoints->set_health_status(locality.health_statuses[i]);
- }
- auto* endpoint = lb_endpoints->mutable_endpoint();
- auto* address = endpoint->mutable_address();
- auto* socket_address = address->mutable_socket_address();
- socket_address->set_address("127.0.0.1");
- socket_address->set_port_value(port);
- }
- }
- if (!args.drop_categories.empty()) {
- auto* policy = assignment.mutable_policy();
- for (const auto& p : args.drop_categories) {
- const std::string& name = p.first;
- const uint32_t parts_per_million = p.second;
- auto* drop_overload = policy->add_drop_overloads();
- drop_overload->set_category(name);
- auto* drop_percentage = drop_overload->mutable_drop_percentage();
- drop_percentage->set_numerator(parts_per_million);
- drop_percentage->set_denominator(args.drop_denominator);
- }
- }
- return assignment;
- }
-
void Start() {
grpc_core::MutexLock lock(&ads_mu_);
ads_done_ = false;
// A struct representing a client's subscription to a particular resource.
struct SubscriptionState {
- // Version that the client currently knows about.
- int current_version = 0;
// The queue upon which to place updates when the resource is updated.
UpdateQueue* update_queue;
};
using SubscriptionMap =
std::map<std::string /* type_url */, SubscriptionNameMap>;
- // A struct representing the current state for a resource:
- // - the version of the resource that is set by the SetResource() methods.
- // - a list of subscriptions interested in this resource.
+ // Sent state for a given resource type.
+ struct SentState {
+ int nonce = 0;
+ int resource_type_version = 0;
+ };
+
+ // A struct representing the current state for an individual resource.
struct ResourceState {
- int version = 0;
+ // The resource itself, if present.
absl::optional<google::protobuf::Any> resource;
+ // The resource type version that this resource was last updated in.
+ int resource_type_version = 0;
+ // A list of subscriptions to this resource.
std::set<SubscriptionState*> subscriptions;
};
- // A struct representing the current state for all resources:
- // LDS, CDS, EDS, and RDS for the class as a whole.
+ // The current state for all individual resources of a given type.
using ResourceNameMap =
std::map<std::string /* resource_name */, ResourceState>;
- using ResourceMap = std::map<std::string /* type_url */, ResourceNameMap>;
+
+ struct ResourceTypeState {
+ int resource_type_version = 0;
+ ResourceNameMap resource_name_map;
+ };
+
+ using ResourceMap = std::map<std::string /* type_url */, ResourceTypeState>;
template <class RpcApi, class DiscoveryRequest, class DiscoveryResponse>
class RpcService : public RpcApi::Service {
} else {
parent_->seen_v3_client_ = true;
}
+ // Balancer shouldn't receive the call credentials metadata.
+ EXPECT_EQ(context->client_metadata().find(g_kCallCredsMdKey),
+ context->client_metadata().end());
+ // Take a reference of the AdsServiceImpl object, which will go
+ // out of scope when this request handler returns. This ensures
+ // that the parent won't be destroyed until this stream is complete.
+ std::shared_ptr<AdsServiceImpl> ads_service_impl =
+ parent_->shared_from_this();
// Resources (type/name pairs) that have changed since the client
// subscribed to them.
UpdateQueue update_queue;
// Resources that the client will be subscribed to keyed by resource type
// url.
SubscriptionMap subscription_map;
- [&]() {
+ // Sent state for each resource type.
+ std::map<std::string /*type_url*/, SentState> sent_state_map;
+ // Spawn a thread to read requests from the stream.
+ // Requests will be delivered to this thread in a queue.
+ std::deque<DiscoveryRequest> requests;
+ bool stream_closed = false;
+ std::thread reader(std::bind(&RpcService::BlockingRead, this, stream,
+ &requests, &stream_closed));
+ // Main loop to process requests and updates.
+ while (true) {
+ // Boolean to keep track if the loop received any work to do: a
+ // request or an update; regardless whether a response was actually
+ // sent out.
+ bool did_work = false;
+ // Look for new requests and and decide what to handle.
+ absl::optional<DiscoveryResponse> response;
{
grpc_core::MutexLock lock(&parent_->ads_mu_);
- if (parent_->ads_done_) return;
- }
- // Balancer shouldn't receive the call credentials metadata.
- EXPECT_EQ(context->client_metadata().find(g_kCallCredsMdKey),
- context->client_metadata().end());
- // Current Version map keyed by resource type url.
- std::map<std::string, int> resource_type_version;
- // Creating blocking thread to read from stream.
- std::deque<DiscoveryRequest> requests;
- bool stream_closed = false;
- // Take a reference of the AdsServiceImpl object, reference will go
- // out of scope after the reader thread is joined.
- std::shared_ptr<AdsServiceImpl> ads_service_impl =
- parent_->shared_from_this();
- std::thread reader(std::bind(&RpcService::BlockingRead, this, stream,
- &requests, &stream_closed));
- // Main loop to look for requests and updates.
- while (true) {
- // Look for new requests and and decide what to handle.
- absl::optional<DiscoveryResponse> response;
- // Boolean to keep track if the loop received any work to do: a
- // request or an update; regardless whether a response was actually
- // sent out.
- bool did_work = false;
- {
- grpc_core::MutexLock lock(&parent_->ads_mu_);
- if (stream_closed) break;
- if (!requests.empty()) {
- DiscoveryRequest request = std::move(requests.front());
- requests.pop_front();
- did_work = true;
- gpr_log(GPR_INFO,
- "ADS[%p]: Received request for type %s with content %s",
- this, request.type_url().c_str(),
- request.DebugString().c_str());
- const std::string v3_resource_type =
- TypeUrlToV3(request.type_url());
- // As long as we are not in shutdown, identify ACK and NACK by
- // looking for version information and comparing it to nonce (this
- // server ensures they are always set to the same in a response.)
- auto it =
- parent_->resource_type_response_state_.find(v3_resource_type);
- if (it != parent_->resource_type_response_state_.end()) {
- if (!request.response_nonce().empty()) {
- it->second.state =
- (!request.version_info().empty() &&
- request.version_info() == request.response_nonce())
- ? ResponseState::ACKED
- : ResponseState::NACKED;
- }
- if (request.has_error_detail()) {
- it->second.error_message = request.error_detail().message();
- }
- }
- // As long as the test did not tell us to ignore this type of
- // request, look at all the resource names.
- if (parent_->resource_types_to_ignore_.find(v3_resource_type) ==
- parent_->resource_types_to_ignore_.end()) {
- auto& subscription_name_map =
- subscription_map[v3_resource_type];
- auto& resource_name_map =
- parent_->resource_map_[v3_resource_type];
- std::set<std::string> resources_in_current_request;
- std::set<std::string> resources_added_to_response;
- for (const std::string& resource_name :
- request.resource_names()) {
- resources_in_current_request.emplace(resource_name);
- auto& subscription_state =
- subscription_name_map[resource_name];
- auto& resource_state = resource_name_map[resource_name];
- // Subscribe if needed.
- parent_->MaybeSubscribe(v3_resource_type, resource_name,
- &subscription_state, &resource_state,
- &update_queue);
- // Send update if needed.
- if (ClientNeedsResourceUpdate(resource_state,
- &subscription_state)) {
- gpr_log(GPR_INFO,
- "ADS[%p]: Sending update for type=%s name=%s "
- "version=%d",
- this, request.type_url().c_str(),
- resource_name.c_str(), resource_state.version);
- resources_added_to_response.emplace(resource_name);
- if (!response.has_value()) response.emplace();
- if (resource_state.resource.has_value()) {
- auto* resource = response->add_resources();
- resource->CopyFrom(resource_state.resource.value());
- if (is_v2_) {
- resource->set_type_url(request.type_url());
- }
- }
- } else {
- gpr_log(GPR_INFO,
- "ADS[%p]: client does not need update for "
- "type=%s name=%s version=%d",
- this, request.type_url().c_str(),
- resource_name.c_str(), resource_state.version);
- }
- }
- // Process unsubscriptions for any resource no longer
- // present in the request's resource list.
- parent_->ProcessUnsubscriptions(
- v3_resource_type, resources_in_current_request,
- &subscription_name_map, &resource_name_map);
- // Send response if needed.
- if (!resources_added_to_response.empty()) {
- CompleteBuildingDiscoveryResponse(
- v3_resource_type, request.type_url(),
- ++resource_type_version[v3_resource_type],
- subscription_name_map, resources_added_to_response,
- &response.value());
- }
- }
- }
- }
- if (response.has_value()) {
- gpr_log(GPR_INFO, "ADS[%p]: Sending response: %s", this,
- response->DebugString().c_str());
- stream->Write(response.value());
- }
- response.reset();
- // Look for updates and decide what to handle.
- {
- grpc_core::MutexLock lock(&parent_->ads_mu_);
- if (!update_queue.empty()) {
- const std::string resource_type =
- std::move(update_queue.front().first);
- const std::string resource_name =
- std::move(update_queue.front().second);
- update_queue.pop_front();
- const std::string v2_resource_type = TypeUrlToV2(resource_type);
- did_work = true;
- gpr_log(GPR_INFO, "ADS[%p]: Received update for type=%s name=%s",
- this, resource_type.c_str(), resource_name.c_str());
- auto& subscription_name_map = subscription_map[resource_type];
- auto& resource_name_map = parent_->resource_map_[resource_type];
- auto it = subscription_name_map.find(resource_name);
- if (it != subscription_name_map.end()) {
- SubscriptionState& subscription_state = it->second;
- ResourceState& resource_state =
- resource_name_map[resource_name];
- if (ClientNeedsResourceUpdate(resource_state,
- &subscription_state)) {
- gpr_log(
- GPR_INFO,
- "ADS[%p]: Sending update for type=%s name=%s version=%d",
- this, resource_type.c_str(), resource_name.c_str(),
- resource_state.version);
- response.emplace();
- if (resource_state.resource.has_value()) {
- auto* resource = response->add_resources();
- resource->CopyFrom(resource_state.resource.value());
- if (is_v2_) {
- resource->set_type_url(v2_resource_type);
- }
- }
- CompleteBuildingDiscoveryResponse(
- resource_type, v2_resource_type,
- ++resource_type_version[resource_type],
- subscription_name_map, {resource_name},
- &response.value());
- }
- }
- }
+ // If the stream has been closed or our parent is being shut
+ // down, stop immediately.
+ if (stream_closed || parent_->ads_done_) break;
+ // Otherwise, see if there's a request to read from the queue.
+ if (!requests.empty()) {
+ DiscoveryRequest request = std::move(requests.front());
+ requests.pop_front();
+ did_work = true;
+ gpr_log(GPR_INFO,
+ "ADS[%p]: Received request for type %s with content %s",
+ this, request.type_url().c_str(),
+ request.DebugString().c_str());
+ const std::string v3_resource_type =
+ TypeUrlToV3(request.type_url());
+ SentState& sent_state = sent_state_map[v3_resource_type];
+ // Process request.
+ ProcessRequest(request, v3_resource_type, &update_queue,
+ &subscription_map, &sent_state, &response);
}
- if (response.has_value()) {
- gpr_log(GPR_INFO, "ADS[%p]: Sending update response: %s", this,
- response->DebugString().c_str());
- stream->Write(response.value());
+ }
+ if (response.has_value()) {
+ gpr_log(GPR_INFO, "ADS[%p]: Sending response: %s", this,
+ response->DebugString().c_str());
+ stream->Write(response.value());
+ }
+ response.reset();
+ // Look for updates and decide what to handle.
+ {
+ grpc_core::MutexLock lock(&parent_->ads_mu_);
+ if (!update_queue.empty()) {
+ const std::string resource_type =
+ std::move(update_queue.front().first);
+ const std::string resource_name =
+ std::move(update_queue.front().second);
+ update_queue.pop_front();
+ did_work = true;
+ SentState& sent_state = sent_state_map[resource_type];
+ ProcessUpdate(resource_type, resource_name, &subscription_map,
+ &sent_state, &response);
}
- // If we didn't find anything to do, delay before the next loop
- // iteration; otherwise, check whether we should exit and then
- // immediately continue.
- gpr_timespec deadline =
- grpc_timeout_milliseconds_to_deadline(did_work ? 0 : 10);
- {
- grpc_core::MutexLock lock(&parent_->ads_mu_);
- if (!parent_->ads_cond_.WaitUntil(
- &parent_->ads_mu_, [this] { return parent_->ads_done_; },
- deadline)) {
- break;
- }
+ }
+ if (response.has_value()) {
+ gpr_log(GPR_INFO, "ADS[%p]: Sending update response: %s", this,
+ response->DebugString().c_str());
+ stream->Write(response.value());
+ }
+ // If we didn't find anything to do, delay before the next loop
+ // iteration; otherwise, check whether we should exit and then
+ // immediately continue.
+ gpr_timespec deadline =
+ grpc_timeout_milliseconds_to_deadline(did_work ? 0 : 10);
+ {
+ grpc_core::MutexLock lock(&parent_->ads_mu_);
+ if (!parent_->ads_cond_.WaitUntil(
+ &parent_->ads_mu_, [this] { return parent_->ads_done_; },
+ deadline)) {
+ break;
}
}
- reader.join();
- }();
+ }
+ // Done with main loop. Clean up before returning.
+ // Join reader thread.
+ reader.join();
// Clean up any subscriptions that were still active when the call
// finished.
{
for (auto& q : subscription_name_map) {
const std::string& resource_name = q.first;
SubscriptionState& subscription_state = q.second;
- ResourceState& resource_state =
- parent_->resource_map_[type_url][resource_name];
+ ResourceNameMap& resource_name_map =
+ parent_->resource_map_[type_url].resource_name_map;
+ ResourceState& resource_state = resource_name_map[resource_name];
resource_state.subscriptions.erase(&subscription_state);
}
}
}
private:
- static std::string TypeUrlToV2(const std::string& resource_type) {
- if (resource_type == kLdsTypeUrl) return kLdsV2TypeUrl;
- if (resource_type == kRdsTypeUrl) return kRdsV2TypeUrl;
- if (resource_type == kCdsTypeUrl) return kCdsV2TypeUrl;
- if (resource_type == kEdsTypeUrl) return kEdsV2TypeUrl;
- return resource_type;
+ // Processes a response read from the client.
+ // Populates response if needed.
+ void ProcessRequest(const DiscoveryRequest& request,
+ const std::string& v3_resource_type,
+ UpdateQueue* update_queue,
+ SubscriptionMap* subscription_map,
+ SentState* sent_state,
+ absl::optional<DiscoveryResponse>* response) {
+ // Determine client resource type version.
+ int client_resource_type_version = 0;
+ if (!request.version_info().empty()) {
+ GPR_ASSERT(absl::SimpleAtoi(request.version_info(),
+ &client_resource_type_version));
+ }
+ // Check the nonce sent by the client, if any.
+ // (This will be absent on the first request on a stream.)
+ if (request.response_nonce().empty()) {
+ EXPECT_GE(client_resource_type_version,
+ parent_->resource_type_min_versions_[v3_resource_type])
+ << "resource_type: " << v3_resource_type;
+ } else {
+ int client_nonce;
+ GPR_ASSERT(absl::SimpleAtoi(request.response_nonce(), &client_nonce));
+ // Ignore requests with stale nonces.
+ if (client_nonce < sent_state->nonce) return;
+ // Check for ACK or NACK.
+ auto it = parent_->resource_type_response_state_.find(v3_resource_type);
+ if (it != parent_->resource_type_response_state_.end()) {
+ if (client_resource_type_version ==
+ sent_state->resource_type_version) {
+ it->second.state = ResponseState::ACKED;
+ it->second.error_message.clear();
+ gpr_log(GPR_INFO,
+ "ADS[%p]: client ACKed resource_type=%s version=%s", this,
+ request.type_url().c_str(), request.version_info().c_str());
+ } else {
+ it->second.state = ResponseState::NACKED;
+ EXPECT_EQ(request.error_detail().code(),
+ GRPC_STATUS_INVALID_ARGUMENT);
+ it->second.error_message = request.error_detail().message();
+ gpr_log(GPR_INFO,
+ "ADS[%p]: client NACKed resource_type=%s version=%s: %s",
+ this, request.type_url().c_str(),
+ request.version_info().c_str(),
+ it->second.error_message.c_str());
+ }
+ }
+ }
+ // Ignore resource types as requested by tests.
+ if (parent_->resource_types_to_ignore_.find(v3_resource_type) !=
+ parent_->resource_types_to_ignore_.end()) {
+ return;
+ }
+ // Look at all the resource names in the request.
+ auto& subscription_name_map = (*subscription_map)[v3_resource_type];
+ auto& resource_type_state = parent_->resource_map_[v3_resource_type];
+ auto& resource_name_map = resource_type_state.resource_name_map;
+ std::set<std::string> resources_in_current_request;
+ std::set<std::string> resources_added_to_response;
+ for (const std::string& resource_name : request.resource_names()) {
+ resources_in_current_request.emplace(resource_name);
+ auto& subscription_state = subscription_name_map[resource_name];
+ auto& resource_state = resource_name_map[resource_name];
+ // Subscribe if needed.
+ // Send the resource in the response if either (a) this is
+ // a new subscription or (b) there is an updated version of
+ // this resource to send.
+ if (parent_->MaybeSubscribe(v3_resource_type, resource_name,
+ &subscription_state, &resource_state,
+ update_queue) ||
+ ClientNeedsResourceUpdate(resource_type_state, resource_state,
+ client_resource_type_version,
+ &subscription_state)) {
+ gpr_log(GPR_INFO, "ADS[%p]: Sending update for type=%s name=%s", this,
+ request.type_url().c_str(), resource_name.c_str());
+ resources_added_to_response.emplace(resource_name);
+ if (!response->has_value()) response->emplace();
+ if (resource_state.resource.has_value()) {
+ auto* resource = (*response)->add_resources();
+ resource->CopyFrom(resource_state.resource.value());
+ if (is_v2_) {
+ resource->set_type_url(request.type_url());
+ }
+ }
+ } else {
+ gpr_log(GPR_INFO,
+ "ADS[%p]: client does not need update for type=%s name=%s",
+ this, request.type_url().c_str(), resource_name.c_str());
+ }
+ }
+ // Process unsubscriptions for any resource no longer
+ // present in the request's resource list.
+ parent_->ProcessUnsubscriptions(
+ v3_resource_type, resources_in_current_request,
+ &subscription_name_map, &resource_name_map);
+ // Construct response if needed.
+ if (!resources_added_to_response.empty()) {
+ CompleteBuildingDiscoveryResponse(
+ v3_resource_type, request.type_url(),
+ resource_type_state.resource_type_version, subscription_name_map,
+ resources_added_to_response, sent_state, &response->value());
+ }
}
- static std::string TypeUrlToV3(const std::string& resource_type) {
- if (resource_type == kLdsV2TypeUrl) return kLdsTypeUrl;
- if (resource_type == kRdsV2TypeUrl) return kRdsTypeUrl;
- if (resource_type == kCdsV2TypeUrl) return kCdsTypeUrl;
- if (resource_type == kEdsV2TypeUrl) return kEdsTypeUrl;
- return resource_type;
+ // Processes a resource update from the test.
+ // Populates response if needed.
+ void ProcessUpdate(const std::string& resource_type,
+ const std::string& resource_name,
+ SubscriptionMap* subscription_map, SentState* sent_state,
+ absl::optional<DiscoveryResponse>* response) {
+ const std::string v2_resource_type = TypeUrlToV2(resource_type);
+ gpr_log(GPR_INFO, "ADS[%p]: Received update for type=%s name=%s", this,
+ resource_type.c_str(), resource_name.c_str());
+ auto& subscription_name_map = (*subscription_map)[resource_type];
+ auto& resource_type_state = parent_->resource_map_[resource_type];
+ auto& resource_name_map = resource_type_state.resource_name_map;
+ auto it = subscription_name_map.find(resource_name);
+ if (it != subscription_name_map.end()) {
+ SubscriptionState& subscription_state = it->second;
+ ResourceState& resource_state = resource_name_map[resource_name];
+ if (ClientNeedsResourceUpdate(resource_type_state, resource_state,
+ sent_state->resource_type_version,
+ &subscription_state)) {
+ gpr_log(GPR_INFO, "ADS[%p]: Sending update for type=%s name=%s", this,
+ resource_type.c_str(), resource_name.c_str());
+ response->emplace();
+ if (resource_state.resource.has_value()) {
+ auto* resource = (*response)->add_resources();
+ resource->CopyFrom(resource_state.resource.value());
+ if (is_v2_) {
+ resource->set_type_url(v2_resource_type);
+ }
+ }
+ CompleteBuildingDiscoveryResponse(
+ resource_type, v2_resource_type,
+ resource_type_state.resource_type_version, subscription_name_map,
+ {resource_name}, sent_state, &response->value());
+ }
+ }
}
// Starting a thread to do blocking read on the stream until cancel.
*stream_closed = true;
}
- static void CheckBuildVersion(
- const ::envoy::api::v2::DiscoveryRequest& request) {
- EXPECT_FALSE(request.node().build_version().empty());
- }
-
- static void CheckBuildVersion(
- const ::envoy::service::discovery::v3::DiscoveryRequest& request) {}
-
// Completing the building a DiscoveryResponse by adding common information
// for all resources and by adding all subscribed resources for LDS and CDS.
void CompleteBuildingDiscoveryResponse(
const std::string& resource_type, const std::string& v2_resource_type,
const int version, const SubscriptionNameMap& subscription_name_map,
const std::set<std::string>& resources_added_to_response,
- DiscoveryResponse* response) {
+ SentState* sent_state, DiscoveryResponse* response) {
auto& response_state =
parent_->resource_type_response_state_[resource_type];
if (response_state.state == ResponseState::NOT_SENT) {
response_state.state = ResponseState::SENT;
}
response->set_type_url(is_v2_ ? v2_resource_type : resource_type);
- response->set_version_info(absl::StrCat(version));
- response->set_nonce(absl::StrCat(version));
+ response->set_version_info(std::to_string(version));
+ response->set_nonce(std::to_string(++sent_state->nonce));
if (resource_type == kLdsTypeUrl || resource_type == kCdsTypeUrl) {
// For LDS and CDS we must send back all subscribed resources
// (even the unchanged ones)
const std::string& resource_name = p.first;
if (resources_added_to_response.find(resource_name) ==
resources_added_to_response.end()) {
+ ResourceNameMap& resource_name_map =
+ parent_->resource_map_[resource_type].resource_name_map;
const ResourceState& resource_state =
- parent_->resource_map_[resource_type][resource_name];
+ resource_name_map[resource_name];
if (resource_state.resource.has_value()) {
auto* resource = response->add_resources();
resource->CopyFrom(resource_state.resource.value());
}
}
}
+ sent_state->resource_type_version = version;
+ }
+
+ static std::string TypeUrlToV2(const std::string& resource_type) {
+ if (resource_type == kLdsTypeUrl) return kLdsV2TypeUrl;
+ if (resource_type == kRdsTypeUrl) return kRdsV2TypeUrl;
+ if (resource_type == kCdsTypeUrl) return kCdsV2TypeUrl;
+ if (resource_type == kEdsTypeUrl) return kEdsV2TypeUrl;
+ return resource_type;
+ }
+
+ static std::string TypeUrlToV3(const std::string& resource_type) {
+ if (resource_type == kLdsV2TypeUrl) return kLdsTypeUrl;
+ if (resource_type == kRdsV2TypeUrl) return kRdsTypeUrl;
+ if (resource_type == kCdsV2TypeUrl) return kCdsTypeUrl;
+ if (resource_type == kEdsV2TypeUrl) return kEdsTypeUrl;
+ return resource_type;
+ }
+
+ static void CheckBuildVersion(
+ const ::envoy::api::v2::DiscoveryRequest& request) {
+ EXPECT_FALSE(request.node().build_version().empty());
}
+ static void CheckBuildVersion(
+ const ::envoy::service::discovery::v3::DiscoveryRequest& request) {}
+
AdsServiceImpl* parent_;
const bool is_v2_;
};
// Checks whether the client needs to receive a newer version of
- // the resource. If so, updates subscription_state->current_version and
- // returns true.
- static bool ClientNeedsResourceUpdate(const ResourceState& resource_state,
- SubscriptionState* subscription_state) {
- if (subscription_state->current_version < resource_state.version) {
- subscription_state->current_version = resource_state.version;
- return true;
- }
- return false;
+ // the resource.
+ static bool ClientNeedsResourceUpdate(
+ const ResourceTypeState& resource_type_state,
+ const ResourceState& resource_state, int client_resource_type_version,
+ SubscriptionState* subscription_state) {
+ return client_resource_type_version <
+ resource_type_state.resource_type_version &&
+ resource_state.resource_type_version <=
+ resource_type_state.resource_type_version;
}
// Subscribes to a resource if not already subscribed:
// 1. Sets the update_queue field in subscription_state.
// 2. Adds subscription_state to resource_state->subscriptions.
- void MaybeSubscribe(const std::string& resource_type,
+ bool MaybeSubscribe(const std::string& resource_type,
const std::string& resource_name,
SubscriptionState* subscription_state,
ResourceState* resource_state,
UpdateQueue* update_queue) {
// The update_queue will be null if we were not previously subscribed.
- if (subscription_state->update_queue != nullptr) return;
+ if (subscription_state->update_queue != nullptr) return false;
subscription_state->update_queue = update_queue;
resource_state->subscriptions.emplace(subscription_state);
gpr_log(GPR_INFO, "ADS[%p]: subscribe to resource type %s name %s state %p",
this, resource_type.c_str(), resource_name.c_str(),
&subscription_state);
+ return true;
}
// Removes subscriptions for resources no longer present in the
// Protect the members below.
grpc_core::Mutex ads_mu_;
bool ads_done_ = false;
- Listener default_listener_;
- RouteConfiguration default_route_config_;
- Cluster default_cluster_;
std::map<std::string /* type_url */, ResponseState>
resource_type_response_state_;
std::set<std::string /*resource_type*/> resource_types_to_ignore_;
+ std::map<std::string /*resource_type*/, int> resource_type_min_versions_;
// An instance data member containing the current state of all resources.
// Note that an entry will exist whenever either of the following is true:
// - The resource exists (i.e., has been created by SetResource() and has not
gpr_setenv("GRPC_XDS_BOOTSTRAP",
GetParam().use_v2() ? g_bootstrap_file_v2 : g_bootstrap_file_v3);
g_port_saver->Reset();
+ bool localhost_resolves_to_ipv4 = false;
+ bool localhost_resolves_to_ipv6 = false;
+ grpc_core::LocalhostResolves(&localhost_resolves_to_ipv4,
+ &localhost_resolves_to_ipv6);
+ ipv6_only_ = !localhost_resolves_to_ipv4 && localhost_resolves_to_ipv6;
response_generator_ =
grpc_core::MakeRefCounted<grpc_core::FakeResolverResponseGenerator>();
// Inject xDS channel response generator.
// ensures that each test can independently set the global channel
// args for the xDS channel.
grpc_core::internal::UnsetGlobalXdsClientForTest();
+ // Initialize default xDS resources.
+ // Construct LDS resource.
+ default_listener_.set_name(kServerName);
+ // Construct RDS resource.
+ default_route_config_.set_name(kDefaultRouteConfigurationName);
+ auto* virtual_host = default_route_config_.add_virtual_hosts();
+ virtual_host->add_domains("*");
+ auto* route = virtual_host->add_routes();
+ route->mutable_match()->set_prefix("");
+ route->mutable_route()->set_cluster(kDefaultClusterName);
+ // Construct CDS resource.
+ default_cluster_.set_name(kDefaultClusterName);
+ default_cluster_.set_type(Cluster::EDS);
+ auto* eds_config = default_cluster_.mutable_eds_cluster_config();
+ eds_config->mutable_eds_config()->mutable_ads();
+ eds_config->set_service_name(kDefaultEdsServiceName);
+ default_cluster_.set_lb_policy(Cluster::ROUND_ROBIN);
+ if (GetParam().enable_load_reporting()) {
+ default_cluster_.mutable_lrs_server()->mutable_self();
+ }
// Start the backends.
for (size_t i = 0; i < num_backends_; ++i) {
backends_.emplace_back(new BackendServerThread);
? client_load_reporting_interval_seconds_
: 0));
balancers_.back()->Start();
- if (GetParam().enable_rds_testing()) {
- balancers_[i]->ads_service()->SetLdsToUseDynamicRds();
- }
+ // Initialize resources.
+ SetListenerAndRouteConfiguration(i, default_listener_,
+ default_route_config_);
+ balancers_.back()->ads_service()->SetCdsResource(default_cluster_);
}
ResetStub();
}
}
std::shared_ptr<Channel> CreateChannel(
- int failover_timeout = 0, const char* server_name = kServerName) {
+ int failover_timeout = 0, const char* server_name = kServerName,
+ grpc_core::FakeResolverResponseGenerator* response_generator = nullptr) {
ChannelArguments args;
if (failover_timeout > 0) {
args.SetInt(GRPC_ARG_PRIORITY_FAILOVER_TIMEOUT_MS, failover_timeout);
// If the parent channel is using the fake resolver, we inject the
// response generator here.
if (!GetParam().use_xds_resolver()) {
+ if (response_generator == nullptr) {
+ response_generator = response_generator_.get();
+ }
args.SetPointer(GRPC_ARG_FAKE_RESOLVER_RESPONSE_GENERATOR,
- response_generator_.get());
+ response_generator);
}
std::string uri = absl::StrCat(
GetParam().use_xds_resolver() ? "xds" : "fake", ":///", server_name);
RpcOptions& set_metadata(
std::vector<std::pair<std::string, std::string>> rpc_metadata) {
- metadata = rpc_metadata;
+ metadata = std::move(rpc_metadata);
return *this;
}
};
for (size_t i = start_index; i < stop_index; ++i) {
switch (rpc_options.service) {
case SERVICE_ECHO:
- if (backends_[i]->backend_service()->request_count() == 0)
+ if (backends_[i]->backend_service()->request_count() == 0) {
return false;
+ }
break;
case SERVICE_ECHO1:
- if (backends_[i]->backend_service1()->request_count() == 0)
+ if (backends_[i]->backend_service1()->request_count() == 0) {
return false;
+ }
break;
case SERVICE_ECHO2:
- if (backends_[i]->backend_service2()->request_count() == 0)
+ if (backends_[i]->backend_service2()->request_count() == 0) {
return false;
+ }
break;
}
}
const std::vector<int>& ports) {
grpc_core::ServerAddressList addresses;
for (int port : ports) {
- std::string lb_uri_str = absl::StrCat("ipv4:127.0.0.1:", port);
+ std::string lb_uri_str =
+ absl::StrCat(ipv6_only_ ? "ipv6:[::1]:" : "ipv4:127.0.0.1:", port);
grpc_uri* lb_uri = grpc_uri_parse(lb_uri_str.c_str(), true);
GPR_ASSERT(lb_uri != nullptr);
grpc_resolved_address address;
return addresses;
}
- void SetNextResolution(const std::vector<int>& ports) {
+ void SetNextResolution(
+ const std::vector<int>& ports,
+ grpc_core::FakeResolverResponseGenerator* response_generator = nullptr) {
if (GetParam().use_xds_resolver()) return; // Not used with xds resolver.
grpc_core::ExecCtx exec_ctx;
grpc_core::Resolver::Result result;
grpc_core::ServiceConfig::Create(nullptr, service_config_json, &error);
ASSERT_EQ(error, GRPC_ERROR_NONE) << grpc_error_string(error);
ASSERT_NE(result.service_config.get(), nullptr);
- response_generator_->SetResponse(std::move(result));
+ if (response_generator == nullptr) {
+ response_generator = response_generator_.get();
+ }
+ response_generator->SetResponse(std::move(result));
}
void SetNextResolutionForLbChannelAllBalancers(
}
}
- void CheckRpcSendFailure(const size_t times = 1,
- const RpcOptions& rpc_options = RpcOptions()) {
+ void CheckRpcSendFailure(
+ const size_t times = 1, const RpcOptions& rpc_options = RpcOptions(),
+ const StatusCode expected_error_code = StatusCode::OK) {
for (size_t i = 0; i < times; ++i) {
const Status status = SendRpc(rpc_options);
EXPECT_FALSE(status.ok());
+ if (expected_error_code != StatusCode::OK) {
+ EXPECT_EQ(expected_error_code, status.error_code());
+ }
+ }
+ }
+
+ static Listener BuildListener(const RouteConfiguration& route_config) {
+ HttpConnectionManager http_connection_manager;
+ *(http_connection_manager.mutable_route_config()) = route_config;
+ Listener listener;
+ listener.set_name(kServerName);
+ listener.mutable_api_listener()->mutable_api_listener()->PackFrom(
+ http_connection_manager);
+ return listener;
+ }
+
+ ClusterLoadAssignment BuildEdsResource(
+ const AdsServiceImpl::EdsResourceArgs& args,
+ const char* eds_service_name = kDefaultEdsServiceName) {
+ ClusterLoadAssignment assignment;
+ assignment.set_cluster_name(eds_service_name);
+ for (const auto& locality : args.locality_list) {
+ auto* endpoints = assignment.add_endpoints();
+ endpoints->mutable_load_balancing_weight()->set_value(locality.lb_weight);
+ endpoints->set_priority(locality.priority);
+ endpoints->mutable_locality()->set_region(kDefaultLocalityRegion);
+ endpoints->mutable_locality()->set_zone(kDefaultLocalityZone);
+ endpoints->mutable_locality()->set_sub_zone(locality.sub_zone);
+ for (size_t i = 0; i < locality.ports.size(); ++i) {
+ const int& port = locality.ports[i];
+ auto* lb_endpoints = endpoints->add_lb_endpoints();
+ if (locality.health_statuses.size() > i &&
+ locality.health_statuses[i] != HealthStatus::UNKNOWN) {
+ lb_endpoints->set_health_status(locality.health_statuses[i]);
+ }
+ auto* endpoint = lb_endpoints->mutable_endpoint();
+ auto* address = endpoint->mutable_address();
+ auto* socket_address = address->mutable_socket_address();
+ socket_address->set_address(ipv6_only_ ? "::1" : "127.0.0.1");
+ socket_address->set_port_value(port);
+ }
+ }
+ if (!args.drop_categories.empty()) {
+ auto* policy = assignment.mutable_policy();
+ for (const auto& p : args.drop_categories) {
+ const std::string& name = p.first;
+ const uint32_t parts_per_million = p.second;
+ auto* drop_overload = policy->add_drop_overloads();
+ drop_overload->set_category(name);
+ auto* drop_percentage = drop_overload->mutable_drop_percentage();
+ drop_percentage->set_numerator(parts_per_million);
+ drop_percentage->set_denominator(args.drop_denominator);
+ }
+ }
+ return assignment;
+ }
+
+ void SetListenerAndRouteConfiguration(
+ int idx, Listener listener, const RouteConfiguration& route_config) {
+ auto* api_listener =
+ listener.mutable_api_listener()->mutable_api_listener();
+ HttpConnectionManager http_connection_manager;
+ api_listener->UnpackTo(&http_connection_manager);
+ if (GetParam().enable_rds_testing()) {
+ auto* rds = http_connection_manager.mutable_rds();
+ rds->set_route_config_name(kDefaultRouteConfigurationName);
+ rds->mutable_config_source()->mutable_ads();
+ balancers_[idx]->ads_service()->SetRdsResource(route_config);
+ } else {
+ *http_connection_manager.mutable_route_config() = route_config;
}
+ api_listener->PackFrom(http_connection_manager);
+ balancers_[idx]->ads_service()->SetLdsResource(listener);
}
void SetRouteConfiguration(int idx, const RouteConfiguration& route_config) {
balancers_[idx]->ads_service()->SetRdsResource(route_config);
} else {
balancers_[idx]->ads_service()->SetLdsResource(
- AdsServiceImpl::BuildListener(route_config));
+ BuildListener(route_config));
}
}
// by ServerThread::Serve from firing before the wait below is hit.
grpc_core::MutexLock lock(&mu);
grpc_core::CondVar cond;
- thread_.reset(
- new std::thread(std::bind(&ServerThread::Serve, this, &mu, &cond)));
+ thread_ = absl::make_unique<std::thread>(
+ std::bind(&ServerThread::Serve, this, &mu, &cond));
cond.Wait(&mu);
gpr_log(GPR_INFO, "%s server startup complete", Type());
}
class BalancerServerThread : public ServerThread {
public:
explicit BalancerServerThread(int client_load_reporting_interval = 0)
- : ads_service_(new AdsServiceImpl(client_load_reporting_interval > 0)),
+ : ads_service_(new AdsServiceImpl()),
lrs_service_(new LrsServiceImpl(client_load_reporting_interval)) {}
AdsServiceImpl* ads_service() { return ads_service_.get(); }
std::shared_ptr<LrsServiceImpl> lrs_service_;
};
- const size_t num_backends_;
- const size_t num_balancers_;
- const int client_load_reporting_interval_seconds_;
- std::shared_ptr<Channel> channel_;
- std::unique_ptr<grpc::testing::EchoTestService::Stub> stub_;
- std::unique_ptr<grpc::testing::EchoTest1Service::Stub> stub1_;
- std::unique_ptr<grpc::testing::EchoTest2Service::Stub> stub2_;
- std::vector<std::unique_ptr<BackendServerThread>> backends_;
- std::vector<std::unique_ptr<BalancerServerThread>> balancers_;
- grpc_core::RefCountedPtr<grpc_core::FakeResolverResponseGenerator>
- response_generator_;
- grpc_core::RefCountedPtr<grpc_core::FakeResolverResponseGenerator>
- lb_channel_response_generator_;
- int xds_resource_does_not_exist_timeout_ms_ = 0;
- absl::InlinedVector<grpc_arg, 2> xds_channel_args_to_add_;
- grpc_channel_args xds_channel_args_;
+ class LongRunningRpc {
+ public:
+ void StartRpc(grpc::testing::EchoTestService::Stub* stub) {
+ sender_thread_ = std::thread([this, stub]() {
+ EchoResponse response;
+ EchoRequest request;
+ request.mutable_param()->set_client_cancel_after_us(1 * 1000 * 1000);
+ request.set_message(kRequestMessage);
+ (void)stub->Echo(&context_, request, &response);
+ });
+ }
+
+ void CancelRpc() {
+ context_.TryCancel();
+ sender_thread_.join();
+ }
+
+ private:
+ std::thread sender_thread_;
+ ClientContext context_;
+ };
+
+ const size_t num_backends_;
+ const size_t num_balancers_;
+ const int client_load_reporting_interval_seconds_;
+ bool ipv6_only_ = false;
+ std::shared_ptr<Channel> channel_;
+ std::unique_ptr<grpc::testing::EchoTestService::Stub> stub_;
+ std::unique_ptr<grpc::testing::EchoTest1Service::Stub> stub1_;
+ std::unique_ptr<grpc::testing::EchoTest2Service::Stub> stub2_;
+ std::vector<std::unique_ptr<BackendServerThread>> backends_;
+ std::vector<std::unique_ptr<BalancerServerThread>> balancers_;
+ grpc_core::RefCountedPtr<grpc_core::FakeResolverResponseGenerator>
+ response_generator_;
+ grpc_core::RefCountedPtr<grpc_core::FakeResolverResponseGenerator>
+ lb_channel_response_generator_;
+ int xds_resource_does_not_exist_timeout_ms_ = 0;
+ absl::InlinedVector<grpc_arg, 2> xds_channel_args_to_add_;
+ grpc_channel_args xds_channel_args_;
+
+ Listener default_listener_;
+ RouteConfiguration default_route_config_;
+ Cluster default_cluster_;
};
class BasicTest : public XdsEnd2endTest {
{"locality0", GetBackendPorts()},
});
balancers_[0]->ads_service()->SetEdsResource(
- AdsServiceImpl::BuildEdsResource(args, DefaultEdsServiceName()));
+ BuildEdsResource(args, DefaultEdsServiceName()));
// Make sure that trying to connect works without a call.
channel_->GetState(true /* try_to_connect */);
// We need to wait for all backends to come online.
{HealthStatus::DRAINING}},
});
balancers_[0]->ads_service()->SetEdsResource(
- AdsServiceImpl::BuildEdsResource(args, DefaultEdsServiceName()));
+ BuildEdsResource(args, DefaultEdsServiceName()));
// Make sure that trying to connect works without a call.
channel_->GetState(true /* try_to_connect */);
// We need to wait for all backends to come online.
});
const size_t kNumRpcsPerAddress = 10;
balancers_[0]->ads_service()->SetEdsResource(
- AdsServiceImpl::BuildEdsResource(args, DefaultEdsServiceName()));
+ BuildEdsResource(args, DefaultEdsServiceName()));
// We need to wait for the backend to come online.
WaitForBackend(0);
// Send kNumRpcsPerAddress RPCs per server.
empty_locality,
});
balancers_[0]->ads_service()->SetEdsResource(
- AdsServiceImpl::BuildEdsResource(args, DefaultEdsServiceName()));
+ BuildEdsResource(args, DefaultEdsServiceName()));
// Send non-empty serverlist only after kServerlistDelayMs.
args = AdsServiceImpl::EdsResourceArgs({
{"locality0", GetBackendPorts()},
});
- std::thread delayed_resource_setter(
- std::bind(&BasicTest::SetEdsResourceWithDelay, this, 0,
- AdsServiceImpl::BuildEdsResource(args, DefaultEdsServiceName()),
- kServerlistDelayMs));
+ std::thread delayed_resource_setter(std::bind(
+ &BasicTest::SetEdsResourceWithDelay, this, 0,
+ BuildEdsResource(args, DefaultEdsServiceName()), kServerlistDelayMs));
const auto t0 = system_clock::now();
// Client will block: LB will initially send empty serverlist.
CheckRpcSendOk(
{"locality0", ports},
});
balancers_[0]->ads_service()->SetEdsResource(
- AdsServiceImpl::BuildEdsResource(args, DefaultEdsServiceName()));
+ BuildEdsResource(args, DefaultEdsServiceName()));
const Status status = SendRpc();
// The error shouldn't be DEADLINE_EXCEEDED.
EXPECT_EQ(StatusCode::UNAVAILABLE, status.error_code());
{"locality0", GetBackendPorts()},
});
balancers_[0]->ads_service()->SetEdsResource(
- AdsServiceImpl::BuildEdsResource(args, DefaultEdsServiceName()));
+ BuildEdsResource(args, DefaultEdsServiceName()));
WaitForAllBackends();
// Stop backends. RPCs should fail.
ShutdownAllBackends();
{"locality0", GetBackendPorts()},
});
balancers_[0]->ads_service()->SetEdsResource(
- AdsServiceImpl::BuildEdsResource(args, DefaultEdsServiceName()));
+ BuildEdsResource(args, DefaultEdsServiceName()));
// Wait for all backends to come online.
WaitForAllBackends();
// Send kNumRpcsPerAddress RPCs per server, but send an EDS update in
for (size_t i = 0; i < kNumRpcsPerAddress; ++i) {
CheckRpcSendOk(2);
balancers_[0]->ads_service()->SetEdsResource(
- AdsServiceImpl::BuildEdsResource(args, DefaultEdsServiceName()));
+ BuildEdsResource(args, DefaultEdsServiceName()));
CheckRpcSendOk(2);
}
// Each backend should have gotten the right number of requests.
using XdsResolverOnlyTest = BasicTest;
+TEST_P(XdsResolverOnlyTest, ResourceTypeVersionPersistsAcrossStreamRestarts) {
+ SetNextResolution({});
+ SetNextResolutionForLbChannelAllBalancers();
+ AdsServiceImpl::EdsResourceArgs args({
+ {"locality0", GetBackendPorts(0, 1)},
+ });
+ balancers_[0]->ads_service()->SetEdsResource(BuildEdsResource(args));
+ // Wait for backends to come online.
+ WaitForAllBackends(0, 1);
+ // Stop balancer.
+ balancers_[0]->Shutdown();
+ // Tell balancer to require minimum version 1 for all resource types.
+ balancers_[0]->ads_service()->SetResourceMinVersion(kLdsTypeUrl, 1);
+ balancers_[0]->ads_service()->SetResourceMinVersion(kRdsTypeUrl, 1);
+ balancers_[0]->ads_service()->SetResourceMinVersion(kCdsTypeUrl, 1);
+ balancers_[0]->ads_service()->SetResourceMinVersion(kEdsTypeUrl, 1);
+ // Update backend, just so we can be sure that the client has
+ // reconnected to the balancer.
+ AdsServiceImpl::EdsResourceArgs args2({
+ {"locality0", GetBackendPorts(1, 2)},
+ });
+ balancers_[0]->ads_service()->SetEdsResource(BuildEdsResource(args2));
+ // Restart balancer.
+ balancers_[0]->Start();
+ // Make sure client has reconnected.
+ WaitForAllBackends(1, 2);
+}
+
// Tests switching over from one cluster to another.
TEST_P(XdsResolverOnlyTest, ChangeClusters) {
const char* kNewClusterName = "new_cluster_name";
AdsServiceImpl::EdsResourceArgs args({
{"locality0", GetBackendPorts(0, 2)},
});
- balancers_[0]->ads_service()->SetEdsResource(
- AdsServiceImpl::BuildEdsResource(args));
+ balancers_[0]->ads_service()->SetEdsResource(BuildEdsResource(args));
// We need to wait for all backends to come online.
WaitForAllBackends(0, 2);
// Populate new EDS resource.
{"locality0", GetBackendPorts(2, 4)},
});
balancers_[0]->ads_service()->SetEdsResource(
- AdsServiceImpl::BuildEdsResource(args2, kNewEdsServiceName));
+ BuildEdsResource(args2, kNewEdsServiceName));
// Populate new CDS resource.
- Cluster new_cluster = balancers_[0]->ads_service()->default_cluster();
+ Cluster new_cluster = default_cluster_;
new_cluster.set_name(kNewClusterName);
new_cluster.mutable_eds_cluster_config()->set_service_name(
kNewEdsServiceName);
balancers_[0]->ads_service()->SetCdsResource(new_cluster);
// Change RDS resource to point to new cluster.
- RouteConfiguration new_route_config =
- balancers_[0]->ads_service()->default_route_config();
+ RouteConfiguration new_route_config = default_route_config_;
new_route_config.mutable_virtual_hosts(0)
->mutable_routes(0)
->mutable_route()
->set_cluster(kNewClusterName);
- Listener listener =
- balancers_[0]->ads_service()->BuildListener(new_route_config);
- balancers_[0]->ads_service()->SetLdsResource(listener);
+ SetListenerAndRouteConfiguration(0, default_listener_, new_route_config);
// Wait for all new backends to be used.
std::tuple<int, int, int> counts = WaitForAllBackends(2, 4);
// Make sure no RPCs failed in the transition.
AdsServiceImpl::EdsResourceArgs args({
{"locality0", GetBackendPorts()},
});
- balancers_[0]->ads_service()->SetEdsResource(
- AdsServiceImpl::BuildEdsResource(args));
+ balancers_[0]->ads_service()->SetEdsResource(BuildEdsResource(args));
// We need to wait for all backends to come online.
WaitForAllBackends();
// Unset CDS resource.
// Tests that we restart all xDS requests when we reestablish the ADS call.
TEST_P(XdsResolverOnlyTest, RestartsRequestsUponReconnection) {
- balancers_[0]->ads_service()->SetLdsToUseDynamicRds();
+ // Manually configure use of RDS.
+ auto listener = default_listener_;
+ HttpConnectionManager http_connection_manager;
+ auto* rds = http_connection_manager.mutable_rds();
+ rds->set_route_config_name(kDefaultRouteConfigurationName);
+ rds->mutable_config_source()->mutable_ads();
+ listener.mutable_api_listener()->mutable_api_listener()->PackFrom(
+ http_connection_manager);
+ balancers_[0]->ads_service()->SetLdsResource(listener);
+ balancers_[0]->ads_service()->SetRdsResource(default_route_config_);
const char* kNewClusterName = "new_cluster_name";
const char* kNewEdsServiceName = "new_eds_service_name";
SetNextResolution({});
AdsServiceImpl::EdsResourceArgs args({
{"locality0", GetBackendPorts(0, 2)},
});
- balancers_[0]->ads_service()->SetEdsResource(
- AdsServiceImpl::BuildEdsResource(args));
+ balancers_[0]->ads_service()->SetEdsResource(BuildEdsResource(args));
// We need to wait for all backends to come online.
WaitForAllBackends(0, 2);
// Now shut down and restart the balancer. When the client
{"locality0", GetBackendPorts(2, 4)},
});
balancers_[0]->ads_service()->SetEdsResource(
- AdsServiceImpl::BuildEdsResource(args2, kNewEdsServiceName));
+ BuildEdsResource(args2, kNewEdsServiceName));
// Populate new CDS resource.
- Cluster new_cluster = balancers_[0]->ads_service()->default_cluster();
+ Cluster new_cluster = default_cluster_;
new_cluster.set_name(kNewClusterName);
new_cluster.mutable_eds_cluster_config()->set_service_name(
kNewEdsServiceName);
balancers_[0]->ads_service()->SetCdsResource(new_cluster);
// Change RDS resource to point to new cluster.
- RouteConfiguration new_route_config =
- balancers_[0]->ads_service()->default_route_config();
+ RouteConfiguration new_route_config = default_route_config_;
new_route_config.mutable_virtual_hosts(0)
->mutable_routes(0)
->mutable_route()
}
TEST_P(XdsResolverOnlyTest, DefaultRouteSpecifiesSlashPrefix) {
- RouteConfiguration route_config =
- balancers_[0]->ads_service()->default_route_config();
+ RouteConfiguration route_config = default_route_config_;
route_config.mutable_virtual_hosts(0)
->mutable_routes(0)
->mutable_match()
->set_prefix("/");
- balancers_[0]->ads_service()->SetLdsResource(
- AdsServiceImpl::BuildListener(route_config));
+ SetListenerAndRouteConfiguration(0, default_listener_, route_config);
SetNextResolution({});
SetNextResolutionForLbChannelAllBalancers();
AdsServiceImpl::EdsResourceArgs args({
{"locality0", GetBackendPorts()},
});
- balancers_[0]->ads_service()->SetEdsResource(
- AdsServiceImpl::BuildEdsResource(args));
+ balancers_[0]->ads_service()->SetEdsResource(BuildEdsResource(args));
// We need to wait for all backends to come online.
WaitForAllBackends();
}
TEST_P(XdsResolverOnlyTest, CircuitBreaking) {
- class TestRpc {
- public:
- TestRpc() {}
-
- void StartRpc(grpc::testing::EchoTestService::Stub* stub) {
- sender_thread_ = std::thread([this, stub]() {
- EchoResponse response;
- EchoRequest request;
- request.mutable_param()->set_client_cancel_after_us(1 * 1000 * 1000);
- request.set_message(kRequestMessage);
- status_ = stub->Echo(&context_, request, &response);
- });
- }
-
- void CancelRpc() {
- context_.TryCancel();
- sender_thread_.join();
- }
-
- private:
- std::thread sender_thread_;
- ClientContext context_;
- Status status_;
- };
-
gpr_setenv("GRPC_XDS_EXPERIMENTAL_CIRCUIT_BREAKING", "true");
constexpr size_t kMaxConcurrentRequests = 10;
SetNextResolution({});
AdsServiceImpl::EdsResourceArgs args({
{"locality0", GetBackendPorts(0, 1)},
});
- balancers_[0]->ads_service()->SetEdsResource(
- AdsServiceImpl::BuildEdsResource(args));
+ balancers_[0]->ads_service()->SetEdsResource(BuildEdsResource(args));
// Update CDS resource to set max concurrent request.
CircuitBreakers circuit_breaks;
- Cluster cluster = balancers_[0]->ads_service()->default_cluster();
+ Cluster cluster = default_cluster_;
auto* threshold = cluster.mutable_circuit_breakers()->add_thresholds();
threshold->set_priority(RoutingPriority::DEFAULT);
threshold->mutable_max_requests()->set_value(kMaxConcurrentRequests);
balancers_[0]->ads_service()->SetCdsResource(cluster);
// Send exactly max_concurrent_requests long RPCs.
- TestRpc rpcs[kMaxConcurrentRequests];
+ LongRunningRpc rpcs[kMaxConcurrentRequests];
for (size_t i = 0; i < kMaxConcurrentRequests; ++i) {
rpcs[i].StartRpc(stub_.get());
}
gpr_unsetenv("GRPC_XDS_EXPERIMENTAL_CIRCUIT_BREAKING");
}
-TEST_P(XdsResolverOnlyTest, CircuitBreakingDisabled) {
- class TestRpc {
- public:
- TestRpc() {}
-
- void StartRpc(grpc::testing::EchoTestService::Stub* stub) {
- sender_thread_ = std::thread([this, stub]() {
- EchoResponse response;
- EchoRequest request;
- request.mutable_param()->set_client_cancel_after_us(1 * 1000 * 1000);
- request.set_message(kRequestMessage);
- status_ = stub->Echo(&context_, request, &response);
- });
- }
-
- void CancelRpc() {
- context_.TryCancel();
- sender_thread_.join();
- }
-
- private:
- std::thread sender_thread_;
- ClientContext context_;
- Status status_;
- };
+TEST_P(XdsResolverOnlyTest, CircuitBreakingMultipleChannelsShareCallCounter) {
+ gpr_setenv("GRPC_XDS_EXPERIMENTAL_CIRCUIT_BREAKING", "true");
+ constexpr size_t kMaxConcurrentRequests = 10;
+ // Populate new EDS resources.
+ AdsServiceImpl::EdsResourceArgs args({
+ {"locality0", GetBackendPorts(0, 1)},
+ });
+ balancers_[0]->ads_service()->SetEdsResource(BuildEdsResource(args));
+ // Update CDS resource to set max concurrent request.
+ CircuitBreakers circuit_breaks;
+ Cluster cluster = default_cluster_;
+ auto* threshold = cluster.mutable_circuit_breakers()->add_thresholds();
+ threshold->set_priority(RoutingPriority::DEFAULT);
+ threshold->mutable_max_requests()->set_value(kMaxConcurrentRequests);
+ balancers_[0]->ads_service()->SetCdsResource(cluster);
+ // Create second channel.
+ auto response_generator2 =
+ grpc_core::MakeRefCounted<grpc_core::FakeResolverResponseGenerator>();
+ auto channel2 = CreateChannel(
+ /*failover_timeout=*/0, /*server_name=*/kServerName,
+ response_generator2.get());
+ auto stub2 = grpc::testing::EchoTestService::NewStub(channel2);
+ // Set resolution results for both channels and for the xDS channel.
+ SetNextResolution({});
+ SetNextResolution({}, response_generator2.get());
+ SetNextResolutionForLbChannelAllBalancers();
+ // Send exactly max_concurrent_requests long RPCs, alternating between
+ // the two channels.
+ LongRunningRpc rpcs[kMaxConcurrentRequests];
+ for (size_t i = 0; i < kMaxConcurrentRequests; ++i) {
+ rpcs[i].StartRpc(i % 2 == 0 ? stub_.get() : stub2.get());
+ }
+ // Wait for all RPCs to be in flight.
+ while (backends_[0]->backend_service()->RpcsWaitingForClientCancel() <
+ kMaxConcurrentRequests) {
+ gpr_sleep_until(gpr_time_add(gpr_now(GPR_CLOCK_REALTIME),
+ gpr_time_from_micros(1 * 1000, GPR_TIMESPAN)));
+ }
+ // Sending a RPC now should fail, the error message should tell us
+ // we hit the max concurrent requests limit and got dropped.
+ Status status = SendRpc();
+ EXPECT_FALSE(status.ok());
+ EXPECT_EQ(status.error_message(), "Call dropped by load balancing policy");
+ // Cancel one RPC to allow another one through
+ rpcs[0].CancelRpc();
+ status = SendRpc();
+ EXPECT_TRUE(status.ok());
+ for (size_t i = 1; i < kMaxConcurrentRequests; ++i) {
+ rpcs[i].CancelRpc();
+ }
+ // Make sure RPCs go to the correct backend:
+ EXPECT_EQ(kMaxConcurrentRequests + 1,
+ backends_[0]->backend_service()->request_count());
+ gpr_unsetenv("GRPC_XDS_EXPERIMENTAL_CIRCUIT_BREAKING");
+}
+TEST_P(XdsResolverOnlyTest, CircuitBreakingDisabled) {
constexpr size_t kMaxConcurrentRequests = 10;
SetNextResolution({});
SetNextResolutionForLbChannelAllBalancers();
AdsServiceImpl::EdsResourceArgs args({
{"locality0", GetBackendPorts(0, 1)},
});
- balancers_[0]->ads_service()->SetEdsResource(
- AdsServiceImpl::BuildEdsResource(args));
+ balancers_[0]->ads_service()->SetEdsResource(BuildEdsResource(args));
// Update CDS resource to set max concurrent request.
CircuitBreakers circuit_breaks;
- Cluster cluster = balancers_[0]->ads_service()->default_cluster();
+ Cluster cluster = default_cluster_;
auto* threshold = cluster.mutable_circuit_breakers()->add_thresholds();
threshold->set_priority(RoutingPriority::DEFAULT);
threshold->mutable_max_requests()->set_value(kMaxConcurrentRequests);
balancers_[0]->ads_service()->SetCdsResource(cluster);
// Send exactly max_concurrent_requests long RPCs.
- TestRpc rpcs[kMaxConcurrentRequests];
+ LongRunningRpc rpcs[kMaxConcurrentRequests];
for (size_t i = 0; i < kMaxConcurrentRequests; ++i) {
rpcs[i].StartRpc(stub_.get());
}
TEST_P(XdsResolverOnlyTest, MultipleChannelsShareXdsClient) {
const char* kNewServerName = "new-server.example.com";
- Listener listener = balancers_[0]->ads_service()->default_listener();
+ Listener listener = default_listener_;
listener.set_name(kNewServerName);
- balancers_[0]->ads_service()->SetLdsResource(listener);
+ SetListenerAndRouteConfiguration(0, listener, default_route_config_);
SetNextResolution({});
SetNextResolutionForLbChannelAllBalancers();
AdsServiceImpl::EdsResourceArgs args({
{"locality0", GetBackendPorts()},
});
- balancers_[0]->ads_service()->SetEdsResource(
- AdsServiceImpl::BuildEdsResource(args));
+ balancers_[0]->ads_service()->SetEdsResource(BuildEdsResource(args));
WaitForAllBackends();
// Create second channel and tell it to connect to kNewServerName.
auto channel2 = CreateChannel(/*failover_timeout=*/0, kNewServerName);
AdsServiceImpl::EdsResourceArgs args({
{"locality0", GetBackendPorts(0, 2)},
});
- balancers_[0]->ads_service()->SetEdsResource(
- AdsServiceImpl::BuildEdsResource(args));
+ balancers_[0]->ads_service()->SetEdsResource(BuildEdsResource(args));
// cluster kNewClusterName -> locality1 -> backends 2 and 3
AdsServiceImpl::EdsResourceArgs args2({
{"locality1", GetBackendPorts(2, 4)},
});
balancers_[0]->ads_service()->SetEdsResource(
- AdsServiceImpl::BuildEdsResource(args2, kNewEdsServiceName));
+ BuildEdsResource(args2, kNewEdsServiceName));
// CDS resource for kNewClusterName.
- Cluster new_cluster = balancers_[0]->ads_service()->default_cluster();
+ Cluster new_cluster = default_cluster_;
new_cluster.set_name(kNewClusterName);
new_cluster.mutable_eds_cluster_config()->set_service_name(
kNewEdsServiceName);
::testing::Property(&ClientStats::total_dropped_requests,
num_drops))));
// Change RDS resource to point to new cluster.
- RouteConfiguration new_route_config =
- balancers_[0]->ads_service()->default_route_config();
+ RouteConfiguration new_route_config = default_route_config_;
new_route_config.mutable_virtual_hosts(0)
->mutable_routes(0)
->mutable_route()
->set_cluster(kNewClusterName);
- Listener listener =
- balancers_[0]->ads_service()->BuildListener(new_route_config);
- balancers_[0]->ads_service()->SetLdsResource(listener);
+ SetListenerAndRouteConfiguration(0, default_listener_, new_route_config);
// Wait for all new backends to be used.
std::tie(num_ok, num_failure, num_drops) = WaitForAllBackends(2, 4);
// The load report received at the balancer should be correct.
{"locality0", GetBackendPorts()},
});
balancers_[0]->ads_service()->SetEdsResource(
- AdsServiceImpl::BuildEdsResource(args, DefaultEdsServiceName()));
+ BuildEdsResource(args, DefaultEdsServiceName()));
CheckRpcSendOk();
}
{"locality0", GetBackendPorts()},
});
balancers_[0]->ads_service()->SetEdsResource(
- AdsServiceImpl::BuildEdsResource(args, DefaultEdsServiceName()));
+ BuildEdsResource(args, DefaultEdsServiceName()));
// Make sure that we blow up (via abort() from the security connector) when
// the name from the balancer doesn't match expectations.
ASSERT_DEATH_IF_SUPPORTED({ CheckRpcSendOk(); }, "");
// Tests that LDS client should send a NACK if there is no API listener in the
// Listener in the LDS response.
TEST_P(LdsTest, NoApiListener) {
- auto listener = balancers_[0]->ads_service()->default_listener();
+ auto listener = default_listener_;
listener.clear_api_listener();
balancers_[0]->ads_service()->SetLdsResource(listener);
SetNextResolution({});
// Tests that LDS client should send a NACK if the route_specifier in the
// http_connection_manager is neither inlined route_config nor RDS.
TEST_P(LdsTest, WrongRouteSpecifier) {
- auto listener = balancers_[0]->ads_service()->default_listener();
+ auto listener = default_listener_;
HttpConnectionManager http_connection_manager;
http_connection_manager.mutable_scoped_routes();
listener.mutable_api_listener()->mutable_api_listener()->PackFrom(
// Tests that LDS client should send a NACK if the rds message in the
// http_connection_manager is missing the config_source field.
TEST_P(LdsTest, RdsMissingConfigSource) {
- auto listener = balancers_[0]->ads_service()->default_listener();
+ auto listener = default_listener_;
HttpConnectionManager http_connection_manager;
http_connection_manager.mutable_rds()->set_route_config_name(
kDefaultRouteConfigurationName);
// Tests that LDS client should send a NACK if the rds message in the
// http_connection_manager has a config_source field that does not specify ADS.
TEST_P(LdsTest, RdsConfigSourceDoesNotSpecifyAds) {
- auto listener = balancers_[0]->ads_service()->default_listener();
+ auto listener = default_listener_;
HttpConnectionManager http_connection_manager;
auto* rds = http_connection_manager.mutable_rds();
rds->set_route_config_name(kDefaultRouteConfigurationName);
AdsServiceImpl::EdsResourceArgs args({
{"locality0", GetBackendPorts()},
});
- balancers_[0]->ads_service()->SetEdsResource(
- AdsServiceImpl::BuildEdsResource(args));
+ balancers_[0]->ads_service()->SetEdsResource(BuildEdsResource(args));
// We need to wait for all backends to come online.
WaitForAllBackends();
// Unset LDS resource.
// Tests that LDS client ACKs but fails if matching domain can't be found in
// the LDS response.
TEST_P(LdsRdsTest, NoMatchedDomain) {
- RouteConfiguration route_config =
- balancers_[0]->ads_service()->default_route_config();
+ RouteConfiguration route_config = default_route_config_;
route_config.mutable_virtual_hosts(0)->clear_domains();
route_config.mutable_virtual_hosts(0)->add_domains("unmatched_domain");
SetRouteConfiguration(0, route_config);
// Tests that LDS client should choose the virtual host with matching domain if
// multiple virtual hosts exist in the LDS response.
TEST_P(LdsRdsTest, ChooseMatchedDomain) {
- RouteConfiguration route_config =
- balancers_[0]->ads_service()->default_route_config();
+ RouteConfiguration route_config = default_route_config_;
*(route_config.add_virtual_hosts()) = route_config.virtual_hosts(0);
route_config.mutable_virtual_hosts(0)->clear_domains();
route_config.mutable_virtual_hosts(0)->add_domains("unmatched_domain");
// Tests that LDS client should choose the last route in the virtual host if
// multiple routes exist in the LDS response.
TEST_P(LdsRdsTest, ChooseLastRoute) {
- RouteConfiguration route_config =
- balancers_[0]->ads_service()->default_route_config();
+ RouteConfiguration route_config = default_route_config_;
*(route_config.mutable_virtual_hosts(0)->add_routes()) =
route_config.virtual_hosts(0).routes(0);
route_config.mutable_virtual_hosts(0)
AdsServiceImpl::ResponseState::ACKED);
}
-// Tests that LDS client should send a NACK if route match has a case_sensitive
-// set to false.
-TEST_P(LdsRdsTest, RouteMatchHasCaseSensitiveFalse) {
- RouteConfiguration route_config =
- balancers_[0]->ads_service()->default_route_config();
- auto* route1 = route_config.mutable_virtual_hosts(0)->mutable_routes(0);
- route1->mutable_match()->mutable_case_sensitive()->set_value(false);
- SetRouteConfiguration(0, route_config);
- SetNextResolution({});
- SetNextResolutionForLbChannelAllBalancers();
- CheckRpcSendFailure();
- const auto& response_state = RouteConfigurationResponseState(0);
- EXPECT_EQ(response_state.state, AdsServiceImpl::ResponseState::NACKED);
- EXPECT_EQ(response_state.error_message,
- "case_sensitive if set must be set to true.");
-}
-
// Tests that LDS client should ignore route which has query_parameters.
TEST_P(LdsRdsTest, RouteMatchHasQueryParameters) {
- RouteConfiguration route_config =
- balancers_[0]->ads_service()->default_route_config();
+ RouteConfiguration route_config = default_route_config_;
auto* route1 = route_config.mutable_virtual_hosts(0)->mutable_routes(0);
route1->mutable_match()->set_prefix("/grpc.testing.EchoTest1Service/");
route1->mutable_match()->add_query_parameters();
// Tests that LDS client should send a ACK if route match has a prefix
// that is either empty or a single slash
TEST_P(LdsRdsTest, RouteMatchHasValidPrefixEmptyOrSingleSlash) {
- RouteConfiguration route_config =
- balancers_[0]->ads_service()->default_route_config();
+ RouteConfiguration route_config = default_route_config_;
auto* route1 = route_config.mutable_virtual_hosts(0)->mutable_routes(0);
route1->mutable_match()->set_prefix("");
auto* default_route = route_config.mutable_virtual_hosts(0)->add_routes();
// Tests that LDS client should ignore route which has a path
// prefix string does not start with "/".
TEST_P(LdsRdsTest, RouteMatchHasInvalidPrefixNoLeadingSlash) {
- RouteConfiguration route_config =
- balancers_[0]->ads_service()->default_route_config();
+ RouteConfiguration route_config = default_route_config_;
auto* route1 = route_config.mutable_virtual_hosts(0)->mutable_routes(0);
route1->mutable_match()->set_prefix("grpc.testing.EchoTest1Service/");
SetRouteConfiguration(0, route_config);
// Tests that LDS client should ignore route which has a prefix
// string with more than 2 slashes.
TEST_P(LdsRdsTest, RouteMatchHasInvalidPrefixExtraContent) {
- RouteConfiguration route_config =
- balancers_[0]->ads_service()->default_route_config();
+ RouteConfiguration route_config = default_route_config_;
auto* route1 = route_config.mutable_virtual_hosts(0)->mutable_routes(0);
route1->mutable_match()->set_prefix("/grpc.testing.EchoTest1Service/Echo1/");
SetRouteConfiguration(0, route_config);
// Tests that LDS client should ignore route which has a prefix
// string "//".
TEST_P(LdsRdsTest, RouteMatchHasInvalidPrefixDoubleSlash) {
- RouteConfiguration route_config =
- balancers_[0]->ads_service()->default_route_config();
+ RouteConfiguration route_config = default_route_config_;
auto* route1 = route_config.mutable_virtual_hosts(0)->mutable_routes(0);
route1->mutable_match()->set_prefix("//");
SetRouteConfiguration(0, route_config);
// Tests that LDS client should ignore route which has path
// but it's empty.
TEST_P(LdsRdsTest, RouteMatchHasInvalidPathEmptyPath) {
- RouteConfiguration route_config =
- balancers_[0]->ads_service()->default_route_config();
+ RouteConfiguration route_config = default_route_config_;
auto* route1 = route_config.mutable_virtual_hosts(0)->mutable_routes(0);
route1->mutable_match()->set_path("");
SetRouteConfiguration(0, route_config);
// Tests that LDS client should ignore route which has path
// string does not start with "/".
TEST_P(LdsRdsTest, RouteMatchHasInvalidPathNoLeadingSlash) {
- RouteConfiguration route_config =
- balancers_[0]->ads_service()->default_route_config();
+ RouteConfiguration route_config = default_route_config_;
auto* route1 = route_config.mutable_virtual_hosts(0)->mutable_routes(0);
route1->mutable_match()->set_path("grpc.testing.EchoTest1Service/Echo1");
SetRouteConfiguration(0, route_config);
// Tests that LDS client should ignore route which has path
// string that has too many slashes; for example, ends with "/".
TEST_P(LdsRdsTest, RouteMatchHasInvalidPathTooManySlashes) {
- RouteConfiguration route_config =
- balancers_[0]->ads_service()->default_route_config();
+ RouteConfiguration route_config = default_route_config_;
auto* route1 = route_config.mutable_virtual_hosts(0)->mutable_routes(0);
route1->mutable_match()->set_path("/grpc.testing.EchoTest1Service/Echo1/");
SetRouteConfiguration(0, route_config);
// Tests that LDS client should ignore route which has path
// string that has only 1 slash: missing "/" between service and method.
TEST_P(LdsRdsTest, RouteMatchHasInvalidPathOnlyOneSlash) {
- RouteConfiguration route_config =
- balancers_[0]->ads_service()->default_route_config();
+ RouteConfiguration route_config = default_route_config_;
auto* route1 = route_config.mutable_virtual_hosts(0)->mutable_routes(0);
route1->mutable_match()->set_path("/grpc.testing.EchoTest1Service.Echo1");
SetRouteConfiguration(0, route_config);
// Tests that LDS client should ignore route which has path
// string that is missing service.
TEST_P(LdsRdsTest, RouteMatchHasInvalidPathMissingService) {
- RouteConfiguration route_config =
- balancers_[0]->ads_service()->default_route_config();
+ RouteConfiguration route_config = default_route_config_;
auto* route1 = route_config.mutable_virtual_hosts(0)->mutable_routes(0);
route1->mutable_match()->set_path("//Echo1");
SetRouteConfiguration(0, route_config);
// Tests that LDS client should ignore route which has path
// string that is missing method.
TEST_P(LdsRdsTest, RouteMatchHasInvalidPathMissingMethod) {
- RouteConfiguration route_config =
- balancers_[0]->ads_service()->default_route_config();
+ RouteConfiguration route_config = default_route_config_;
auto* route1 = route_config.mutable_virtual_hosts(0)->mutable_routes(0);
route1->mutable_match()->set_path("/grpc.testing.EchoTest1Service/");
SetRouteConfiguration(0, route_config);
// Test that LDS client should reject route which has invalid path regex.
TEST_P(LdsRdsTest, RouteMatchHasInvalidPathRegex) {
const char* kNewCluster1Name = "new_cluster_1";
- RouteConfiguration route_config =
- balancers_[0]->ads_service()->default_route_config();
+ RouteConfiguration route_config = default_route_config_;
auto* route1 = route_config.mutable_virtual_hosts(0)->mutable_routes(0);
route1->mutable_match()->mutable_safe_regex()->set_regex("a[z-a]");
route1->mutable_route()->set_cluster(kNewCluster1Name);
// Tests that LDS client should send a NACK if route has an action other than
// RouteAction in the LDS response.
TEST_P(LdsRdsTest, RouteHasNoRouteAction) {
- RouteConfiguration route_config =
- balancers_[0]->ads_service()->default_route_config();
+ RouteConfiguration route_config = default_route_config_;
route_config.mutable_virtual_hosts(0)->mutable_routes(0)->mutable_redirect();
SetRouteConfiguration(0, route_config);
SetNextResolution({});
}
TEST_P(LdsRdsTest, RouteActionClusterHasEmptyClusterName) {
- RouteConfiguration route_config =
- balancers_[0]->ads_service()->default_route_config();
+ RouteConfiguration route_config = default_route_config_;
auto* route1 = route_config.mutable_virtual_hosts(0)->mutable_routes(0);
route1->mutable_match()->set_prefix("/grpc.testing.EchoTest1Service/");
route1->mutable_route()->set_cluster("");
TEST_P(LdsRdsTest, RouteActionWeightedTargetHasIncorrectTotalWeightSet) {
const size_t kWeight75 = 75;
const char* kNewCluster1Name = "new_cluster_1";
- RouteConfiguration route_config =
- balancers_[0]->ads_service()->default_route_config();
+ RouteConfiguration route_config = default_route_config_;
auto* route1 = route_config.mutable_virtual_hosts(0)->mutable_routes(0);
route1->mutable_match()->set_prefix("/grpc.testing.EchoTest1Service/");
auto* weighted_cluster1 =
TEST_P(LdsRdsTest, RouteActionWeightedTargetClusterHasEmptyClusterName) {
const size_t kWeight75 = 75;
- RouteConfiguration route_config =
- balancers_[0]->ads_service()->default_route_config();
+ RouteConfiguration route_config = default_route_config_;
auto* route1 = route_config.mutable_virtual_hosts(0)->mutable_routes(0);
route1->mutable_match()->set_prefix("/grpc.testing.EchoTest1Service/");
auto* weighted_cluster1 =
TEST_P(LdsRdsTest, RouteActionWeightedTargetClusterHasNoWeight) {
const size_t kWeight75 = 75;
const char* kNewCluster1Name = "new_cluster_1";
- RouteConfiguration route_config =
- balancers_[0]->ads_service()->default_route_config();
+ RouteConfiguration route_config = default_route_config_;
auto* route1 = route_config.mutable_virtual_hosts(0)->mutable_routes(0);
route1->mutable_match()->set_prefix("/grpc.testing.EchoTest1Service/");
auto* weighted_cluster1 =
TEST_P(LdsRdsTest, RouteHeaderMatchInvalidRegex) {
const char* kNewCluster1Name = "new_cluster_1";
- RouteConfiguration route_config =
- balancers_[0]->ads_service()->default_route_config();
+ RouteConfiguration route_config = default_route_config_;
auto* route1 = route_config.mutable_virtual_hosts(0)->mutable_routes(0);
route1->mutable_match()->set_prefix("/grpc.testing.EchoTest1Service/");
auto* header_matcher1 = route1->mutable_match()->add_headers();
TEST_P(LdsRdsTest, RouteHeaderMatchInvalidRange) {
const char* kNewCluster1Name = "new_cluster_1";
- RouteConfiguration route_config =
- balancers_[0]->ads_service()->default_route_config();
+ RouteConfiguration route_config = default_route_config_;
auto* route1 = route_config.mutable_virtual_hosts(0)->mutable_routes(0);
route1->mutable_match()->set_prefix("/grpc.testing.EchoTest1Service/");
auto* header_matcher1 = route1->mutable_match()->add_headers();
"cannot be smaller than start.");
}
-// Tests that LDS client should choose the default route (with no matching
-// specified) after unable to find a match with previous routes.
-TEST_P(LdsRdsTest, XdsRoutingPathMatching) {
+// Tests that LDS client should choose the default route (with no matching
+// specified) after unable to find a match with previous routes.
+TEST_P(LdsRdsTest, XdsRoutingPathMatching) {
+ const char* kNewCluster1Name = "new_cluster_1";
+ const char* kNewEdsService1Name = "new_eds_service_name_1";
+ const char* kNewCluster2Name = "new_cluster_2";
+ const char* kNewEdsService2Name = "new_eds_service_name_2";
+ const size_t kNumEcho1Rpcs = 10;
+ const size_t kNumEcho2Rpcs = 20;
+ const size_t kNumEchoRpcs = 30;
+ SetNextResolution({});
+ SetNextResolutionForLbChannelAllBalancers();
+ // Populate new EDS resources.
+ AdsServiceImpl::EdsResourceArgs args({
+ {"locality0", GetBackendPorts(0, 2)},
+ });
+ AdsServiceImpl::EdsResourceArgs args1({
+ {"locality0", GetBackendPorts(2, 3)},
+ });
+ AdsServiceImpl::EdsResourceArgs args2({
+ {"locality0", GetBackendPorts(3, 4)},
+ });
+ balancers_[0]->ads_service()->SetEdsResource(BuildEdsResource(args));
+ balancers_[0]->ads_service()->SetEdsResource(
+ BuildEdsResource(args1, kNewEdsService1Name));
+ balancers_[0]->ads_service()->SetEdsResource(
+ BuildEdsResource(args2, kNewEdsService2Name));
+ // Populate new CDS resources.
+ Cluster new_cluster1 = default_cluster_;
+ new_cluster1.set_name(kNewCluster1Name);
+ new_cluster1.mutable_eds_cluster_config()->set_service_name(
+ kNewEdsService1Name);
+ balancers_[0]->ads_service()->SetCdsResource(new_cluster1);
+ Cluster new_cluster2 = default_cluster_;
+ new_cluster2.set_name(kNewCluster2Name);
+ new_cluster2.mutable_eds_cluster_config()->set_service_name(
+ kNewEdsService2Name);
+ balancers_[0]->ads_service()->SetCdsResource(new_cluster2);
+ // Populating Route Configurations for LDS.
+ RouteConfiguration new_route_config = default_route_config_;
+ auto* route1 = new_route_config.mutable_virtual_hosts(0)->mutable_routes(0);
+ route1->mutable_match()->set_path("/grpc.testing.EchoTest1Service/Echo1");
+ route1->mutable_route()->set_cluster(kNewCluster1Name);
+ auto* route2 = new_route_config.mutable_virtual_hosts(0)->add_routes();
+ route2->mutable_match()->set_path("/grpc.testing.EchoTest2Service/Echo2");
+ route2->mutable_route()->set_cluster(kNewCluster2Name);
+ auto* route3 = new_route_config.mutable_virtual_hosts(0)->add_routes();
+ route3->mutable_match()->set_path("/grpc.testing.EchoTest3Service/Echo3");
+ route3->mutable_route()->set_cluster(kDefaultClusterName);
+ auto* default_route = new_route_config.mutable_virtual_hosts(0)->add_routes();
+ default_route->mutable_match()->set_prefix("");
+ default_route->mutable_route()->set_cluster(kDefaultClusterName);
+ SetRouteConfiguration(0, new_route_config);
+ WaitForAllBackends(0, 2);
+ CheckRpcSendOk(kNumEchoRpcs, RpcOptions().set_wait_for_ready(true));
+ CheckRpcSendOk(kNumEcho1Rpcs, RpcOptions()
+ .set_rpc_service(SERVICE_ECHO1)
+ .set_rpc_method(METHOD_ECHO1)
+ .set_wait_for_ready(true));
+ CheckRpcSendOk(kNumEcho2Rpcs, RpcOptions()
+ .set_rpc_service(SERVICE_ECHO2)
+ .set_rpc_method(METHOD_ECHO2)
+ .set_wait_for_ready(true));
+ // Make sure RPCs all go to the correct backend.
+ for (size_t i = 0; i < 2; ++i) {
+ EXPECT_EQ(kNumEchoRpcs / 2,
+ backends_[i]->backend_service()->request_count());
+ EXPECT_EQ(0, backends_[i]->backend_service1()->request_count());
+ EXPECT_EQ(0, backends_[i]->backend_service2()->request_count());
+ }
+ EXPECT_EQ(0, backends_[2]->backend_service()->request_count());
+ EXPECT_EQ(kNumEcho1Rpcs, backends_[2]->backend_service1()->request_count());
+ EXPECT_EQ(0, backends_[2]->backend_service2()->request_count());
+ EXPECT_EQ(0, backends_[3]->backend_service()->request_count());
+ EXPECT_EQ(0, backends_[3]->backend_service1()->request_count());
+ EXPECT_EQ(kNumEcho2Rpcs, backends_[3]->backend_service2()->request_count());
+}
+
+TEST_P(LdsRdsTest, XdsRoutingPathMatchingCaseInsensitive) {
+ const char* kNewCluster1Name = "new_cluster_1";
+ const char* kNewEdsService1Name = "new_eds_service_name_1";
+ const char* kNewCluster2Name = "new_cluster_2";
+ const char* kNewEdsService2Name = "new_eds_service_name_2";
+ const size_t kNumEcho1Rpcs = 10;
+ const size_t kNumEchoRpcs = 30;
+ SetNextResolution({});
+ SetNextResolutionForLbChannelAllBalancers();
+ // Populate new EDS resources.
+ AdsServiceImpl::EdsResourceArgs args({
+ {"locality0", GetBackendPorts(0, 1)},
+ });
+ AdsServiceImpl::EdsResourceArgs args1({
+ {"locality0", GetBackendPorts(1, 2)},
+ });
+ AdsServiceImpl::EdsResourceArgs args2({
+ {"locality0", GetBackendPorts(2, 3)},
+ });
+ balancers_[0]->ads_service()->SetEdsResource(BuildEdsResource(args));
+ balancers_[0]->ads_service()->SetEdsResource(
+ BuildEdsResource(args1, kNewEdsService1Name));
+ balancers_[0]->ads_service()->SetEdsResource(
+ BuildEdsResource(args2, kNewEdsService2Name));
+ // Populate new CDS resources.
+ Cluster new_cluster1 = default_cluster_;
+ new_cluster1.set_name(kNewCluster1Name);
+ new_cluster1.mutable_eds_cluster_config()->set_service_name(
+ kNewEdsService1Name);
+ balancers_[0]->ads_service()->SetCdsResource(new_cluster1);
+ Cluster new_cluster2 = default_cluster_;
+ new_cluster2.set_name(kNewCluster2Name);
+ new_cluster2.mutable_eds_cluster_config()->set_service_name(
+ kNewEdsService2Name);
+ balancers_[0]->ads_service()->SetCdsResource(new_cluster2);
+ // Populating Route Configurations for LDS.
+ RouteConfiguration new_route_config = default_route_config_;
+ // First route will not match, since it's case-sensitive.
+ // Second route will match with same path.
+ auto* route1 = new_route_config.mutable_virtual_hosts(0)->mutable_routes(0);
+ route1->mutable_match()->set_path("/GrPc.TeStInG.EcHoTeSt1SErViCe/EcHo1");
+ route1->mutable_route()->set_cluster(kNewCluster1Name);
+ auto* route2 = new_route_config.mutable_virtual_hosts(0)->add_routes();
+ route2->mutable_match()->set_path("/GrPc.TeStInG.EcHoTeSt1SErViCe/EcHo1");
+ route2->mutable_match()->mutable_case_sensitive()->set_value(false);
+ route2->mutable_route()->set_cluster(kNewCluster2Name);
+ auto* default_route = new_route_config.mutable_virtual_hosts(0)->add_routes();
+ default_route->mutable_match()->set_prefix("");
+ default_route->mutable_route()->set_cluster(kDefaultClusterName);
+ SetRouteConfiguration(0, new_route_config);
+ CheckRpcSendOk(kNumEchoRpcs, RpcOptions().set_wait_for_ready(true));
+ CheckRpcSendOk(kNumEcho1Rpcs, RpcOptions()
+ .set_rpc_service(SERVICE_ECHO1)
+ .set_rpc_method(METHOD_ECHO1)
+ .set_wait_for_ready(true));
+ // Make sure RPCs all go to the correct backend.
+ EXPECT_EQ(kNumEchoRpcs, backends_[0]->backend_service()->request_count());
+ EXPECT_EQ(0, backends_[0]->backend_service1()->request_count());
+ EXPECT_EQ(0, backends_[1]->backend_service()->request_count());
+ EXPECT_EQ(0, backends_[1]->backend_service1()->request_count());
+ EXPECT_EQ(0, backends_[2]->backend_service()->request_count());
+ EXPECT_EQ(kNumEcho1Rpcs, backends_[2]->backend_service1()->request_count());
+}
+
+TEST_P(LdsRdsTest, XdsRoutingPrefixMatching) {
+ const char* kNewCluster1Name = "new_cluster_1";
+ const char* kNewEdsService1Name = "new_eds_service_name_1";
+ const char* kNewCluster2Name = "new_cluster_2";
+ const char* kNewEdsService2Name = "new_eds_service_name_2";
+ const size_t kNumEcho1Rpcs = 10;
+ const size_t kNumEcho2Rpcs = 20;
+ const size_t kNumEchoRpcs = 30;
+ SetNextResolution({});
+ SetNextResolutionForLbChannelAllBalancers();
+ // Populate new EDS resources.
+ AdsServiceImpl::EdsResourceArgs args({
+ {"locality0", GetBackendPorts(0, 2)},
+ });
+ AdsServiceImpl::EdsResourceArgs args1({
+ {"locality0", GetBackendPorts(2, 3)},
+ });
+ AdsServiceImpl::EdsResourceArgs args2({
+ {"locality0", GetBackendPorts(3, 4)},
+ });
+ balancers_[0]->ads_service()->SetEdsResource(BuildEdsResource(args));
+ balancers_[0]->ads_service()->SetEdsResource(
+ BuildEdsResource(args1, kNewEdsService1Name));
+ balancers_[0]->ads_service()->SetEdsResource(
+ BuildEdsResource(args2, kNewEdsService2Name));
+ // Populate new CDS resources.
+ Cluster new_cluster1 = default_cluster_;
+ new_cluster1.set_name(kNewCluster1Name);
+ new_cluster1.mutable_eds_cluster_config()->set_service_name(
+ kNewEdsService1Name);
+ balancers_[0]->ads_service()->SetCdsResource(new_cluster1);
+ Cluster new_cluster2 = default_cluster_;
+ new_cluster2.set_name(kNewCluster2Name);
+ new_cluster2.mutable_eds_cluster_config()->set_service_name(
+ kNewEdsService2Name);
+ balancers_[0]->ads_service()->SetCdsResource(new_cluster2);
+ // Populating Route Configurations for LDS.
+ RouteConfiguration new_route_config = default_route_config_;
+ auto* route1 = new_route_config.mutable_virtual_hosts(0)->mutable_routes(0);
+ route1->mutable_match()->set_prefix("/grpc.testing.EchoTest1Service/");
+ route1->mutable_route()->set_cluster(kNewCluster1Name);
+ auto* route2 = new_route_config.mutable_virtual_hosts(0)->add_routes();
+ route2->mutable_match()->set_prefix("/grpc.testing.EchoTest2Service/");
+ route2->mutable_route()->set_cluster(kNewCluster2Name);
+ auto* default_route = new_route_config.mutable_virtual_hosts(0)->add_routes();
+ default_route->mutable_match()->set_prefix("");
+ default_route->mutable_route()->set_cluster(kDefaultClusterName);
+ SetRouteConfiguration(0, new_route_config);
+ WaitForAllBackends(0, 2);
+ CheckRpcSendOk(kNumEchoRpcs, RpcOptions().set_wait_for_ready(true));
+ CheckRpcSendOk(
+ kNumEcho1Rpcs,
+ RpcOptions().set_rpc_service(SERVICE_ECHO1).set_wait_for_ready(true));
+ CheckRpcSendOk(
+ kNumEcho2Rpcs,
+ RpcOptions().set_rpc_service(SERVICE_ECHO2).set_wait_for_ready(true));
+ // Make sure RPCs all go to the correct backend.
+ for (size_t i = 0; i < 2; ++i) {
+ EXPECT_EQ(kNumEchoRpcs / 2,
+ backends_[i]->backend_service()->request_count());
+ EXPECT_EQ(0, backends_[i]->backend_service1()->request_count());
+ EXPECT_EQ(0, backends_[i]->backend_service2()->request_count());
+ }
+ EXPECT_EQ(0, backends_[2]->backend_service()->request_count());
+ EXPECT_EQ(kNumEcho1Rpcs, backends_[2]->backend_service1()->request_count());
+ EXPECT_EQ(0, backends_[2]->backend_service2()->request_count());
+ EXPECT_EQ(0, backends_[3]->backend_service()->request_count());
+ EXPECT_EQ(0, backends_[3]->backend_service1()->request_count());
+ EXPECT_EQ(kNumEcho2Rpcs, backends_[3]->backend_service2()->request_count());
+}
+
+TEST_P(LdsRdsTest, XdsRoutingPrefixMatchingCaseInsensitive) {
const char* kNewCluster1Name = "new_cluster_1";
const char* kNewEdsService1Name = "new_eds_service_name_1";
const char* kNewCluster2Name = "new_cluster_2";
const char* kNewEdsService2Name = "new_eds_service_name_2";
const size_t kNumEcho1Rpcs = 10;
- const size_t kNumEcho2Rpcs = 20;
const size_t kNumEchoRpcs = 30;
SetNextResolution({});
SetNextResolutionForLbChannelAllBalancers();
// Populate new EDS resources.
AdsServiceImpl::EdsResourceArgs args({
- {"locality0", GetBackendPorts(0, 2)},
+ {"locality0", GetBackendPorts(0, 1)},
});
AdsServiceImpl::EdsResourceArgs args1({
- {"locality0", GetBackendPorts(2, 3)},
+ {"locality0", GetBackendPorts(1, 2)},
});
AdsServiceImpl::EdsResourceArgs args2({
- {"locality0", GetBackendPorts(3, 4)},
+ {"locality0", GetBackendPorts(2, 3)},
});
+ balancers_[0]->ads_service()->SetEdsResource(BuildEdsResource(args));
balancers_[0]->ads_service()->SetEdsResource(
- AdsServiceImpl::BuildEdsResource(args));
+ BuildEdsResource(args1, kNewEdsService1Name));
balancers_[0]->ads_service()->SetEdsResource(
- AdsServiceImpl::BuildEdsResource(args1, kNewEdsService1Name));
- balancers_[0]->ads_service()->SetEdsResource(
- AdsServiceImpl::BuildEdsResource(args2, kNewEdsService2Name));
+ BuildEdsResource(args2, kNewEdsService2Name));
// Populate new CDS resources.
- Cluster new_cluster1 = balancers_[0]->ads_service()->default_cluster();
+ Cluster new_cluster1 = default_cluster_;
new_cluster1.set_name(kNewCluster1Name);
new_cluster1.mutable_eds_cluster_config()->set_service_name(
kNewEdsService1Name);
balancers_[0]->ads_service()->SetCdsResource(new_cluster1);
- Cluster new_cluster2 = balancers_[0]->ads_service()->default_cluster();
+ Cluster new_cluster2 = default_cluster_;
new_cluster2.set_name(kNewCluster2Name);
new_cluster2.mutable_eds_cluster_config()->set_service_name(
kNewEdsService2Name);
balancers_[0]->ads_service()->SetCdsResource(new_cluster2);
// Populating Route Configurations for LDS.
- RouteConfiguration new_route_config =
- balancers_[0]->ads_service()->default_route_config();
+ RouteConfiguration new_route_config = default_route_config_;
+ // First route will not match, since it's case-sensitive.
+ // Second route will match with same path.
auto* route1 = new_route_config.mutable_virtual_hosts(0)->mutable_routes(0);
- route1->mutable_match()->set_path("/grpc.testing.EchoTest1Service/Echo1");
+ route1->mutable_match()->set_prefix("/GrPc.TeStInG.EcHoTeSt1SErViCe");
route1->mutable_route()->set_cluster(kNewCluster1Name);
auto* route2 = new_route_config.mutable_virtual_hosts(0)->add_routes();
- route2->mutable_match()->set_path("/grpc.testing.EchoTest2Service/Echo2");
+ route2->mutable_match()->set_prefix("/GrPc.TeStInG.EcHoTeSt1SErViCe");
+ route2->mutable_match()->mutable_case_sensitive()->set_value(false);
route2->mutable_route()->set_cluster(kNewCluster2Name);
- auto* route3 = new_route_config.mutable_virtual_hosts(0)->add_routes();
- route3->mutable_match()->set_path("/grpc.testing.EchoTest3Service/Echo3");
- route3->mutable_route()->set_cluster(kDefaultClusterName);
auto* default_route = new_route_config.mutable_virtual_hosts(0)->add_routes();
default_route->mutable_match()->set_prefix("");
default_route->mutable_route()->set_cluster(kDefaultClusterName);
SetRouteConfiguration(0, new_route_config);
- WaitForAllBackends(0, 2);
CheckRpcSendOk(kNumEchoRpcs, RpcOptions().set_wait_for_ready(true));
CheckRpcSendOk(kNumEcho1Rpcs, RpcOptions()
.set_rpc_service(SERVICE_ECHO1)
.set_rpc_method(METHOD_ECHO1)
.set_wait_for_ready(true));
- CheckRpcSendOk(kNumEcho2Rpcs, RpcOptions()
- .set_rpc_service(SERVICE_ECHO2)
- .set_rpc_method(METHOD_ECHO2)
- .set_wait_for_ready(true));
// Make sure RPCs all go to the correct backend.
- for (size_t i = 0; i < 2; ++i) {
- EXPECT_EQ(kNumEchoRpcs / 2,
- backends_[i]->backend_service()->request_count());
- EXPECT_EQ(0, backends_[i]->backend_service1()->request_count());
- EXPECT_EQ(0, backends_[i]->backend_service2()->request_count());
- }
+ EXPECT_EQ(kNumEchoRpcs, backends_[0]->backend_service()->request_count());
+ EXPECT_EQ(0, backends_[0]->backend_service1()->request_count());
+ EXPECT_EQ(0, backends_[1]->backend_service()->request_count());
+ EXPECT_EQ(0, backends_[1]->backend_service1()->request_count());
EXPECT_EQ(0, backends_[2]->backend_service()->request_count());
EXPECT_EQ(kNumEcho1Rpcs, backends_[2]->backend_service1()->request_count());
- EXPECT_EQ(0, backends_[2]->backend_service2()->request_count());
- EXPECT_EQ(0, backends_[3]->backend_service()->request_count());
- EXPECT_EQ(0, backends_[3]->backend_service1()->request_count());
- EXPECT_EQ(kNumEcho2Rpcs, backends_[3]->backend_service2()->request_count());
}
-TEST_P(LdsRdsTest, XdsRoutingPrefixMatching) {
+TEST_P(LdsRdsTest, XdsRoutingPathRegexMatching) {
const char* kNewCluster1Name = "new_cluster_1";
const char* kNewEdsService1Name = "new_eds_service_name_1";
const char* kNewCluster2Name = "new_cluster_2";
AdsServiceImpl::EdsResourceArgs args2({
{"locality0", GetBackendPorts(3, 4)},
});
+ balancers_[0]->ads_service()->SetEdsResource(BuildEdsResource(args));
balancers_[0]->ads_service()->SetEdsResource(
- AdsServiceImpl::BuildEdsResource(args));
- balancers_[0]->ads_service()->SetEdsResource(
- AdsServiceImpl::BuildEdsResource(args1, kNewEdsService1Name));
+ BuildEdsResource(args1, kNewEdsService1Name));
balancers_[0]->ads_service()->SetEdsResource(
- AdsServiceImpl::BuildEdsResource(args2, kNewEdsService2Name));
+ BuildEdsResource(args2, kNewEdsService2Name));
// Populate new CDS resources.
- Cluster new_cluster1 = balancers_[0]->ads_service()->default_cluster();
+ Cluster new_cluster1 = default_cluster_;
new_cluster1.set_name(kNewCluster1Name);
new_cluster1.mutable_eds_cluster_config()->set_service_name(
kNewEdsService1Name);
balancers_[0]->ads_service()->SetCdsResource(new_cluster1);
- Cluster new_cluster2 = balancers_[0]->ads_service()->default_cluster();
+ Cluster new_cluster2 = default_cluster_;
new_cluster2.set_name(kNewCluster2Name);
new_cluster2.mutable_eds_cluster_config()->set_service_name(
kNewEdsService2Name);
balancers_[0]->ads_service()->SetCdsResource(new_cluster2);
// Populating Route Configurations for LDS.
- RouteConfiguration new_route_config =
- balancers_[0]->ads_service()->default_route_config();
+ RouteConfiguration new_route_config = default_route_config_;
auto* route1 = new_route_config.mutable_virtual_hosts(0)->mutable_routes(0);
- route1->mutable_match()->set_prefix("/grpc.testing.EchoTest1Service/");
+ // Will match "/grpc.testing.EchoTest1Service/"
+ route1->mutable_match()->mutable_safe_regex()->set_regex(".*1.*");
route1->mutable_route()->set_cluster(kNewCluster1Name);
auto* route2 = new_route_config.mutable_virtual_hosts(0)->add_routes();
- route2->mutable_match()->set_prefix("/grpc.testing.EchoTest2Service/");
+ // Will match "/grpc.testing.EchoTest2Service/"
+ route2->mutable_match()->mutable_safe_regex()->set_regex(".*2.*");
route2->mutable_route()->set_cluster(kNewCluster2Name);
auto* default_route = new_route_config.mutable_virtual_hosts(0)->add_routes();
default_route->mutable_match()->set_prefix("");
EXPECT_EQ(kNumEcho2Rpcs, backends_[3]->backend_service2()->request_count());
}
-TEST_P(LdsRdsTest, XdsRoutingPathRegexMatching) {
+TEST_P(LdsRdsTest, XdsRoutingPathRegexMatchingCaseInsensitive) {
const char* kNewCluster1Name = "new_cluster_1";
const char* kNewEdsService1Name = "new_eds_service_name_1";
const char* kNewCluster2Name = "new_cluster_2";
const char* kNewEdsService2Name = "new_eds_service_name_2";
const size_t kNumEcho1Rpcs = 10;
- const size_t kNumEcho2Rpcs = 20;
const size_t kNumEchoRpcs = 30;
SetNextResolution({});
SetNextResolutionForLbChannelAllBalancers();
// Populate new EDS resources.
AdsServiceImpl::EdsResourceArgs args({
- {"locality0", GetBackendPorts(0, 2)},
+ {"locality0", GetBackendPorts(0, 1)},
});
AdsServiceImpl::EdsResourceArgs args1({
- {"locality0", GetBackendPorts(2, 3)},
+ {"locality0", GetBackendPorts(1, 2)},
});
AdsServiceImpl::EdsResourceArgs args2({
- {"locality0", GetBackendPorts(3, 4)},
+ {"locality0", GetBackendPorts(2, 3)},
});
+ balancers_[0]->ads_service()->SetEdsResource(BuildEdsResource(args));
balancers_[0]->ads_service()->SetEdsResource(
- AdsServiceImpl::BuildEdsResource(args));
+ BuildEdsResource(args1, kNewEdsService1Name));
balancers_[0]->ads_service()->SetEdsResource(
- AdsServiceImpl::BuildEdsResource(args1, kNewEdsService1Name));
- balancers_[0]->ads_service()->SetEdsResource(
- AdsServiceImpl::BuildEdsResource(args2, kNewEdsService2Name));
+ BuildEdsResource(args2, kNewEdsService2Name));
// Populate new CDS resources.
- Cluster new_cluster1 = balancers_[0]->ads_service()->default_cluster();
+ Cluster new_cluster1 = default_cluster_;
new_cluster1.set_name(kNewCluster1Name);
new_cluster1.mutable_eds_cluster_config()->set_service_name(
kNewEdsService1Name);
balancers_[0]->ads_service()->SetCdsResource(new_cluster1);
- Cluster new_cluster2 = balancers_[0]->ads_service()->default_cluster();
+ Cluster new_cluster2 = default_cluster_;
new_cluster2.set_name(kNewCluster2Name);
new_cluster2.mutable_eds_cluster_config()->set_service_name(
kNewEdsService2Name);
balancers_[0]->ads_service()->SetCdsResource(new_cluster2);
// Populating Route Configurations for LDS.
- RouteConfiguration new_route_config =
- balancers_[0]->ads_service()->default_route_config();
+ RouteConfiguration new_route_config = default_route_config_;
+ // First route will not match, since it's case-sensitive.
+ // Second route will match with same path.
auto* route1 = new_route_config.mutable_virtual_hosts(0)->mutable_routes(0);
- // Will match "/grpc.testing.EchoTest1Service/"
- route1->mutable_match()->mutable_safe_regex()->set_regex(".*1.*");
+ route1->mutable_match()->mutable_safe_regex()->set_regex(
+ ".*EcHoTeSt1SErViCe.*");
route1->mutable_route()->set_cluster(kNewCluster1Name);
auto* route2 = new_route_config.mutable_virtual_hosts(0)->add_routes();
- // Will match "/grpc.testing.EchoTest2Service/"
- route2->mutable_match()->mutable_safe_regex()->set_regex(".*2.*");
+ route2->mutable_match()->mutable_safe_regex()->set_regex(
+ ".*EcHoTeSt1SErViCe.*");
+ route2->mutable_match()->mutable_case_sensitive()->set_value(false);
route2->mutable_route()->set_cluster(kNewCluster2Name);
auto* default_route = new_route_config.mutable_virtual_hosts(0)->add_routes();
default_route->mutable_match()->set_prefix("");
default_route->mutable_route()->set_cluster(kDefaultClusterName);
SetRouteConfiguration(0, new_route_config);
- WaitForAllBackends(0, 2);
CheckRpcSendOk(kNumEchoRpcs, RpcOptions().set_wait_for_ready(true));
- CheckRpcSendOk(
- kNumEcho1Rpcs,
- RpcOptions().set_rpc_service(SERVICE_ECHO1).set_wait_for_ready(true));
- CheckRpcSendOk(
- kNumEcho2Rpcs,
- RpcOptions().set_rpc_service(SERVICE_ECHO2).set_wait_for_ready(true));
+ CheckRpcSendOk(kNumEcho1Rpcs, RpcOptions()
+ .set_rpc_service(SERVICE_ECHO1)
+ .set_rpc_method(METHOD_ECHO1)
+ .set_wait_for_ready(true));
// Make sure RPCs all go to the correct backend.
- for (size_t i = 0; i < 2; ++i) {
- EXPECT_EQ(kNumEchoRpcs / 2,
- backends_[i]->backend_service()->request_count());
- EXPECT_EQ(0, backends_[i]->backend_service1()->request_count());
- EXPECT_EQ(0, backends_[i]->backend_service2()->request_count());
- }
+ EXPECT_EQ(kNumEchoRpcs, backends_[0]->backend_service()->request_count());
+ EXPECT_EQ(0, backends_[0]->backend_service1()->request_count());
+ EXPECT_EQ(0, backends_[1]->backend_service()->request_count());
+ EXPECT_EQ(0, backends_[1]->backend_service1()->request_count());
EXPECT_EQ(0, backends_[2]->backend_service()->request_count());
EXPECT_EQ(kNumEcho1Rpcs, backends_[2]->backend_service1()->request_count());
- EXPECT_EQ(0, backends_[2]->backend_service2()->request_count());
- EXPECT_EQ(0, backends_[3]->backend_service()->request_count());
- EXPECT_EQ(0, backends_[3]->backend_service1()->request_count());
- EXPECT_EQ(kNumEcho2Rpcs, backends_[3]->backend_service2()->request_count());
}
TEST_P(LdsRdsTest, XdsRoutingWeightedCluster) {
AdsServiceImpl::EdsResourceArgs args2({
{"locality0", GetBackendPorts(2, 3)},
});
+ balancers_[0]->ads_service()->SetEdsResource(BuildEdsResource(args));
balancers_[0]->ads_service()->SetEdsResource(
- AdsServiceImpl::BuildEdsResource(args));
+ BuildEdsResource(args1, kNewEdsService1Name));
balancers_[0]->ads_service()->SetEdsResource(
- AdsServiceImpl::BuildEdsResource(args1, kNewEdsService1Name));
- balancers_[0]->ads_service()->SetEdsResource(
- AdsServiceImpl::BuildEdsResource(args2, kNewEdsService2Name));
+ BuildEdsResource(args2, kNewEdsService2Name));
// Populate new CDS resources.
- Cluster new_cluster1 = balancers_[0]->ads_service()->default_cluster();
+ Cluster new_cluster1 = default_cluster_;
new_cluster1.set_name(kNewCluster1Name);
new_cluster1.mutable_eds_cluster_config()->set_service_name(
kNewEdsService1Name);
balancers_[0]->ads_service()->SetCdsResource(new_cluster1);
- Cluster new_cluster2 = balancers_[0]->ads_service()->default_cluster();
+ Cluster new_cluster2 = default_cluster_;
new_cluster2.set_name(kNewCluster2Name);
new_cluster2.mutable_eds_cluster_config()->set_service_name(
kNewEdsService2Name);
balancers_[0]->ads_service()->SetCdsResource(new_cluster2);
// Populating Route Configurations for LDS.
- RouteConfiguration new_route_config =
- balancers_[0]->ads_service()->default_route_config();
+ RouteConfiguration new_route_config = default_route_config_;
auto* route1 = new_route_config.mutable_virtual_hosts(0)->mutable_routes(0);
route1->mutable_match()->set_prefix("/grpc.testing.EchoTest1Service/");
auto* weighted_cluster1 =
AdsServiceImpl::EdsResourceArgs args2({
{"locality0", GetBackendPorts(2, 3)},
});
+ balancers_[0]->ads_service()->SetEdsResource(BuildEdsResource(args));
balancers_[0]->ads_service()->SetEdsResource(
- AdsServiceImpl::BuildEdsResource(args));
- balancers_[0]->ads_service()->SetEdsResource(
- AdsServiceImpl::BuildEdsResource(args1, kNewEdsService1Name));
+ BuildEdsResource(args1, kNewEdsService1Name));
balancers_[0]->ads_service()->SetEdsResource(
- AdsServiceImpl::BuildEdsResource(args2, kNewEdsService2Name));
+ BuildEdsResource(args2, kNewEdsService2Name));
// Populate new CDS resources.
- Cluster new_cluster1 = balancers_[0]->ads_service()->default_cluster();
+ Cluster new_cluster1 = default_cluster_;
new_cluster1.set_name(kNewCluster1Name);
new_cluster1.mutable_eds_cluster_config()->set_service_name(
kNewEdsService1Name);
balancers_[0]->ads_service()->SetCdsResource(new_cluster1);
- Cluster new_cluster2 = balancers_[0]->ads_service()->default_cluster();
+ Cluster new_cluster2 = default_cluster_;
new_cluster2.set_name(kNewCluster2Name);
new_cluster2.mutable_eds_cluster_config()->set_service_name(
kNewEdsService2Name);
balancers_[0]->ads_service()->SetCdsResource(new_cluster2);
// Populating Route Configurations for LDS.
- RouteConfiguration new_route_config =
- balancers_[0]->ads_service()->default_route_config();
+ RouteConfiguration new_route_config = default_route_config_;
auto* route1 = new_route_config.mutable_virtual_hosts(0)->mutable_routes(0);
route1->mutable_match()->set_prefix("");
auto* weighted_cluster1 =
AdsServiceImpl::EdsResourceArgs args3({
{"locality0", GetBackendPorts(3, 4)},
});
+ balancers_[0]->ads_service()->SetEdsResource(BuildEdsResource(args));
balancers_[0]->ads_service()->SetEdsResource(
- AdsServiceImpl::BuildEdsResource(args));
+ BuildEdsResource(args1, kNewEdsService1Name));
balancers_[0]->ads_service()->SetEdsResource(
- AdsServiceImpl::BuildEdsResource(args1, kNewEdsService1Name));
+ BuildEdsResource(args2, kNewEdsService2Name));
balancers_[0]->ads_service()->SetEdsResource(
- AdsServiceImpl::BuildEdsResource(args2, kNewEdsService2Name));
- balancers_[0]->ads_service()->SetEdsResource(
- AdsServiceImpl::BuildEdsResource(args3, kNewEdsService3Name));
+ BuildEdsResource(args3, kNewEdsService3Name));
// Populate new CDS resources.
- Cluster new_cluster1 = balancers_[0]->ads_service()->default_cluster();
+ Cluster new_cluster1 = default_cluster_;
new_cluster1.set_name(kNewCluster1Name);
new_cluster1.mutable_eds_cluster_config()->set_service_name(
kNewEdsService1Name);
balancers_[0]->ads_service()->SetCdsResource(new_cluster1);
- Cluster new_cluster2 = balancers_[0]->ads_service()->default_cluster();
+ Cluster new_cluster2 = default_cluster_;
new_cluster2.set_name(kNewCluster2Name);
new_cluster2.mutable_eds_cluster_config()->set_service_name(
kNewEdsService2Name);
balancers_[0]->ads_service()->SetCdsResource(new_cluster2);
- Cluster new_cluster3 = balancers_[0]->ads_service()->default_cluster();
+ Cluster new_cluster3 = default_cluster_;
new_cluster3.set_name(kNewCluster3Name);
new_cluster3.mutable_eds_cluster_config()->set_service_name(
kNewEdsService3Name);
balancers_[0]->ads_service()->SetCdsResource(new_cluster3);
// Populating Route Configurations.
- RouteConfiguration new_route_config =
- balancers_[0]->ads_service()->default_route_config();
+ RouteConfiguration new_route_config = default_route_config_;
auto* route1 = new_route_config.mutable_virtual_hosts(0)->mutable_routes(0);
route1->mutable_match()->set_prefix("/grpc.testing.EchoTest1Service/");
auto* weighted_cluster1 =
AdsServiceImpl::EdsResourceArgs args3({
{"locality0", GetBackendPorts(3, 4)},
});
+ balancers_[0]->ads_service()->SetEdsResource(BuildEdsResource(args));
balancers_[0]->ads_service()->SetEdsResource(
- AdsServiceImpl::BuildEdsResource(args));
- balancers_[0]->ads_service()->SetEdsResource(
- AdsServiceImpl::BuildEdsResource(args1, kNewEdsService1Name));
+ BuildEdsResource(args1, kNewEdsService1Name));
balancers_[0]->ads_service()->SetEdsResource(
- AdsServiceImpl::BuildEdsResource(args2, kNewEdsService2Name));
+ BuildEdsResource(args2, kNewEdsService2Name));
balancers_[0]->ads_service()->SetEdsResource(
- AdsServiceImpl::BuildEdsResource(args3, kNewEdsService3Name));
+ BuildEdsResource(args3, kNewEdsService3Name));
// Populate new CDS resources.
- Cluster new_cluster1 = balancers_[0]->ads_service()->default_cluster();
+ Cluster new_cluster1 = default_cluster_;
new_cluster1.set_name(kNewCluster1Name);
new_cluster1.mutable_eds_cluster_config()->set_service_name(
kNewEdsService1Name);
balancers_[0]->ads_service()->SetCdsResource(new_cluster1);
- Cluster new_cluster2 = balancers_[0]->ads_service()->default_cluster();
+ Cluster new_cluster2 = default_cluster_;
new_cluster2.set_name(kNewCluster2Name);
new_cluster2.mutable_eds_cluster_config()->set_service_name(
kNewEdsService2Name);
balancers_[0]->ads_service()->SetCdsResource(new_cluster2);
- Cluster new_cluster3 = balancers_[0]->ads_service()->default_cluster();
+ Cluster new_cluster3 = default_cluster_;
new_cluster3.set_name(kNewCluster3Name);
new_cluster3.mutable_eds_cluster_config()->set_service_name(
kNewEdsService3Name);
balancers_[0]->ads_service()->SetCdsResource(new_cluster3);
// Populating Route Configurations.
- RouteConfiguration new_route_config =
- balancers_[0]->ads_service()->default_route_config();
+ RouteConfiguration new_route_config = default_route_config_;
auto* route1 = new_route_config.mutable_virtual_hosts(0)->mutable_routes(0);
route1->mutable_match()->set_prefix("/grpc.testing.EchoTest1Service/");
auto* weighted_cluster1 =
AdsServiceImpl::EdsResourceArgs args1({
{"locality0", GetBackendPorts(1, 2)},
});
+ balancers_[0]->ads_service()->SetEdsResource(BuildEdsResource(args));
balancers_[0]->ads_service()->SetEdsResource(
- AdsServiceImpl::BuildEdsResource(args));
- balancers_[0]->ads_service()->SetEdsResource(
- AdsServiceImpl::BuildEdsResource(args1, kNewEdsServiceName));
+ BuildEdsResource(args1, kNewEdsServiceName));
// Populate new CDS resources.
- Cluster new_cluster = balancers_[0]->ads_service()->default_cluster();
+ Cluster new_cluster = default_cluster_;
new_cluster.set_name(kNewClusterName);
new_cluster.mutable_eds_cluster_config()->set_service_name(
kNewEdsServiceName);
balancers_[0]->ads_service()->SetCdsResource(new_cluster);
// Send Route Configuration.
- RouteConfiguration new_route_config =
- balancers_[0]->ads_service()->default_route_config();
+ RouteConfiguration new_route_config = default_route_config_;
SetRouteConfiguration(0, new_route_config);
WaitForAllBackends(0, 1);
CheckRpcSendOk(kNumEchoRpcs);
AdsServiceImpl::EdsResourceArgs args1({
{"locality0", GetBackendPorts(1, 2)},
});
+ balancers_[0]->ads_service()->SetEdsResource(BuildEdsResource(args));
balancers_[0]->ads_service()->SetEdsResource(
- AdsServiceImpl::BuildEdsResource(args));
- balancers_[0]->ads_service()->SetEdsResource(
- AdsServiceImpl::BuildEdsResource(args1, kNewEdsServiceName));
+ BuildEdsResource(args1, kNewEdsServiceName));
// Populate new CDS resources.
- Cluster new_cluster = balancers_[0]->ads_service()->default_cluster();
+ Cluster new_cluster = default_cluster_;
new_cluster.set_name(kNewClusterName);
new_cluster.mutable_eds_cluster_config()->set_service_name(
kNewEdsServiceName);
ShutdownBackend(0);
// Send a RouteConfiguration with a default route that points to
// backend 0.
- RouteConfiguration new_route_config =
- balancers_[0]->ads_service()->default_route_config();
+ RouteConfiguration new_route_config = default_route_config_;
SetRouteConfiguration(0, new_route_config);
// Send exactly one RPC with no deadline and with wait_for_ready=true.
// This RPC will not complete until after backend 0 is started.
EXPECT_EQ(1, backends_[1]->backend_service()->request_count());
}
+TEST_P(LdsRdsTest, XdsRoutingApplyXdsTimeout) {
+ // TODO(https://github.com/grpc/grpc/issues/24549): TSAN won't work here.
+ if (BuiltUnderAsan() || BuiltUnderTsan()) return;
+
+ gpr_setenv("GRPC_XDS_EXPERIMENTAL_ENABLE_TIMEOUT", "true");
+ const int64_t kTimeoutNano = 500000000;
+ const int64_t kTimeoutGrpcTimeoutHeaderMaxSecond = 1;
+ const int64_t kTimeoutMaxStreamDurationSecond = 2;
+ const int64_t kTimeoutHttpMaxStreamDurationSecond = 3;
+ const int64_t kTimeoutApplicationSecond = 4;
+ const char* kNewCluster1Name = "new_cluster_1";
+ const char* kNewEdsService1Name = "new_eds_service_name_1";
+ const char* kNewCluster2Name = "new_cluster_2";
+ const char* kNewEdsService2Name = "new_eds_service_name_2";
+ const char* kNewCluster3Name = "new_cluster_3";
+ const char* kNewEdsService3Name = "new_eds_service_name_3";
+ SetNextResolution({});
+ SetNextResolutionForLbChannelAllBalancers();
+ // Populate new EDS resources.
+ AdsServiceImpl::EdsResourceArgs args({
+ {"locality0", {g_port_saver->GetPort()}},
+ });
+ AdsServiceImpl::EdsResourceArgs args1({
+ {"locality0", {g_port_saver->GetPort()}},
+ });
+ AdsServiceImpl::EdsResourceArgs args2({
+ {"locality0", {g_port_saver->GetPort()}},
+ });
+ AdsServiceImpl::EdsResourceArgs args3({
+ {"locality0", {g_port_saver->GetPort()}},
+ });
+ balancers_[0]->ads_service()->SetEdsResource(BuildEdsResource(args));
+ balancers_[0]->ads_service()->SetEdsResource(
+ BuildEdsResource(args1, kNewEdsService1Name));
+ balancers_[0]->ads_service()->SetEdsResource(
+ BuildEdsResource(args2, kNewEdsService2Name));
+ balancers_[0]->ads_service()->SetEdsResource(
+ BuildEdsResource(args3, kNewEdsService3Name));
+ // Populate new CDS resources.
+ Cluster new_cluster1 = default_cluster_;
+ new_cluster1.set_name(kNewCluster1Name);
+ new_cluster1.mutable_eds_cluster_config()->set_service_name(
+ kNewEdsService1Name);
+ balancers_[0]->ads_service()->SetCdsResource(new_cluster1);
+ Cluster new_cluster2 = default_cluster_;
+ new_cluster2.set_name(kNewCluster2Name);
+ new_cluster2.mutable_eds_cluster_config()->set_service_name(
+ kNewEdsService2Name);
+ balancers_[0]->ads_service()->SetCdsResource(new_cluster2);
+ Cluster new_cluster3 = default_cluster_;
+ new_cluster3.set_name(kNewCluster3Name);
+ new_cluster3.mutable_eds_cluster_config()->set_service_name(
+ kNewEdsService3Name);
+ balancers_[0]->ads_service()->SetCdsResource(new_cluster3);
+ // Construct listener.
+ auto listener = default_listener_;
+ HttpConnectionManager http_connection_manager;
+ // Set up HTTP max_stream_duration of 3.5 seconds
+ auto* duration =
+ http_connection_manager.mutable_common_http_protocol_options()
+ ->mutable_max_stream_duration();
+ duration->set_seconds(kTimeoutHttpMaxStreamDurationSecond);
+ duration->set_nanos(kTimeoutNano);
+ listener.mutable_api_listener()->mutable_api_listener()->PackFrom(
+ http_connection_manager);
+ // Construct route config.
+ RouteConfiguration new_route_config = default_route_config_;
+ // route 1: Set max_stream_duration of 2.5 seconds, Set
+ // grpc_timeout_header_max of 1.5
+ auto* route1 = new_route_config.mutable_virtual_hosts(0)->mutable_routes(0);
+ route1->mutable_match()->set_path("/grpc.testing.EchoTest1Service/Echo1");
+ route1->mutable_route()->set_cluster(kNewCluster1Name);
+ auto* max_stream_duration =
+ route1->mutable_route()->mutable_max_stream_duration();
+ duration = max_stream_duration->mutable_max_stream_duration();
+ duration->set_seconds(kTimeoutMaxStreamDurationSecond);
+ duration->set_nanos(kTimeoutNano);
+ duration = max_stream_duration->mutable_grpc_timeout_header_max();
+ duration->set_seconds(kTimeoutGrpcTimeoutHeaderMaxSecond);
+ duration->set_nanos(kTimeoutNano);
+ // route 2: Set max_stream_duration of 2.5 seconds
+ auto* route2 = new_route_config.mutable_virtual_hosts(0)->add_routes();
+ route2->mutable_match()->set_path("/grpc.testing.EchoTest2Service/Echo2");
+ route2->mutable_route()->set_cluster(kNewCluster2Name);
+ max_stream_duration = route2->mutable_route()->mutable_max_stream_duration();
+ duration = max_stream_duration->mutable_max_stream_duration();
+ duration->set_seconds(kTimeoutMaxStreamDurationSecond);
+ duration->set_nanos(kTimeoutNano);
+ // route 3: No timeout values in route configuration
+ auto* route3 = new_route_config.mutable_virtual_hosts(0)->add_routes();
+ route3->mutable_match()->set_path("/grpc.testing.EchoTestService/Echo");
+ route3->mutable_route()->set_cluster(kNewCluster3Name);
+ // Set listener and route config.
+ SetListenerAndRouteConfiguration(0, std::move(listener), new_route_config);
+ // Test grpc_timeout_header_max of 1.5 seconds applied
+ auto t0 = system_clock::now();
+ CheckRpcSendFailure(1,
+ RpcOptions()
+ .set_rpc_service(SERVICE_ECHO1)
+ .set_rpc_method(METHOD_ECHO1)
+ .set_wait_for_ready(true)
+ .set_timeout_ms(kTimeoutApplicationSecond * 1000),
+ StatusCode::DEADLINE_EXCEEDED);
+ auto ellapsed_nano_seconds =
+ std::chrono::duration_cast<std::chrono::nanoseconds>(system_clock::now() -
+ t0);
+ EXPECT_GT(ellapsed_nano_seconds.count(),
+ kTimeoutGrpcTimeoutHeaderMaxSecond * 1000000000 + kTimeoutNano);
+ EXPECT_LT(ellapsed_nano_seconds.count(),
+ kTimeoutMaxStreamDurationSecond * 1000000000);
+ // Test max_stream_duration of 2.5 seconds applied
+ t0 = system_clock::now();
+ CheckRpcSendFailure(1,
+ RpcOptions()
+ .set_rpc_service(SERVICE_ECHO2)
+ .set_rpc_method(METHOD_ECHO2)
+ .set_wait_for_ready(true)
+ .set_timeout_ms(kTimeoutApplicationSecond * 1000),
+ StatusCode::DEADLINE_EXCEEDED);
+ ellapsed_nano_seconds = std::chrono::duration_cast<std::chrono::nanoseconds>(
+ system_clock::now() - t0);
+ EXPECT_GT(ellapsed_nano_seconds.count(),
+ kTimeoutMaxStreamDurationSecond * 1000000000 + kTimeoutNano);
+ EXPECT_LT(ellapsed_nano_seconds.count(),
+ kTimeoutHttpMaxStreamDurationSecond * 1000000000);
+ // Test http_stream_duration of 3.5 seconds applied
+ t0 = system_clock::now();
+ CheckRpcSendFailure(1,
+ RpcOptions().set_wait_for_ready(true).set_timeout_ms(
+ kTimeoutApplicationSecond * 1000),
+ StatusCode::DEADLINE_EXCEEDED);
+ ellapsed_nano_seconds = std::chrono::duration_cast<std::chrono::nanoseconds>(
+ system_clock::now() - t0);
+ EXPECT_GT(ellapsed_nano_seconds.count(),
+ kTimeoutHttpMaxStreamDurationSecond * 1000000000 + kTimeoutNano);
+ EXPECT_LT(ellapsed_nano_seconds.count(),
+ kTimeoutApplicationSecond * 1000000000);
+ gpr_unsetenv("GRPC_XDS_EXPERIMENTAL_ENABLE_TIMEOUT");
+}
+
+TEST_P(LdsRdsTest, XdsRoutingXdsTimeoutDisabled) {
+ const int64_t kTimeoutMillis = 500;
+ const int64_t kTimeoutNano = kTimeoutMillis * 1000000;
+ const int64_t kTimeoutGrpcTimeoutHeaderMaxSecond = 1;
+ const int64_t kTimeoutApplicationSecond = 4;
+ SetNextResolution({});
+ SetNextResolutionForLbChannelAllBalancers();
+ // Populate new EDS resources.
+ AdsServiceImpl::EdsResourceArgs args({
+ {"locality0", {g_port_saver->GetPort()}},
+ });
+ balancers_[0]->ads_service()->SetEdsResource(BuildEdsResource(args));
+ RouteConfiguration new_route_config = default_route_config_;
+ // route 1: Set grpc_timeout_header_max of 1.5
+ auto* route1 = new_route_config.mutable_virtual_hosts(0)->mutable_routes(0);
+ auto* max_stream_duration =
+ route1->mutable_route()->mutable_max_stream_duration();
+ auto* duration = max_stream_duration->mutable_grpc_timeout_header_max();
+ duration->set_seconds(kTimeoutGrpcTimeoutHeaderMaxSecond);
+ duration->set_nanos(kTimeoutNano);
+ SetRouteConfiguration(0, new_route_config);
+ // Test grpc_timeout_header_max of 1.5 seconds is not applied
+ gpr_timespec t0 = gpr_now(GPR_CLOCK_MONOTONIC);
+ gpr_timespec est_timeout_time = gpr_time_add(
+ t0, gpr_time_from_millis(
+ kTimeoutGrpcTimeoutHeaderMaxSecond * 1000 + kTimeoutMillis,
+ GPR_TIMESPAN));
+ CheckRpcSendFailure(1,
+ RpcOptions()
+ .set_rpc_service(SERVICE_ECHO1)
+ .set_rpc_method(METHOD_ECHO1)
+ .set_wait_for_ready(true)
+ .set_timeout_ms(kTimeoutApplicationSecond * 1000),
+ StatusCode::DEADLINE_EXCEEDED);
+ gpr_timespec timeout_time = gpr_now(GPR_CLOCK_MONOTONIC);
+ EXPECT_GT(gpr_time_cmp(timeout_time, est_timeout_time), 0);
+}
+
+TEST_P(LdsRdsTest, XdsRoutingHttpTimeoutDisabled) {
+ const int64_t kTimeoutMillis = 500;
+ const int64_t kTimeoutNano = kTimeoutMillis * 1000000;
+ const int64_t kTimeoutHttpMaxStreamDurationSecond = 3;
+ const int64_t kTimeoutApplicationSecond = 4;
+ SetNextResolution({});
+ SetNextResolutionForLbChannelAllBalancers();
+ // Populate new EDS resources.
+ AdsServiceImpl::EdsResourceArgs args({
+ {"locality0", {g_port_saver->GetPort()}},
+ });
+ // Construct listener.
+ auto listener = default_listener_;
+ HttpConnectionManager http_connection_manager;
+ // Set up HTTP max_stream_duration of 3.5 seconds
+ auto* duration =
+ http_connection_manager.mutable_common_http_protocol_options()
+ ->mutable_max_stream_duration();
+ duration->set_seconds(kTimeoutHttpMaxStreamDurationSecond);
+ duration->set_nanos(kTimeoutNano);
+ listener.mutable_api_listener()->mutable_api_listener()->PackFrom(
+ http_connection_manager);
+ SetListenerAndRouteConfiguration(0, std::move(listener),
+ default_route_config_);
+ // Test http_stream_duration of 3.5 seconds is not applied
+ auto t0 = gpr_now(GPR_CLOCK_MONOTONIC);
+ auto est_timeout_time = gpr_time_add(
+ t0, gpr_time_from_millis(
+ kTimeoutHttpMaxStreamDurationSecond * 1000 + kTimeoutMillis,
+ GPR_TIMESPAN));
+ CheckRpcSendFailure(1,
+ RpcOptions().set_wait_for_ready(true).set_timeout_ms(
+ kTimeoutApplicationSecond * 1000),
+ StatusCode::DEADLINE_EXCEEDED);
+ auto timeout_time = gpr_now(GPR_CLOCK_MONOTONIC);
+ EXPECT_GT(gpr_time_cmp(timeout_time, est_timeout_time), 0);
+}
+
+TEST_P(LdsRdsTest, XdsRoutingApplyApplicationTimeoutWhenXdsTimeoutExplicit0) {
+ gpr_setenv("GRPC_XDS_EXPERIMENTAL_ENABLE_TIMEOUT", "true");
+ const int64_t kTimeoutNano = 500000000;
+ const int64_t kTimeoutMaxStreamDurationSecond = 2;
+ const int64_t kTimeoutHttpMaxStreamDurationSecond = 3;
+ const int64_t kTimeoutApplicationSecond = 4;
+ const char* kNewCluster1Name = "new_cluster_1";
+ const char* kNewEdsService1Name = "new_eds_service_name_1";
+ const char* kNewCluster2Name = "new_cluster_2";
+ const char* kNewEdsService2Name = "new_eds_service_name_2";
+ SetNextResolution({});
+ SetNextResolutionForLbChannelAllBalancers();
+ // Populate new EDS resources.
+ AdsServiceImpl::EdsResourceArgs args({
+ {"locality0", {g_port_saver->GetPort()}},
+ });
+ AdsServiceImpl::EdsResourceArgs args1({
+ {"locality0", {g_port_saver->GetPort()}},
+ });
+ AdsServiceImpl::EdsResourceArgs args2({
+ {"locality0", {g_port_saver->GetPort()}},
+ });
+ balancers_[0]->ads_service()->SetEdsResource(BuildEdsResource(args));
+ balancers_[0]->ads_service()->SetEdsResource(
+ BuildEdsResource(args1, kNewEdsService1Name));
+ balancers_[0]->ads_service()->SetEdsResource(
+ BuildEdsResource(args2, kNewEdsService2Name));
+ // Populate new CDS resources.
+ Cluster new_cluster1 = default_cluster_;
+ new_cluster1.set_name(kNewCluster1Name);
+ new_cluster1.mutable_eds_cluster_config()->set_service_name(
+ kNewEdsService1Name);
+ balancers_[0]->ads_service()->SetCdsResource(new_cluster1);
+ Cluster new_cluster2 = default_cluster_;
+ new_cluster2.set_name(kNewCluster2Name);
+ new_cluster2.mutable_eds_cluster_config()->set_service_name(
+ kNewEdsService2Name);
+ balancers_[0]->ads_service()->SetCdsResource(new_cluster2);
+ // Construct listener.
+ auto listener = default_listener_;
+ HttpConnectionManager http_connection_manager;
+ // Set up HTTP max_stream_duration of 3.5 seconds
+ auto* duration =
+ http_connection_manager.mutable_common_http_protocol_options()
+ ->mutable_max_stream_duration();
+ duration->set_seconds(kTimeoutHttpMaxStreamDurationSecond);
+ duration->set_nanos(kTimeoutNano);
+ listener.mutable_api_listener()->mutable_api_listener()->PackFrom(
+ http_connection_manager);
+ // Construct route config.
+ RouteConfiguration new_route_config = default_route_config_;
+ // route 1: Set max_stream_duration of 2.5 seconds, Set
+ // grpc_timeout_header_max of 0
+ auto* route1 = new_route_config.mutable_virtual_hosts(0)->mutable_routes(0);
+ route1->mutable_match()->set_path("/grpc.testing.EchoTest1Service/Echo1");
+ route1->mutable_route()->set_cluster(kNewCluster1Name);
+ auto* max_stream_duration =
+ route1->mutable_route()->mutable_max_stream_duration();
+ duration = max_stream_duration->mutable_max_stream_duration();
+ duration->set_seconds(kTimeoutMaxStreamDurationSecond);
+ duration->set_nanos(kTimeoutNano);
+ duration = max_stream_duration->mutable_grpc_timeout_header_max();
+ duration->set_seconds(0);
+ duration->set_nanos(0);
+ // route 2: Set max_stream_duration to 0
+ auto* route2 = new_route_config.mutable_virtual_hosts(0)->add_routes();
+ route2->mutable_match()->set_path("/grpc.testing.EchoTest2Service/Echo2");
+ route2->mutable_route()->set_cluster(kNewCluster2Name);
+ max_stream_duration = route2->mutable_route()->mutable_max_stream_duration();
+ duration = max_stream_duration->mutable_max_stream_duration();
+ duration->set_seconds(0);
+ duration->set_nanos(0);
+ // Set listener and route config.
+ SetListenerAndRouteConfiguration(0, std::move(listener), new_route_config);
+ // Test application timeout is applied for route 1
+ auto t0 = system_clock::now();
+ CheckRpcSendFailure(1,
+ RpcOptions()
+ .set_rpc_service(SERVICE_ECHO1)
+ .set_rpc_method(METHOD_ECHO1)
+ .set_wait_for_ready(true)
+ .set_timeout_ms(kTimeoutApplicationSecond * 1000),
+ StatusCode::DEADLINE_EXCEEDED);
+ auto ellapsed_nano_seconds =
+ std::chrono::duration_cast<std::chrono::nanoseconds>(system_clock::now() -
+ t0);
+ EXPECT_GT(ellapsed_nano_seconds.count(),
+ kTimeoutApplicationSecond * 1000000000);
+ // Test application timeout is applied for route 2
+ t0 = system_clock::now();
+ CheckRpcSendFailure(1,
+ RpcOptions()
+ .set_rpc_service(SERVICE_ECHO2)
+ .set_rpc_method(METHOD_ECHO2)
+ .set_wait_for_ready(true)
+ .set_timeout_ms(kTimeoutApplicationSecond * 1000),
+ StatusCode::DEADLINE_EXCEEDED);
+ ellapsed_nano_seconds = std::chrono::duration_cast<std::chrono::nanoseconds>(
+ system_clock::now() - t0);
+ EXPECT_GT(ellapsed_nano_seconds.count(),
+ kTimeoutApplicationSecond * 1000000000);
+ gpr_unsetenv("GRPC_XDS_EXPERIMENTAL_ENABLE_TIMEOUT");
+}
+
+TEST_P(LdsRdsTest, XdsRoutingApplyApplicationTimeoutWhenHttpTimeoutExplicit0) {
+ gpr_setenv("GRPC_XDS_EXPERIMENTAL_ENABLE_TIMEOUT", "true");
+ const int64_t kTimeoutApplicationSecond = 4;
+ SetNextResolution({});
+ SetNextResolutionForLbChannelAllBalancers();
+ // Populate new EDS resources.
+ AdsServiceImpl::EdsResourceArgs args({
+ {"locality0", {g_port_saver->GetPort()}},
+ });
+ balancers_[0]->ads_service()->SetEdsResource(BuildEdsResource(args));
+ HttpConnectionManager http_connection_manager;
+ // Set up HTTP max_stream_duration to be explicit 0
+ auto* duration =
+ http_connection_manager.mutable_common_http_protocol_options()
+ ->mutable_max_stream_duration();
+ duration->set_seconds(0);
+ duration->set_nanos(0);
+ auto listener = default_listener_;
+ listener.mutable_api_listener()->mutable_api_listener()->PackFrom(
+ http_connection_manager);
+ // Set listener and route config.
+ SetListenerAndRouteConfiguration(0, std::move(listener),
+ default_route_config_);
+ // Test application timeout is applied for route 1
+ auto t0 = system_clock::now();
+ CheckRpcSendFailure(1,
+ RpcOptions().set_wait_for_ready(true).set_timeout_ms(
+ kTimeoutApplicationSecond * 1000),
+ StatusCode::DEADLINE_EXCEEDED);
+ auto ellapsed_nano_seconds =
+ std::chrono::duration_cast<std::chrono::nanoseconds>(system_clock::now() -
+ t0);
+ EXPECT_GT(ellapsed_nano_seconds.count(),
+ kTimeoutApplicationSecond * 1000000000);
+ gpr_unsetenv("GRPC_XDS_EXPERIMENTAL_ENABLE_TIMEOUT");
+}
+
+// Test to ensure application-specified deadline won't be affected when
+// the xDS config does not specify a timeout.
+TEST_P(LdsRdsTest, XdsRoutingWithOnlyApplicationTimeout) {
+ gpr_setenv("GRPC_XDS_EXPERIMENTAL_ENABLE_TIMEOUT", "true");
+ const int64_t kTimeoutApplicationSecond = 4;
+ SetNextResolution({});
+ SetNextResolutionForLbChannelAllBalancers();
+ // Populate new EDS resources.
+ AdsServiceImpl::EdsResourceArgs args({
+ {"locality0", {g_port_saver->GetPort()}},
+ });
+ balancers_[0]->ads_service()->SetEdsResource(BuildEdsResource(args));
+ auto t0 = system_clock::now();
+ CheckRpcSendFailure(1,
+ RpcOptions().set_wait_for_ready(true).set_timeout_ms(
+ kTimeoutApplicationSecond * 1000),
+ StatusCode::DEADLINE_EXCEEDED);
+ auto ellapsed_nano_seconds =
+ std::chrono::duration_cast<std::chrono::nanoseconds>(system_clock::now() -
+ t0);
+ EXPECT_GT(ellapsed_nano_seconds.count(),
+ kTimeoutApplicationSecond * 1000000000);
+ gpr_unsetenv("GRPC_XDS_EXPERIMENTAL_ENABLE_TIMEOUT");
+}
+
TEST_P(LdsRdsTest, XdsRoutingHeadersMatching) {
const char* kNewClusterName = "new_cluster";
const char* kNewEdsServiceName = "new_eds_service_name";
AdsServiceImpl::EdsResourceArgs args1({
{"locality0", GetBackendPorts(1, 2)},
});
+ balancers_[0]->ads_service()->SetEdsResource(BuildEdsResource(args));
balancers_[0]->ads_service()->SetEdsResource(
- AdsServiceImpl::BuildEdsResource(args));
- balancers_[0]->ads_service()->SetEdsResource(
- AdsServiceImpl::BuildEdsResource(args1, kNewEdsServiceName));
+ BuildEdsResource(args1, kNewEdsServiceName));
// Populate new CDS resources.
- Cluster new_cluster = balancers_[0]->ads_service()->default_cluster();
+ Cluster new_cluster = default_cluster_;
new_cluster.set_name(kNewClusterName);
new_cluster.mutable_eds_cluster_config()->set_service_name(
kNewEdsServiceName);
balancers_[0]->ads_service()->SetCdsResource(new_cluster);
// Populating Route Configurations for LDS.
- RouteConfiguration route_config =
- balancers_[0]->ads_service()->default_route_config();
+ RouteConfiguration route_config = default_route_config_;
auto* route1 = route_config.mutable_virtual_hosts(0)->mutable_routes(0);
route1->mutable_match()->set_prefix("/grpc.testing.EchoTest1Service/");
auto* header_matcher1 = route1->mutable_match()->add_headers();
AdsServiceImpl::EdsResourceArgs args1({
{"locality0", GetBackendPorts(1, 2)},
});
+ balancers_[0]->ads_service()->SetEdsResource(BuildEdsResource(args));
balancers_[0]->ads_service()->SetEdsResource(
- AdsServiceImpl::BuildEdsResource(args));
- balancers_[0]->ads_service()->SetEdsResource(
- AdsServiceImpl::BuildEdsResource(args1, kNewEdsServiceName));
+ BuildEdsResource(args1, kNewEdsServiceName));
// Populate new CDS resources.
- Cluster new_cluster = balancers_[0]->ads_service()->default_cluster();
+ Cluster new_cluster = default_cluster_;
new_cluster.set_name(kNewClusterName);
new_cluster.mutable_eds_cluster_config()->set_service_name(
kNewEdsServiceName);
balancers_[0]->ads_service()->SetCdsResource(new_cluster);
// Populating Route Configurations for LDS.
- RouteConfiguration route_config =
- balancers_[0]->ads_service()->default_route_config();
+ RouteConfiguration route_config = default_route_config_;
auto* route1 = route_config.mutable_virtual_hosts(0)->mutable_routes(0);
route1->mutable_match()->set_prefix("");
auto* header_matcher1 = route1->mutable_match()->add_headers();
AdsServiceImpl::EdsResourceArgs args2({
{"locality0", GetBackendPorts(2, 3)},
});
+ balancers_[0]->ads_service()->SetEdsResource(BuildEdsResource(args));
balancers_[0]->ads_service()->SetEdsResource(
- AdsServiceImpl::BuildEdsResource(args));
+ BuildEdsResource(args1, kNewEdsService1Name));
balancers_[0]->ads_service()->SetEdsResource(
- AdsServiceImpl::BuildEdsResource(args1, kNewEdsService1Name));
- balancers_[0]->ads_service()->SetEdsResource(
- AdsServiceImpl::BuildEdsResource(args2, kNewEdsService2Name));
+ BuildEdsResource(args2, kNewEdsService2Name));
// Populate new CDS resources.
- Cluster new_cluster1 = balancers_[0]->ads_service()->default_cluster();
+ Cluster new_cluster1 = default_cluster_;
new_cluster1.set_name(kNewCluster1Name);
new_cluster1.mutable_eds_cluster_config()->set_service_name(
kNewEdsService1Name);
balancers_[0]->ads_service()->SetCdsResource(new_cluster1);
- Cluster new_cluster2 = balancers_[0]->ads_service()->default_cluster();
+ Cluster new_cluster2 = default_cluster_;
new_cluster2.set_name(kNewCluster2Name);
new_cluster2.mutable_eds_cluster_config()->set_service_name(
kNewEdsService2Name);
balancers_[0]->ads_service()->SetCdsResource(new_cluster2);
// Populating Route Configurations for LDS.
- RouteConfiguration route_config =
- balancers_[0]->ads_service()->default_route_config();
+ RouteConfiguration route_config = default_route_config_;
auto* route1 = route_config.mutable_virtual_hosts(0)->mutable_routes(0);
route1->mutable_match()->set_prefix("");
auto* header_matcher1 = route1->mutable_match()->add_headers();
AdsServiceImpl::EdsResourceArgs args1({
{"locality0", GetBackendPorts(1, 2)},
});
+ balancers_[0]->ads_service()->SetEdsResource(BuildEdsResource(args));
balancers_[0]->ads_service()->SetEdsResource(
- AdsServiceImpl::BuildEdsResource(args));
- balancers_[0]->ads_service()->SetEdsResource(
- AdsServiceImpl::BuildEdsResource(args1, kNewEdsServiceName));
+ BuildEdsResource(args1, kNewEdsServiceName));
// Populate new CDS resources.
- Cluster new_cluster = balancers_[0]->ads_service()->default_cluster();
+ Cluster new_cluster = default_cluster_;
new_cluster.set_name(kNewClusterName);
new_cluster.mutable_eds_cluster_config()->set_service_name(
kNewEdsServiceName);
balancers_[0]->ads_service()->SetCdsResource(new_cluster);
// Populating Route Configurations for LDS.
- RouteConfiguration route_config =
- balancers_[0]->ads_service()->default_route_config();
+ RouteConfiguration route_config = default_route_config_;
auto* route1 = route_config.mutable_virtual_hosts(0)->mutable_routes(0);
route1->mutable_match()
->mutable_runtime_fraction()
AdsServiceImpl::EdsResourceArgs args3({
{"locality0", GetBackendPorts(3, 4)},
});
+ balancers_[0]->ads_service()->SetEdsResource(BuildEdsResource(args));
balancers_[0]->ads_service()->SetEdsResource(
- AdsServiceImpl::BuildEdsResource(args));
+ BuildEdsResource(args1, kNewEdsService1Name));
balancers_[0]->ads_service()->SetEdsResource(
- AdsServiceImpl::BuildEdsResource(args1, kNewEdsService1Name));
+ BuildEdsResource(args2, kNewEdsService2Name));
balancers_[0]->ads_service()->SetEdsResource(
- AdsServiceImpl::BuildEdsResource(args2, kNewEdsService2Name));
- balancers_[0]->ads_service()->SetEdsResource(
- AdsServiceImpl::BuildEdsResource(args3, kNewEdsService3Name));
+ BuildEdsResource(args3, kNewEdsService3Name));
// Populate new CDS resources.
- Cluster new_cluster1 = balancers_[0]->ads_service()->default_cluster();
+ Cluster new_cluster1 = default_cluster_;
new_cluster1.set_name(kNewCluster1Name);
new_cluster1.mutable_eds_cluster_config()->set_service_name(
kNewEdsService1Name);
balancers_[0]->ads_service()->SetCdsResource(new_cluster1);
- Cluster new_cluster2 = balancers_[0]->ads_service()->default_cluster();
+ Cluster new_cluster2 = default_cluster_;
new_cluster2.set_name(kNewCluster2Name);
new_cluster2.mutable_eds_cluster_config()->set_service_name(
kNewEdsService2Name);
balancers_[0]->ads_service()->SetCdsResource(new_cluster2);
- Cluster new_cluster3 = balancers_[0]->ads_service()->default_cluster();
+ Cluster new_cluster3 = default_cluster_;
new_cluster3.set_name(kNewCluster3Name);
new_cluster3.mutable_eds_cluster_config()->set_service_name(
kNewEdsService3Name);
balancers_[0]->ads_service()->SetCdsResource(new_cluster3);
// Populating Route Configurations for LDS.
- RouteConfiguration route_config =
- balancers_[0]->ads_service()->default_route_config();
+ RouteConfiguration route_config = default_route_config_;
auto* route1 = route_config.mutable_virtual_hosts(0)->mutable_routes(0);
route1->mutable_match()->set_prefix("/grpc.testing.EchoTest1Service/");
auto* header_matcher1 = route1->mutable_match()->add_headers();
AdsServiceImpl::EdsResourceArgs args1({
{"locality0", GetBackendPorts(1, 2)},
});
+ balancers_[0]->ads_service()->SetEdsResource(BuildEdsResource(args));
balancers_[0]->ads_service()->SetEdsResource(
- AdsServiceImpl::BuildEdsResource(args));
- balancers_[0]->ads_service()->SetEdsResource(
- AdsServiceImpl::BuildEdsResource(args1, kNewEdsServiceName));
+ BuildEdsResource(args1, kNewEdsServiceName));
// Populate new CDS resources.
- Cluster new_cluster = balancers_[0]->ads_service()->default_cluster();
+ Cluster new_cluster = default_cluster_;
new_cluster.set_name(kNewClusterName);
new_cluster.mutable_eds_cluster_config()->set_service_name(
kNewEdsServiceName);
balancers_[0]->ads_service()->SetCdsResource(new_cluster);
// Populating Route Configurations for LDS.
- RouteConfiguration route_config =
- balancers_[0]->ads_service()->default_route_config();
+ RouteConfiguration route_config = default_route_config_;
auto* route1 = route_config.mutable_virtual_hosts(0)->mutable_routes(0);
route1->mutable_match()->set_prefix("/grpc.testing.EchoTest1Service/");
route1->mutable_route()->set_cluster(kNewClusterName);
// Tests that CDS client should send a NACK if the cluster type in CDS response
// is other than EDS.
TEST_P(CdsTest, WrongClusterType) {
- auto cluster = balancers_[0]->ads_service()->default_cluster();
+ auto cluster = default_cluster_;
cluster.set_type(Cluster::STATIC);
balancers_[0]->ads_service()->SetCdsResource(cluster);
SetNextResolution({});
// Tests that CDS client should send a NACK if the eds_config in CDS response is
// other than ADS.
TEST_P(CdsTest, WrongEdsConfig) {
- auto cluster = balancers_[0]->ads_service()->default_cluster();
+ auto cluster = default_cluster_;
cluster.mutable_eds_cluster_config()->mutable_eds_config()->mutable_self();
balancers_[0]->ads_service()->SetCdsResource(cluster);
SetNextResolution({});
// Tests that CDS client should send a NACK if the lb_policy in CDS response is
// other than ROUND_ROBIN.
TEST_P(CdsTest, WrongLbPolicy) {
- auto cluster = balancers_[0]->ads_service()->default_cluster();
+ auto cluster = default_cluster_;
cluster.set_lb_policy(Cluster::LEAST_REQUEST);
balancers_[0]->ads_service()->SetCdsResource(cluster);
SetNextResolution({});
// Tests that CDS client should send a NACK if the lrs_server in CDS response is
// other than SELF.
TEST_P(CdsTest, WrongLrsServer) {
- auto cluster = balancers_[0]->ads_service()->default_cluster();
+ auto cluster = default_cluster_;
cluster.mutable_lrs_server()->mutable_ads();
balancers_[0]->ads_service()->SetCdsResource(cluster);
SetNextResolution({});
AdsServiceImpl::EdsResourceArgs args({
{"locality0", GetBackendPorts(), kDefaultLocalityWeight, 1},
});
- balancers_[0]->ads_service()->SetEdsResource(
- AdsServiceImpl::BuildEdsResource(args));
+ balancers_[0]->ads_service()->SetEdsResource(BuildEdsResource(args));
CheckRpcSendFailure();
const auto& response_state =
balancers_[0]->ads_service()->eds_response_state();
{"locality0", GetBackendPorts()},
});
balancers_[0]->ads_service()->SetEdsResource(
- AdsServiceImpl::BuildEdsResource(args, kDefaultClusterName));
- Cluster cluster = balancers_[0]->ads_service()->default_cluster();
+ BuildEdsResource(args, kDefaultClusterName));
+ Cluster cluster = default_cluster_;
cluster.mutable_eds_cluster_config()->clear_service_name();
balancers_[0]->ads_service()->SetCdsResource(cluster);
SetNextResolution({});
{"locality1", GetBackendPorts(1, 2), kLocalityWeight1},
});
balancers_[0]->ads_service()->SetEdsResource(
- AdsServiceImpl::BuildEdsResource(args, DefaultEdsServiceName()));
+ BuildEdsResource(args, DefaultEdsServiceName()));
// Wait for both backends to be ready.
WaitForAllBackends(0, 2);
// Send kNumRpcs RPCs.
{"locality1", {}},
});
balancers_[0]->ads_service()->SetEdsResource(
- AdsServiceImpl::BuildEdsResource(args, DefaultEdsServiceName()));
+ BuildEdsResource(args, DefaultEdsServiceName()));
// Wait for both backends to be ready.
WaitForAllBackends();
// Send kNumRpcs RPCs.
SetNextResolution({});
SetNextResolutionForLbChannelAllBalancers();
balancers_[0]->ads_service()->SetEdsResource(
- AdsServiceImpl::BuildEdsResource({}, DefaultEdsServiceName()));
+ BuildEdsResource({}, DefaultEdsServiceName()));
Status status = SendRpc();
EXPECT_FALSE(status.ok());
EXPECT_EQ(status.error_code(), StatusCode::UNAVAILABLE);
args.locality_list.emplace_back(std::move(locality));
}
balancers_[0]->ads_service()->SetEdsResource(
- AdsServiceImpl::BuildEdsResource(args, DefaultEdsServiceName()));
+ BuildEdsResource(args, DefaultEdsServiceName()));
// The second ADS response contains 1 locality, which contains backend 1.
args = AdsServiceImpl::EdsResourceArgs({
{"locality0", GetBackendPorts(1, 2)},
});
std::thread delayed_resource_setter(
std::bind(&BasicTest::SetEdsResourceWithDelay, this, 0,
- AdsServiceImpl::BuildEdsResource(args, DefaultEdsServiceName()),
- 60 * 1000));
+ BuildEdsResource(args, DefaultEdsServiceName()), 60 * 1000));
// Wait until backend 0 is ready, before which kNumLocalities localities are
// received and handled by the xds policy.
WaitForBackend(0, /*reset_counters=*/false);
const double kTotalLocalityWeight0 =
std::accumulate(kLocalityWeights0.begin(), kLocalityWeights0.end(), 0);
std::vector<double> locality_weight_rate_0;
+ locality_weight_rate_0.reserve(kLocalityWeights0.size());
for (int weight : kLocalityWeights0) {
locality_weight_rate_0.push_back(weight / kTotalLocalityWeight0);
}
{"locality2", GetBackendPorts(2, 3), 4},
});
balancers_[0]->ads_service()->SetEdsResource(
- AdsServiceImpl::BuildEdsResource(args, DefaultEdsServiceName()));
+ BuildEdsResource(args, DefaultEdsServiceName()));
// Wait for the first 3 backends to be ready.
WaitForAllBackends(0, 3);
gpr_log(GPR_INFO, "========= BEFORE FIRST BATCH ==========");
{"locality3", GetBackendPorts(3, 4), 6},
});
balancers_[0]->ads_service()->SetEdsResource(
- AdsServiceImpl::BuildEdsResource(args, DefaultEdsServiceName()));
+ BuildEdsResource(args, DefaultEdsServiceName()));
// Backend 3 hasn't received any request.
EXPECT_EQ(0U, backends_[3]->backend_service()->request_count());
// Wait until the locality update has been processed, as signaled by backend 3
{"locality0", GetBackendPorts(0, 1)},
});
balancers_[0]->ads_service()->SetEdsResource(
- AdsServiceImpl::BuildEdsResource(args, DefaultEdsServiceName()));
+ BuildEdsResource(args, DefaultEdsServiceName()));
args = AdsServiceImpl::EdsResourceArgs({
{"locality1", GetBackendPorts(1, 2)},
});
- std::thread delayed_resource_setter(std::bind(
- &BasicTest::SetEdsResourceWithDelay, this, 0,
- AdsServiceImpl::BuildEdsResource(args, DefaultEdsServiceName()), 5000));
+ std::thread delayed_resource_setter(
+ std::bind(&BasicTest::SetEdsResourceWithDelay, this, 0,
+ BuildEdsResource(args, DefaultEdsServiceName()), 5000));
// Wait for the first backend to be ready.
WaitForBackend(0);
// Keep sending RPCs until we switch over to backend 1, which tells us
{"locality3", GetBackendPorts(3, 4), kDefaultLocalityWeight, 0},
});
balancers_[0]->ads_service()->SetEdsResource(
- AdsServiceImpl::BuildEdsResource(args, DefaultEdsServiceName()));
+ BuildEdsResource(args, DefaultEdsServiceName()));
WaitForBackend(3, false);
for (size_t i = 0; i < 3; ++i) {
EXPECT_EQ(0U, backends_[i]->backend_service()->request_count());
{"locality3", {}, kDefaultLocalityWeight, 0},
});
balancers_[0]->ads_service()->SetEdsResource(
- AdsServiceImpl::BuildEdsResource(args, DefaultEdsServiceName()));
+ BuildEdsResource(args, DefaultEdsServiceName()));
WaitForBackend(0, false);
for (size_t i = 1; i < 3; ++i) {
EXPECT_EQ(0U, backends_[i]->backend_service()->request_count());
{"locality1", GetBackendPorts(), kDefaultLocalityWeight, 0},
});
balancers_[0]->ads_service()->SetEdsResource(
- AdsServiceImpl::BuildEdsResource(args, DefaultEdsServiceName()));
+ BuildEdsResource(args, DefaultEdsServiceName()));
// Wait for all backends to be used.
std::tuple<int, int, int> counts = WaitForAllBackends();
// Make sure no RPCs failed in the transition.
ShutdownBackend(3);
ShutdownBackend(0);
balancers_[0]->ads_service()->SetEdsResource(
- AdsServiceImpl::BuildEdsResource(args, DefaultEdsServiceName()));
+ BuildEdsResource(args, DefaultEdsServiceName()));
WaitForBackend(1, false);
for (size_t i = 0; i < 4; ++i) {
if (i == 1) continue;
ShutdownBackend(3);
ShutdownBackend(0);
balancers_[0]->ads_service()->SetEdsResource(
- AdsServiceImpl::BuildEdsResource(args, DefaultEdsServiceName()));
+ BuildEdsResource(args, DefaultEdsServiceName()));
WaitForBackend(1, false);
for (size_t i = 0; i < 4; ++i) {
if (i == 1) continue;
{"locality1", GetBackendPorts(1, 2), kDefaultLocalityWeight, 1},
});
balancers_[0]->ads_service()->SetEdsResource(
- AdsServiceImpl::BuildEdsResource(args, DefaultEdsServiceName()));
+ BuildEdsResource(args, DefaultEdsServiceName()));
args = AdsServiceImpl::EdsResourceArgs({
{"locality0", GetBackendPorts(0, 1), kDefaultLocalityWeight, 0},
{"locality1", GetBackendPorts(1, 2), kDefaultLocalityWeight, 1},
});
ShutdownBackend(0);
ShutdownBackend(1);
- std::thread delayed_resource_setter(std::bind(
- &BasicTest::SetEdsResourceWithDelay, this, 0,
- AdsServiceImpl::BuildEdsResource(args, DefaultEdsServiceName()), 1000));
+ std::thread delayed_resource_setter(
+ std::bind(&BasicTest::SetEdsResourceWithDelay, this, 0,
+ BuildEdsResource(args, DefaultEdsServiceName()), 1000));
gpr_timespec deadline = gpr_time_add(gpr_now(GPR_CLOCK_REALTIME),
gpr_time_from_millis(500, GPR_TIMESPAN));
// Send 0.5 second worth of RPCs.
{"locality3", GetBackendPorts(3, 4), kDefaultLocalityWeight, 0},
});
balancers_[0]->ads_service()->SetEdsResource(
- AdsServiceImpl::BuildEdsResource(args, DefaultEdsServiceName()));
+ BuildEdsResource(args, DefaultEdsServiceName()));
args = AdsServiceImpl::EdsResourceArgs({
{"locality0", GetBackendPorts(0, 1), kDefaultLocalityWeight, 2},
{"locality1", GetBackendPorts(1, 2), kDefaultLocalityWeight, 0},
{"locality2", GetBackendPorts(2, 3), kDefaultLocalityWeight, 1},
{"locality3", GetBackendPorts(3, 4), kDefaultLocalityWeight, 3},
});
- std::thread delayed_resource_setter(std::bind(
- &BasicTest::SetEdsResourceWithDelay, this, 0,
- AdsServiceImpl::BuildEdsResource(args, DefaultEdsServiceName()), 1000));
+ std::thread delayed_resource_setter(
+ std::bind(&BasicTest::SetEdsResourceWithDelay, this, 0,
+ BuildEdsResource(args, DefaultEdsServiceName()), 1000));
WaitForBackend(3, false);
for (size_t i = 0; i < 3; ++i) {
EXPECT_EQ(0U, backends_[i]->backend_service()->request_count());
{"locality1", GetBackendPorts(1, 3), kDefaultLocalityWeight, 1},
});
balancers_[0]->ads_service()->SetEdsResource(
- AdsServiceImpl::BuildEdsResource(args, DefaultEdsServiceName()));
+ BuildEdsResource(args, DefaultEdsServiceName()));
// Second update:
// - Priority 0 contains both localities 0 and 1.
// - Priority 1 is not present.
{"locality0", GetBackendPorts(0, 1), kDefaultLocalityWeight, 0},
{"locality1", GetBackendPorts(1, 4), kDefaultLocalityWeight, 0},
});
- std::thread delayed_resource_setter(std::bind(
- &BasicTest::SetEdsResourceWithDelay, this, 0,
- AdsServiceImpl::BuildEdsResource(args, DefaultEdsServiceName()), 1000));
+ std::thread delayed_resource_setter(
+ std::bind(&BasicTest::SetEdsResourceWithDelay, this, 0,
+ BuildEdsResource(args, DefaultEdsServiceName()), 1000));
// When we get the first update, all backends in priority 0 are down,
// so we will create priority 1. Backends 1 and 2 should have traffic,
// but backend 3 should not.
args.drop_categories = {{kLbDropType, kDropPerMillionForLb},
{kThrottleDropType, kDropPerMillionForThrottle}};
balancers_[0]->ads_service()->SetEdsResource(
- AdsServiceImpl::BuildEdsResource(args, DefaultEdsServiceName()));
+ BuildEdsResource(args, DefaultEdsServiceName()));
WaitForAllBackends();
// Send kNumRpcs RPCs and count the drops.
size_t num_drops = 0;
args.drop_categories = {{kLbDropType, kDropPerHundredForLb}};
args.drop_denominator = FractionalPercent::HUNDRED;
balancers_[0]->ads_service()->SetEdsResource(
- AdsServiceImpl::BuildEdsResource(args, DefaultEdsServiceName()));
+ BuildEdsResource(args, DefaultEdsServiceName()));
WaitForAllBackends();
// Send kNumRpcs RPCs and count the drops.
size_t num_drops = 0;
args.drop_categories = {{kLbDropType, kDropPerTenThousandForLb}};
args.drop_denominator = FractionalPercent::TEN_THOUSAND;
balancers_[0]->ads_service()->SetEdsResource(
- AdsServiceImpl::BuildEdsResource(args, DefaultEdsServiceName()));
+ BuildEdsResource(args, DefaultEdsServiceName()));
WaitForAllBackends();
// Send kNumRpcs RPCs and count the drops.
size_t num_drops = 0;
});
args.drop_categories = {{kLbDropType, kDropPerMillionForLb}};
balancers_[0]->ads_service()->SetEdsResource(
- AdsServiceImpl::BuildEdsResource(args, DefaultEdsServiceName()));
+ BuildEdsResource(args, DefaultEdsServiceName()));
WaitForAllBackends();
// Send kNumRpcs RPCs and count the drops.
size_t num_drops = 0;
args.drop_categories = {{kLbDropType, kDropPerMillionForLb},
{kThrottleDropType, kDropPerMillionForThrottle}};
balancers_[0]->ads_service()->SetEdsResource(
- AdsServiceImpl::BuildEdsResource(args, DefaultEdsServiceName()));
+ BuildEdsResource(args, DefaultEdsServiceName()));
// Wait until the drop rate increases to the middle of the two configs, which
// implies that the update has been in effect.
const double kDropRateThreshold =
args.drop_categories = {{kLbDropType, kDropPerMillionForLb},
{kThrottleDropType, kDropPerMillionForThrottle}};
balancers_[0]->ads_service()->SetEdsResource(
- AdsServiceImpl::BuildEdsResource(args, DefaultEdsServiceName()));
+ BuildEdsResource(args, DefaultEdsServiceName()));
// Send kNumRpcs RPCs and all of them are dropped.
for (size_t i = 0; i < kNumRpcs; ++i) {
EchoResponse response;
{"locality0", {backends_[0]->port()}},
});
balancers_[0]->ads_service()->SetEdsResource(
- AdsServiceImpl::BuildEdsResource(args, DefaultEdsServiceName()));
+ BuildEdsResource(args, DefaultEdsServiceName()));
args = AdsServiceImpl::EdsResourceArgs({
{"locality0", {backends_[1]->port()}},
});
balancers_[1]->ads_service()->SetEdsResource(
- AdsServiceImpl::BuildEdsResource(args, DefaultEdsServiceName()));
+ BuildEdsResource(args, DefaultEdsServiceName()));
// Wait until the first backend is ready.
WaitForBackend(0);
// Send 10 requests.
{"locality0", {backends_[0]->port()}},
});
balancers_[0]->ads_service()->SetEdsResource(
- AdsServiceImpl::BuildEdsResource(args, DefaultEdsServiceName()));
+ BuildEdsResource(args, DefaultEdsServiceName()));
args = AdsServiceImpl::EdsResourceArgs({
{"locality0", {backends_[1]->port()}},
});
balancers_[1]->ads_service()->SetEdsResource(
- AdsServiceImpl::BuildEdsResource(args, DefaultEdsServiceName()));
+ BuildEdsResource(args, DefaultEdsServiceName()));
// Wait until the first backend is ready.
WaitForBackend(0);
// Send 10 requests.
{"locality0", {backends_[0]->port()}},
});
balancers_[0]->ads_service()->SetEdsResource(
- AdsServiceImpl::BuildEdsResource(args, DefaultEdsServiceName()));
+ BuildEdsResource(args, DefaultEdsServiceName()));
args = AdsServiceImpl::EdsResourceArgs({
{"locality0", {backends_[1]->port()}},
});
balancers_[1]->ads_service()->SetEdsResource(
- AdsServiceImpl::BuildEdsResource(args, DefaultEdsServiceName()));
+ BuildEdsResource(args, DefaultEdsServiceName()));
// Start servers and send 10 RPCs per server.
gpr_log(GPR_INFO, "========= BEFORE FIRST BATCH ==========");
CheckRpcSendOk(10);
<< balancers_[2]->ads_service()->eds_response_state().error_message;
}
-// The re-resolution tests are deferred because they rely on the fallback mode,
-// which hasn't been supported.
-
-// TODO(juanlishen): Add TEST_P(BalancerUpdateTest, ReresolveDeadBackend).
-
-// TODO(juanlishen): Add TEST_P(UpdatesWithClientLoadReportingTest,
-// ReresolveDeadBalancer)
-
class ClientLoadReportingTest : public XdsEnd2endTest {
public:
ClientLoadReportingTest() : XdsEnd2endTest(4, 1, 3) {}
{"locality0", GetBackendPorts()},
});
balancers_[0]->ads_service()->SetEdsResource(
- AdsServiceImpl::BuildEdsResource(args, DefaultEdsServiceName()));
+ BuildEdsResource(args, DefaultEdsServiceName()));
// Wait until all backends are ready.
int num_ok = 0;
int num_failure = 0;
{"locality0", GetBackendPorts()},
});
balancers_[0]->ads_service()->SetEdsResource(
- AdsServiceImpl::BuildEdsResource(args, DefaultEdsServiceName()));
+ BuildEdsResource(args, DefaultEdsServiceName()));
// Wait until all backends are ready.
int num_ok = 0;
int num_failure = 0;
{"locality0", GetBackendPorts()},
});
balancers_[0]->ads_service()->SetEdsResource(
- AdsServiceImpl::BuildEdsResource(args, DefaultEdsServiceName()));
+ BuildEdsResource(args, DefaultEdsServiceName()));
// Wait until all backends are ready.
int num_ok = 0;
int num_failure = 0;
{"locality0", GetBackendPorts(0, kNumBackendsFirstPass)},
});
balancers_[0]->ads_service()->SetEdsResource(
- AdsServiceImpl::BuildEdsResource(args, DefaultEdsServiceName()));
+ BuildEdsResource(args, DefaultEdsServiceName()));
// Wait until all backends returned by the balancer are ready.
int num_ok = 0;
int num_failure = 0;
{"locality0", GetBackendPorts(kNumBackendsFirstPass)},
});
balancers_[0]->ads_service()->SetEdsResource(
- AdsServiceImpl::BuildEdsResource(args, DefaultEdsServiceName()));
+ BuildEdsResource(args, DefaultEdsServiceName()));
// Wait for queries to start going to one of the new backends.
// This tells us that we're now using the new serverlist.
std::tie(num_ok, num_failure, num_drops) =
args.drop_categories = {{kLbDropType, kDropPerMillionForLb},
{kThrottleDropType, kDropPerMillionForThrottle}};
balancers_[0]->ads_service()->SetEdsResource(
- AdsServiceImpl::BuildEdsResource(args, DefaultEdsServiceName()));
+ BuildEdsResource(args, DefaultEdsServiceName()));
int num_ok = 0;
int num_failure = 0;
int num_drops = 0;
using ::opencensus::stats::ViewDescriptor;
using ::opencensus::stats::testing::TestUtils;
using ::opencensus::tags::TagKey;
-using ::opencensus::tags::TagMap;
using ::opencensus::tags::WithTagMap;
static const auto TEST_TAG_KEY = TagKey::Register("my_key");
protected:
static void SetUpTestCase() { RegisterOpenCensusPlugin(); }
- void SetUp() {
+ void SetUp() override {
// Set up a synchronous server on a different thread to avoid the asynch
// interface.
::grpc::ServerBuilder builder;
server_ = builder.BuildAndStart();
ASSERT_NE(nullptr, server_);
ASSERT_NE(0, port);
- server_address_ = absl::StrCat("0.0.0.0:", port);
+ server_address_ = absl::StrCat("localhost:", port);
server_thread_ = std::thread(&StatsPluginEnd2EndTest::RunServerLoop, this);
stub_ = EchoTestService::NewStub(::grpc::CreateChannel(
server_address_, ::grpc::InsecureChannelCredentials()));
}
- void TearDown() {
+ void TearDown() override {
server_->Shutdown();
server_thread_.join();
}
"server_helper.h",
],
external_deps = [
- "gflags",
+ "absl/flags:flag",
],
language = "C++",
deps = [
srcs = [
"grpclb_fallback_test.cc",
],
+ external_deps = [
+ "absl/flags:flag",
+ ],
language = "C++",
tags = ["no_windows"],
deps = [
srcs = [
"interop_server_bootstrap.cc",
],
+ external_deps = [
+ "absl/flags:flag",
+ ],
language = "C++",
deps = [
":interop_server_lib",
"client_helper.h",
"interop_client.h",
],
+ external_deps = [
+ "absl/flags:flag",
+ ],
language = "C++",
deps = [
"//src/proto/grpc/testing:empty_proto",
srcs = [
"client.cc",
],
+ external_deps = [
+ "absl/flags:flag",
+ ],
language = "C++",
deps = [
":client_helper_lib",
name = "metrics_client",
srcs = ["metrics_client.cc"],
external_deps = [
- "gflags",
+ "absl/flags:flag",
],
language = "C++",
deps = [
srcs = [
"reconnect_interop_client.cc",
],
+ external_deps = [
+ "absl/flags:flag",
+ ],
deps = [
":client_helper_lib",
"//:grpc++",
srcs = [
"reconnect_interop_server.cc",
],
+ external_deps = [
+ "absl/flags:flag",
+ ],
language = "C++",
deps = [
":interop_server_lib",
"stress_interop_client.h",
"stress_test.cc",
],
+ external_deps = [
+ "absl/flags:flag",
+ ],
deps = [
":client_helper_lib",
"//:grpc++",
":interop_server",
],
external_deps = [
- "gflags",
+ "absl/flags:flag",
],
tags = ["no_windows"],
deps = [
srcs = [
"xds_interop_client.cc",
],
+ external_deps = [
+ "absl/flags:flag",
+ ],
deps = [
"//:grpc++",
"//src/proto/grpc/testing:empty_proto",
srcs = [
"xds_interop_server.cc",
],
+ external_deps = [
+ "absl/flags:flag",
+ ],
deps = [
"//:grpc++",
"//src/proto/grpc/testing:empty_proto",
"http2_client.cc",
"http2_client.h",
],
+ external_deps = [
+ "absl/flags:flag",
+ ],
deps = [
"//:grpc++",
"//src/proto/grpc/testing:empty_proto",
*
*/
-#include <memory>
-#include <unordered_map>
-
-#include <gflags/gflags.h>
#include <grpc/grpc.h>
#include <grpc/support/alloc.h>
#include <grpc/support/log.h>
#include <grpcpp/channel.h>
#include <grpcpp/client_context.h>
+#include <memory>
+#include <unordered_map>
+
+#include "absl/flags/flag.h"
#include "src/core/lib/gpr/string.h"
#include "test/core/util/test_config.h"
#include "test/cpp/interop/client_helper.h"
#include "test/cpp/interop/interop_client.h"
#include "test/cpp/util/test_config.h"
-DEFINE_bool(use_alts, false,
- "Whether to use alts. Enable alts will disable tls.");
-DEFINE_bool(use_tls, false, "Whether to use tls.");
-DEFINE_string(custom_credentials_type, "", "User provided credentials type.");
-DEFINE_bool(use_test_ca, false, "False to use SSL roots for google");
-DEFINE_int32(server_port, 0, "Server port.");
-DEFINE_string(server_host, "localhost", "Server host to connect to");
-DEFINE_string(server_host_override, "",
- "Override the server host which is sent in HTTP header");
-DEFINE_string(
- test_case, "large_unary",
+ABSL_FLAG(bool, use_alts, false,
+ "Whether to use alts. Enable alts will disable tls.");
+ABSL_FLAG(bool, use_tls, false, "Whether to use tls.");
+ABSL_FLAG(std::string, custom_credentials_type, "",
+ "User provided credentials type.");
+ABSL_FLAG(bool, use_test_ca, false, "False to use SSL roots for google");
+ABSL_FLAG(int32_t, server_port, 0, "Server port.");
+ABSL_FLAG(std::string, server_host, "localhost", "Server host to connect to");
+ABSL_FLAG(std::string, server_host_override, "",
+ "Override the server host which is sent in HTTP header");
+ABSL_FLAG(
+ std::string, test_case, "large_unary",
"Configure different test cases. Valid options are:\n\n"
"all : all test cases;\n"
+
+ // TODO(veblush): Replace the help message with the following full message
+ // once Abseil fixes the flag-help compiler error on Windows. (b/171659833)
+ /*
"cancel_after_begin : cancel stream after starting it;\n"
"cancel_after_first_response: cancel on first response;\n"
"channel_soak: sends 'soak_iterations' rpcs, rebuilds channel each time;\n"
"status_code_and_message: verify status code & message;\n"
"timeout_on_sleeping_server: deadline exceeds on stream;\n"
"unimplemented_method: client calls an unimplemented method;\n"
- "unimplemented_service: client calls an unimplemented service;\n");
-DEFINE_string(default_service_account, "",
- "Email of GCE default service account");
-DEFINE_string(service_account_key_file, "",
- "Path to service account json key file.");
-DEFINE_string(oauth_scope, "", "Scope for OAuth tokens.");
-DEFINE_bool(do_not_abort_on_transient_failures, false,
- "If set to 'true', abort() is not called in case of transient "
- "failures (i.e failures that are temporary and will likely go away "
- "on retrying; like a temporary connection failure) and an error "
- "message is printed instead. Note that this flag just controls "
- "whether abort() is called or not. It does not control whether the "
- "test is retried in case of transient failures (and currently the "
- "interop tests are not retried even if this flag is set to true)");
-DEFINE_int32(soak_iterations, 1000,
- "The number of iterations to use for the two soak tests; rpc_soak "
- "and channel_soak.");
-DEFINE_int32(soak_max_failures, 0,
- "The number of iterations in soak tests that are allowed to fail "
- "(either due to non-OK status code or exceeding the "
- "per-iteration max acceptable latency).");
-DEFINE_int32(soak_per_iteration_max_acceptable_latency_ms, 0,
- "The number of milliseconds a single iteration in the two soak "
- "tests (rpc_soak and channel_soak) should take.");
-DEFINE_int32(soak_overall_timeout_seconds, 0,
- "The overall number of seconds after which a soak test should "
- "stop and fail, if the desired number of iterations have not yet "
- "completed.");
-DEFINE_int32(iteration_interval, 10,
- "The interval in seconds between rpcs. This is used by "
- "long_connection test");
-DEFINE_string(additional_metadata, "",
- "Additional metadata to send in each request, as a "
- "semicolon-separated list of key:value pairs.");
+ "unimplemented_service: client calls an unimplemented service;\n"
+ */
+);
+ABSL_FLAG(std::string, default_service_account, "",
+ "Email of GCE default service account");
+ABSL_FLAG(std::string, service_account_key_file, "",
+ "Path to service account json key file.");
+ABSL_FLAG(std::string, oauth_scope, "", "Scope for OAuth tokens.");
+ABSL_FLAG(bool, do_not_abort_on_transient_failures, false,
+ "If set to 'true', abort() is not called in case of transient "
+ "failures (i.e failures that are temporary and will likely go away "
+ "on retrying; like a temporary connection failure) and an error "
+ "message is printed instead. Note that this flag just controls "
+ "whether abort() is called or not. It does not control whether the "
+ "test is retried in case of transient failures (and currently the "
+ "interop tests are not retried even if this flag is set to true)");
+ABSL_FLAG(int32_t, soak_iterations, 1000,
+ "The number of iterations to use for the two soak tests; rpc_soak "
+ "and channel_soak.");
+ABSL_FLAG(int32_t, soak_max_failures, 0,
+ "The number of iterations in soak tests that are allowed to fail "
+ "(either due to non-OK status code or exceeding the "
+ "per-iteration max acceptable latency).");
+ABSL_FLAG(int32_t, soak_per_iteration_max_acceptable_latency_ms, 0,
+ "The number of milliseconds a single iteration in the two soak "
+ "tests (rpc_soak and channel_soak) should take.");
+ABSL_FLAG(int32_t, soak_overall_timeout_seconds, 0,
+ "The overall number of seconds after which a soak test should "
+ "stop and fail, if the desired number of iterations have not yet "
+ "completed.");
+ABSL_FLAG(int32_t, iteration_interval, 10,
+ "The interval in seconds between rpcs. This is used by "
+ "long_connection test");
+ABSL_FLAG(std::string, additional_metadata, "",
+ "Additional metadata to send in each request, as a "
+ "semicolon-separated list of key:value pairs.");
using grpc::testing::CreateChannelForTestCase;
using grpc::testing::GetServiceAccountJsonKey;
int main(int argc, char** argv) {
grpc::testing::TestEnvironment env(argc, argv);
grpc::testing::InitTest(&argc, &argv, true);
- gpr_log(GPR_INFO, "Testing these cases: %s", FLAGS_test_case.c_str());
+ gpr_log(GPR_INFO, "Testing these cases: %s",
+ absl::GetFlag(FLAGS_test_case).c_str());
int ret = 0;
grpc::testing::ChannelCreationFunc channel_creation_func;
- std::string test_case = FLAGS_test_case;
- if (FLAGS_additional_metadata == "") {
+ std::string test_case = absl::GetFlag(FLAGS_test_case);
+ if (absl::GetFlag(FLAGS_additional_metadata).empty()) {
channel_creation_func = [test_case]() {
return CreateChannelForTestCase(test_case);
};
} else {
std::multimap<std::string, std::string> additional_metadata;
- if (!ParseAdditionalMetadataFlag(FLAGS_additional_metadata,
+ if (!ParseAdditionalMetadataFlag(absl::GetFlag(FLAGS_additional_metadata),
&additional_metadata)) {
return 1;
}
};
}
- grpc::testing::InteropClient client(channel_creation_func, true,
- FLAGS_do_not_abort_on_transient_failures);
+ grpc::testing::InteropClient client(
+ channel_creation_func, true,
+ absl::GetFlag(FLAGS_do_not_abort_on_transient_failures));
std::unordered_map<std::string, std::function<bool()>> actions;
actions["empty_unary"] =
std::bind(&grpc::testing::InteropClient::DoEmptyStream, &client);
actions["pick_first_unary"] =
std::bind(&grpc::testing::InteropClient::DoPickFirstUnary, &client);
- if (FLAGS_use_tls) {
+ if (absl::GetFlag(FLAGS_use_tls)) {
actions["compute_engine_creds"] =
std::bind(&grpc::testing::InteropClient::DoComputeEngineCreds, &client,
- FLAGS_default_service_account, FLAGS_oauth_scope);
+ absl::GetFlag(FLAGS_default_service_account),
+ absl::GetFlag(FLAGS_oauth_scope));
actions["jwt_token_creds"] =
std::bind(&grpc::testing::InteropClient::DoJwtTokenCreds, &client,
GetServiceAccountJsonKey());
actions["oauth2_auth_token"] =
std::bind(&grpc::testing::InteropClient::DoOauth2AuthToken, &client,
- FLAGS_default_service_account, FLAGS_oauth_scope);
+ absl::GetFlag(FLAGS_default_service_account),
+ absl::GetFlag(FLAGS_oauth_scope));
actions["per_rpc_creds"] =
std::bind(&grpc::testing::InteropClient::DoPerRpcCreds, &client,
GetServiceAccountJsonKey());
}
- if (FLAGS_custom_credentials_type == "google_default_credentials") {
+ if (absl::GetFlag(FLAGS_custom_credentials_type) ==
+ "google_default_credentials") {
actions["google_default_credentials"] =
std::bind(&grpc::testing::InteropClient::DoGoogleDefaultCredentials,
- &client, FLAGS_default_service_account);
+ &client, absl::GetFlag(FLAGS_default_service_account));
}
actions["status_code_and_message"] =
std::bind(&grpc::testing::InteropClient::DoStatusWithMessage, &client);
std::bind(&grpc::testing::InteropClient::DoUnimplementedService, &client);
actions["cacheable_unary"] =
std::bind(&grpc::testing::InteropClient::DoCacheableUnary, &client);
- actions["channel_soak"] =
- std::bind(&grpc::testing::InteropClient::DoChannelSoakTest, &client,
- FLAGS_soak_iterations, FLAGS_soak_max_failures,
- FLAGS_soak_per_iteration_max_acceptable_latency_ms,
- FLAGS_soak_overall_timeout_seconds);
- actions["rpc_soak"] =
- std::bind(&grpc::testing::InteropClient::DoRpcSoakTest, &client,
- FLAGS_soak_iterations, FLAGS_soak_max_failures,
- FLAGS_soak_per_iteration_max_acceptable_latency_ms,
- FLAGS_soak_overall_timeout_seconds);
+ actions["channel_soak"] = std::bind(
+ &grpc::testing::InteropClient::DoChannelSoakTest, &client,
+ absl::GetFlag(FLAGS_soak_iterations),
+ absl::GetFlag(FLAGS_soak_max_failures),
+ absl::GetFlag(FLAGS_soak_per_iteration_max_acceptable_latency_ms),
+ absl::GetFlag(FLAGS_soak_overall_timeout_seconds));
+ actions["rpc_soak"] = std::bind(
+ &grpc::testing::InteropClient::DoRpcSoakTest, &client,
+ absl::GetFlag(FLAGS_soak_iterations),
+ absl::GetFlag(FLAGS_soak_max_failures),
+ absl::GetFlag(FLAGS_soak_per_iteration_max_acceptable_latency_ms),
+ absl::GetFlag(FLAGS_soak_overall_timeout_seconds));
actions["long_lived_channel"] =
std::bind(&grpc::testing::InteropClient::DoLongLivedChannelTest, &client,
- FLAGS_soak_iterations, FLAGS_iteration_interval);
+ absl::GetFlag(FLAGS_soak_iterations),
+ absl::GetFlag(FLAGS_iteration_interval));
UpdateActions(&actions);
- if (FLAGS_test_case == "all") {
+ if (absl::GetFlag(FLAGS_test_case) == "all") {
for (const auto& action : actions) {
action.second();
}
- } else if (actions.find(FLAGS_test_case) != actions.end()) {
- actions.find(FLAGS_test_case)->second();
+ } else if (actions.find(absl::GetFlag(FLAGS_test_case)) != actions.end()) {
+ actions.find(absl::GetFlag(FLAGS_test_case))->second();
} else {
std::string test_cases;
for (const auto& action : actions) {
test_cases += action.first;
}
gpr_log(GPR_ERROR, "Unsupported test case %s. Valid options are\n%s",
- FLAGS_test_case.c_str(), test_cases.c_str());
+ absl::GetFlag(FLAGS_test_case).c_str(), test_cases.c_str());
ret = 1;
}
#include "test/cpp/interop/client_helper.h"
-#include <fstream>
-#include <memory>
-#include <sstream>
-
-#include <gflags/gflags.h>
#include <grpc/grpc.h>
#include <grpc/support/alloc.h>
#include <grpc/support/log.h>
#include <grpcpp/create_channel.h>
#include <grpcpp/security/credentials.h>
+#include <fstream>
+#include <memory>
+#include <sstream>
+
+#include "absl/flags/declare.h"
+#include "absl/flags/flag.h"
#include "src/cpp/client/secure_credentials.h"
#include "test/core/security/oauth2_utils.h"
#include "test/cpp/util/create_test_channel.h"
#include "test/cpp/util/test_credentials_provider.h"
-DECLARE_bool(use_alts);
-DECLARE_bool(use_tls);
-DECLARE_string(custom_credentials_type);
-DECLARE_bool(use_test_ca);
-DECLARE_int32(server_port);
-DECLARE_string(server_host);
-DECLARE_string(server_host_override);
-DECLARE_string(test_case);
-DECLARE_string(default_service_account);
-DECLARE_string(service_account_key_file);
-DECLARE_string(oauth_scope);
+ABSL_DECLARE_FLAG(bool, use_alts);
+ABSL_DECLARE_FLAG(bool, use_tls);
+ABSL_DECLARE_FLAG(std::string, custom_credentials_type);
+ABSL_DECLARE_FLAG(bool, use_test_ca);
+ABSL_DECLARE_FLAG(int32_t, server_port);
+ABSL_DECLARE_FLAG(std::string, server_host);
+ABSL_DECLARE_FLAG(std::string, server_host_override);
+ABSL_DECLARE_FLAG(std::string, test_case);
+ABSL_DECLARE_FLAG(std::string, default_service_account);
+ABSL_DECLARE_FLAG(std::string, service_account_key_file);
+ABSL_DECLARE_FLAG(std::string, oauth_scope);
namespace grpc {
namespace testing {
std::string GetServiceAccountJsonKey() {
static std::string json_key;
if (json_key.empty()) {
- std::ifstream json_key_file(FLAGS_service_account_key_file);
+ std::ifstream json_key_file(absl::GetFlag(FLAGS_service_account_key_file));
std::stringstream key_stream;
key_stream << json_key_file.rdbuf();
json_key = key_stream.str();
std::vector<
std::unique_ptr<experimental::ClientInterceptorFactoryInterface>>
interceptor_creators) {
- GPR_ASSERT(FLAGS_server_port);
+ GPR_ASSERT(absl::GetFlag(FLAGS_server_port));
const int host_port_buf_size = 1024;
char host_port[host_port_buf_size];
- snprintf(host_port, host_port_buf_size, "%s:%d", FLAGS_server_host.c_str(),
- FLAGS_server_port);
+ snprintf(host_port, host_port_buf_size, "%s:%d",
+ absl::GetFlag(FLAGS_server_host).c_str(),
+ absl::GetFlag(FLAGS_server_port));
std::shared_ptr<CallCredentials> creds;
if (test_case == "compute_engine_creds") {
- creds = FLAGS_custom_credentials_type == "google_default_credentials"
+ creds = absl::GetFlag(FLAGS_custom_credentials_type) ==
+ "google_default_credentials"
? nullptr
: GoogleComputeEngineCredentials();
} else if (test_case == "jwt_token_creds") {
std::string json_key = GetServiceAccountJsonKey();
std::chrono::seconds token_lifetime = std::chrono::hours(1);
- creds = FLAGS_custom_credentials_type == "google_default_credentials"
+ creds = absl::GetFlag(FLAGS_custom_credentials_type) ==
+ "google_default_credentials"
? nullptr
: ServiceAccountJWTAccessCredentials(json_key,
token_lifetime.count());
} else if (test_case == "oauth2_auth_token") {
- creds = FLAGS_custom_credentials_type == "google_default_credentials"
+ creds = absl::GetFlag(FLAGS_custom_credentials_type) ==
+ "google_default_credentials"
? nullptr
: AccessTokenCredentials(GetOauth2AccessToken());
} else if (test_case == "pick_first_unary") {
ChannelArguments channel_args;
// allow the LB policy to be configured with service config
channel_args.SetInt(GRPC_ARG_SERVICE_CONFIG_DISABLE_RESOLUTION, 0);
- return CreateTestChannel(host_port, FLAGS_custom_credentials_type,
- FLAGS_server_host_override, !FLAGS_use_test_ca,
- creds, channel_args);
+ return CreateTestChannel(
+ host_port, absl::GetFlag(FLAGS_custom_credentials_type),
+ absl::GetFlag(FLAGS_server_host_override),
+ !absl::GetFlag(FLAGS_use_test_ca), creds, channel_args);
}
- if (FLAGS_custom_credentials_type.empty()) {
+ if (absl::GetFlag(FLAGS_custom_credentials_type).empty()) {
transport_security security_type =
- FLAGS_use_alts ? ALTS : (FLAGS_use_tls ? TLS : INSECURE);
- return CreateTestChannel(host_port, FLAGS_server_host_override,
- security_type, !FLAGS_use_test_ca, creds,
- std::move(interceptor_creators));
+ absl::GetFlag(FLAGS_use_alts)
+ ? ALTS
+ : (absl::GetFlag(FLAGS_use_tls) ? TLS : INSECURE);
+ return CreateTestChannel(host_port,
+ absl::GetFlag(FLAGS_server_host_override),
+ security_type, !absl::GetFlag(FLAGS_use_test_ca),
+ creds, std::move(interceptor_creators));
} else {
if (interceptor_creators.empty()) {
- return CreateTestChannel(host_port, FLAGS_custom_credentials_type, creds);
+ return CreateTestChannel(
+ host_port, absl::GetFlag(FLAGS_custom_credentials_type), creds);
} else {
- return CreateTestChannel(host_port, FLAGS_custom_credentials_type, creds,
- std::move(interceptor_creators));
+ return CreateTestChannel(host_port,
+ absl::GetFlag(FLAGS_custom_credentials_type),
+ creds, std::move(interceptor_creators));
}
}
}
*
*/
-#include <grpc/support/port_platform.h>
-
-#include "src/core/lib/iomgr/port.h"
-
#include <arpa/inet.h>
#include <fcntl.h>
-#include <gflags/gflags.h>
+#include <grpc/support/alloc.h>
+#include <grpc/support/log.h>
+#include <grpc/support/port_platform.h>
+#include <grpcpp/channel.h>
+#include <grpcpp/client_context.h>
+#include <grpcpp/grpcpp.h>
+#include <grpcpp/support/channel_arguments.h>
#include <inttypes.h>
#include <netinet/in.h>
#include <netinet/tcp.h>
#include <sys/wait.h>
#include <unistd.h>
+
#include <chrono>
#include <cstdlib>
#include <memory>
#include <string>
#include <thread>
-#include <grpc/support/alloc.h>
-#include <grpc/support/log.h>
-#include <grpcpp/channel.h>
-#include <grpcpp/client_context.h>
-#include <grpcpp/grpcpp.h>
-#include <grpcpp/support/channel_arguments.h>
-
+#include "absl/flags/flag.h"
#include "src/core/lib/gpr/string.h"
+#include "src/core/lib/iomgr/port.h"
#include "src/core/lib/iomgr/socket_mutator.h"
#include "src/proto/grpc/testing/empty.pb.h"
#include "src/proto/grpc/testing/messages.pb.h"
#include "src/proto/grpc/testing/test.grpc.pb.h"
#include "src/proto/grpc/testing/test.pb.h"
-
#include "test/cpp/util/test_config.h"
#include "test/cpp/util/test_credentials_provider.h"
-DEFINE_string(custom_credentials_type, "", "User provided credentials type.");
-DEFINE_string(server_uri, "localhost:1000", "Server URI target");
-DEFINE_string(unroute_lb_and_backend_addrs_cmd, "exit 1",
- "Shell command used to make LB and backend addresses unroutable");
-DEFINE_string(blackhole_lb_and_backend_addrs_cmd, "exit 1",
- "Shell command used to make LB and backend addresses blackholed");
-DEFINE_string(
- test_case, "",
+ABSL_FLAG(std::string, custom_credentials_type, "",
+ "User provided credentials type.");
+ABSL_FLAG(std::string, server_uri, "localhost:1000", "Server URI target");
+ABSL_FLAG(std::string, unroute_lb_and_backend_addrs_cmd, "exit 1",
+ "Shell command used to make LB and backend addresses unroutable");
+ABSL_FLAG(std::string, blackhole_lb_and_backend_addrs_cmd, "exit 1",
+ "Shell command used to make LB and backend addresses blackholed");
+ABSL_FLAG(
+ std::string, test_case, "",
"Test case to run. Valid options are:\n\n"
"fast_fallback_before_startup : fallback before establishing connection to "
"LB;\n"
channel_args.SetInt(GRPC_ARG_SERVICE_CONFIG_DISABLE_RESOLUTION, 0);
std::shared_ptr<grpc::ChannelCredentials> channel_creds =
grpc::testing::GetCredentialsProvider()->GetChannelCredentials(
- FLAGS_custom_credentials_type, &channel_args);
- return TestService::NewStub(
- grpc::CreateCustomChannel(FLAGS_server_uri, channel_creds, channel_args));
+ absl::GetFlag(FLAGS_custom_credentials_type), &channel_args);
+ return TestService::NewStub(grpc::CreateCustomChannel(
+ absl::GetFlag(FLAGS_server_uri), channel_creds, channel_args));
}
void RunCommand(const std::string& command) {
}
void DoFastFallbackBeforeStartup() {
- RunFallbackBeforeStartupTest(FLAGS_unroute_lb_and_backend_addrs_cmd, 9);
+ RunFallbackBeforeStartupTest(
+ absl::GetFlag(FLAGS_unroute_lb_and_backend_addrs_cmd), 9);
}
void DoSlowFallbackBeforeStartup() {
- RunFallbackBeforeStartupTest(FLAGS_blackhole_lb_and_backend_addrs_cmd, 20);
+ RunFallbackBeforeStartupTest(
+ absl::GetFlag(FLAGS_blackhole_lb_and_backend_addrs_cmd), 20);
}
void RunFallbackAfterStartupTest(
}
void DoFastFallbackAfterStartup() {
- RunFallbackAfterStartupTest(FLAGS_unroute_lb_and_backend_addrs_cmd);
+ RunFallbackAfterStartupTest(
+ absl::GetFlag(FLAGS_unroute_lb_and_backend_addrs_cmd));
}
void DoSlowFallbackAfterStartup() {
- RunFallbackAfterStartupTest(FLAGS_blackhole_lb_and_backend_addrs_cmd);
+ RunFallbackAfterStartupTest(
+ absl::GetFlag(FLAGS_blackhole_lb_and_backend_addrs_cmd));
}
} // namespace
int main(int argc, char** argv) {
grpc::testing::InitTest(&argc, &argv, true);
- gpr_log(GPR_INFO, "Testing: %s", FLAGS_test_case.c_str());
- if (FLAGS_test_case == "fast_fallback_before_startup") {
+ gpr_log(GPR_INFO, "Testing: %s", absl::GetFlag(FLAGS_test_case).c_str());
+ if (absl::GetFlag(FLAGS_test_case) == "fast_fallback_before_startup") {
DoFastFallbackBeforeStartup();
gpr_log(GPR_INFO, "DoFastFallbackBeforeStartup done!");
- } else if (FLAGS_test_case == "slow_fallback_before_startup") {
+ } else if (absl::GetFlag(FLAGS_test_case) == "slow_fallback_before_startup") {
DoSlowFallbackBeforeStartup();
gpr_log(GPR_INFO, "DoSlowFallbackBeforeStartup done!");
- } else if (FLAGS_test_case == "fast_fallback_after_startup") {
+ } else if (absl::GetFlag(FLAGS_test_case) == "fast_fallback_after_startup") {
DoFastFallbackAfterStartup();
gpr_log(GPR_INFO, "DoFastFallbackAfterStartup done!");
- } else if (FLAGS_test_case == "slow_fallback_after_startup") {
+ } else if (absl::GetFlag(FLAGS_test_case) == "slow_fallback_after_startup") {
DoSlowFallbackAfterStartup();
gpr_log(GPR_INFO, "DoSlowFallbackAfterStartup done!");
} else {
- gpr_log(GPR_ERROR, "Invalid test case: %s", FLAGS_test_case.c_str());
+ gpr_log(GPR_ERROR, "Invalid test case: %s",
+ absl::GetFlag(FLAGS_test_case).c_str());
abort();
}
}
*
*/
-#include <thread>
+#include "test/cpp/interop/http2_client.h"
-#include <gflags/gflags.h>
#include <grpc/support/alloc.h>
#include <grpc/support/log.h>
#include <grpcpp/channel.h>
#include <grpcpp/client_context.h>
-#include "src/core/lib/transport/byte_stream.h"
-#include "src/proto/grpc/testing/messages.pb.h"
-#include "src/proto/grpc/testing/test.grpc.pb.h"
-#include "test/cpp/interop/http2_client.h"
+#include <thread>
+#include "absl/flags/flag.h"
#include "src/core/lib/gpr/string.h"
#include "src/core/lib/gpr/useful.h"
+#include "src/core/lib/transport/byte_stream.h"
+#include "src/proto/grpc/testing/messages.pb.h"
+#include "src/proto/grpc/testing/test.grpc.pb.h"
#include "test/cpp/util/create_test_channel.h"
#include "test/cpp/util/test_config.h"
} // namespace
Http2Client::ServiceStub::ServiceStub(const std::shared_ptr<Channel>& channel)
- : channel_(std::move(channel)) {
+ : channel_(channel) {
stub_ = TestService::NewStub(channel);
}
Http2Client::Http2Client(const std::shared_ptr<Channel>& channel)
: serviceStub_(channel),
- channel_(std::move(channel)),
+ channel_(channel),
defaultRequest_(BuildDefaultRequest()) {}
bool Http2Client::AssertStatusCode(const Status& s, StatusCode expected_code) {
std::string(kLargeResponseSize, '\0'));
std::vector<std::thread> test_threads;
-
+ test_threads.reserve(10);
for (int i = 0; i < 10; i++) {
test_threads.emplace_back(
std::thread(&Http2Client::MaxStreamsWorker, this, channel_));
} // namespace testing
} // namespace grpc
-DEFINE_int32(server_port, 0, "Server port.");
-DEFINE_string(server_host, "localhost", "Server host to connect to");
-DEFINE_string(test_case, "rst_after_header",
- "Configure different test cases. Valid options are:\n\n"
- "goaway\n"
- "max_streams\n"
- "ping\n"
- "rst_after_data\n"
- "rst_after_header\n"
- "rst_during_data\n");
+ABSL_FLAG(int32_t, server_port, 0, "Server port.");
+ABSL_FLAG(std::string, server_host, "localhost", "Server host to connect to");
+ABSL_FLAG(std::string, test_case, "rst_after_header",
+ "Configure different test cases. Valid options are:\n\n"
+ "goaway\n"
+ "max_streams\n"
+ "ping\n"
+ "rst_after_data\n"
+ "rst_after_header\n"
+ "rst_during_data\n");
int main(int argc, char** argv) {
grpc::testing::InitTest(&argc, &argv, true);
- GPR_ASSERT(FLAGS_server_port);
+ GPR_ASSERT(absl::GetFlag(FLAGS_server_port));
const int host_port_buf_size = 1024;
char host_port[host_port_buf_size];
- snprintf(host_port, host_port_buf_size, "%s:%d", FLAGS_server_host.c_str(),
- FLAGS_server_port);
+ snprintf(host_port, host_port_buf_size, "%s:%d",
+ absl::GetFlag(FLAGS_server_host).c_str(),
+ absl::GetFlag(FLAGS_server_port));
std::shared_ptr<grpc::Channel> channel =
grpc::CreateTestChannel(host_port, grpc::testing::INSECURE);
GPR_ASSERT(channel->WaitForConnected(gpr_time_add(
gpr_now(GPR_CLOCK_REALTIME), gpr_time_from_seconds(300, GPR_TIMESPAN))));
grpc::testing::Http2Client client(channel);
- gpr_log(GPR_INFO, "Testing case: %s", FLAGS_test_case.c_str());
+ gpr_log(GPR_INFO, "Testing case: %s", absl::GetFlag(FLAGS_test_case).c_str());
int ret = 0;
- if (FLAGS_test_case == "rst_after_header") {
+ if (absl::GetFlag(FLAGS_test_case) == "rst_after_header") {
client.DoRstAfterHeader();
- } else if (FLAGS_test_case == "rst_after_data") {
+ } else if (absl::GetFlag(FLAGS_test_case) == "rst_after_data") {
client.DoRstAfterData();
- } else if (FLAGS_test_case == "rst_during_data") {
+ } else if (absl::GetFlag(FLAGS_test_case) == "rst_during_data") {
client.DoRstDuringData();
- } else if (FLAGS_test_case == "goaway") {
+ } else if (absl::GetFlag(FLAGS_test_case) == "goaway") {
client.DoGoaway();
- } else if (FLAGS_test_case == "ping") {
+ } else if (absl::GetFlag(FLAGS_test_case) == "ping") {
client.DoPing();
- } else if (FLAGS_test_case == "max_streams") {
+ } else if (absl::GetFlag(FLAGS_test_case) == "max_streams") {
client.DoMaxStreams();
} else {
const char* testcases[] = {
gpr_strjoin_sep(testcases, GPR_ARRAY_SIZE(testcases), "\n", nullptr);
gpr_log(GPR_ERROR, "Unsupported test case %s. Valid options are\n%s",
- FLAGS_test_case.c_str(), joined_testcases);
+ absl::GetFlag(FLAGS_test_case).c_str(), joined_testcases);
gpr_free(joined_testcases);
ret = 1;
}
stream->Write(streaming_request);
stream->WritesDone();
StreamingOutputCallResponse streaming_response;
- while (stream->Read(&streaming_response))
- ;
+ while (stream->Read(&streaming_response)) {
+ }
s = stream->Finish();
if (!AssertStatusCode(s, grpc::StatusCode::UNKNOWN,
context.debug_error_string())) {
const std::string kEchoTrailingBinMetadataKey(
"x-grpc-test-echo-trailing-bin");
const std::string kTrailingBinValue("\x0a\x0b\x0a\x0b\x0a\x0b");
- ;
{
gpr_log(GPR_DEBUG, "Sending RPC with custom metadata");
*
*/
-#include <fstream>
-#include <memory>
-#include <sstream>
-#include <thread>
-
-#include <gflags/gflags.h>
#include <grpc/grpc.h>
#include <grpc/support/log.h>
#include <grpc/support/time.h>
#include <grpcpp/server_builder.h>
#include <grpcpp/server_context.h>
+#include <fstream>
+#include <memory>
+#include <sstream>
+#include <thread>
+
+#include "absl/flags/flag.h"
#include "src/core/lib/gpr/string.h"
#include "src/proto/grpc/testing/empty.pb.h"
#include "src/proto/grpc/testing/messages.pb.h"
#include "test/cpp/interop/server_helper.h"
#include "test/cpp/util/test_config.h"
-DEFINE_bool(use_alts, false,
- "Whether to use alts. Enable alts will disable tls.");
-DEFINE_bool(use_tls, false, "Whether to use tls.");
-DEFINE_string(custom_credentials_type, "", "User provided credentials type.");
-DEFINE_int32(port, 0, "Server port.");
-DEFINE_int32(max_send_message_size, -1, "The maximum send message size.");
+ABSL_FLAG(bool, use_alts, false,
+ "Whether to use alts. Enable alts will disable tls.");
+ABSL_FLAG(bool, use_tls, false, "Whether to use tls.");
+ABSL_FLAG(std::string, custom_credentials_type, "",
+ "User provided credentials type.");
+ABSL_FLAG(int32_t, port, 0, "Server port.");
+ABSL_FLAG(int32_t, max_send_message_size, -1, "The maximum send message size.");
using grpc::Server;
using grpc::ServerBuilder;
using grpc::ServerReader;
using grpc::ServerReaderWriter;
using grpc::ServerWriter;
-using grpc::SslServerCredentialsOptions;
using grpc::Status;
using grpc::WriteOptions;
using grpc::testing::InteropServerContextInspector;
public:
Status EmptyCall(ServerContext* context,
const grpc::testing::Empty* /*request*/,
- grpc::testing::Empty* /*response*/) {
+ grpc::testing::Empty* /*response*/) override {
MaybeEchoMetadata(context);
return Status::OK;
}
// Response contains current timestamp. We ignore everything in the request.
Status CacheableUnaryCall(ServerContext* context,
const SimpleRequest* /*request*/,
- SimpleResponse* response) {
+ SimpleResponse* response) override {
gpr_timespec ts = gpr_now(GPR_CLOCK_PRECISE);
std::string timestamp = std::to_string((long long unsigned)ts.tv_nsec);
response->mutable_payload()->set_body(timestamp.c_str(), timestamp.size());
}
Status UnaryCall(ServerContext* context, const SimpleRequest* request,
- SimpleResponse* response) {
+ SimpleResponse* response) override {
MaybeEchoMetadata(context);
if (request->has_response_compressed()) {
const bool compression_requested = request->response_compressed().value();
Status StreamingOutputCall(
ServerContext* context, const StreamingOutputCallRequest* request,
- ServerWriter<StreamingOutputCallResponse>* writer) {
+ ServerWriter<StreamingOutputCallResponse>* writer) override {
StreamingOutputCallResponse response;
bool write_success = true;
for (int i = 0; write_success && i < request->response_parameters_size();
Status StreamingInputCall(ServerContext* context,
ServerReader<StreamingInputCallRequest>* reader,
- StreamingInputCallResponse* response) {
+ StreamingInputCallResponse* response) override {
StreamingInputCallRequest request;
int aggregated_payload_size = 0;
while (reader->Read(&request)) {
Status FullDuplexCall(
ServerContext* context,
ServerReaderWriter<StreamingOutputCallResponse,
- StreamingOutputCallRequest>* stream) {
+ StreamingOutputCallRequest>* stream) override {
MaybeEchoMetadata(context);
StreamingOutputCallRequest request;
StreamingOutputCallResponse response;
Status HalfDuplexCall(
ServerContext* /*context*/,
ServerReaderWriter<StreamingOutputCallResponse,
- StreamingOutputCallRequest>* stream) {
+ StreamingOutputCallRequest>* stream) override {
std::vector<StreamingOutputCallRequest> requests;
StreamingOutputCallRequest request;
while (stream->Read(&request)) {
void grpc::testing::interop::RunServer(
const std::shared_ptr<ServerCredentials>& creds) {
- RunServer(creds, FLAGS_port, nullptr, nullptr);
+ RunServer(creds, absl::GetFlag(FLAGS_port), nullptr, nullptr);
}
void grpc::testing::interop::RunServer(
const std::shared_ptr<ServerCredentials>& creds,
std::unique_ptr<std::vector<std::unique_ptr<ServerBuilderOption>>>
server_options) {
- RunServer(creds, FLAGS_port, nullptr, std::move(server_options));
+ RunServer(creds, absl::GetFlag(FLAGS_port), nullptr,
+ std::move(server_options));
}
void grpc::testing::interop::RunServer(
builder.SetOption(std::move((*server_options)[i]));
}
}
- if (FLAGS_max_send_message_size >= 0) {
- builder.SetMaxSendMessageSize(FLAGS_max_send_message_size);
+ if (absl::GetFlag(FLAGS_max_send_message_size) >= 0) {
+ builder.SetMaxSendMessageSize(absl::GetFlag(FLAGS_max_send_message_size));
}
std::unique_ptr<Server> server(builder.BuildAndStart());
gpr_log(GPR_INFO, "Server listening on %s", server_address.str().c_str());
*/
#include <assert.h>
+#include <grpc/support/alloc.h>
+#include <grpc/support/log.h>
#include <signal.h>
#include <stdio.h>
#include <stdlib.h>
#include <string>
#include <vector>
+#include "absl/flags/flag.h"
#include "absl/strings/str_cat.h"
-
-#include <gflags/gflags.h>
-#include <grpc/support/alloc.h>
-#include <grpc/support/log.h>
-#include "test/core/util/port.h"
-#include "test/cpp/util/test_config.h"
-
#include "src/core/lib/gpr/string.h"
#include "src/core/lib/iomgr/socket_utils_posix.h"
+#include "test/core/util/port.h"
+#include "test/cpp/util/test_config.h"
-DEFINE_string(extra_server_flags, "", "Extra flags to pass to server.");
+ABSL_FLAG(std::string, extra_server_flags, "",
+ "Extra flags to pass to server.");
int test_client(const char* root, const char* host, int port) {
int status;
args.push_back(const_cast<char*>(command.c_str()));
std::string port_arg = absl::StrCat("--port=", port);
args.push_back(const_cast<char*>(port_arg.c_str()));
- if (!FLAGS_extra_server_flags.empty()) {
- args.push_back(const_cast<char*>(FLAGS_extra_server_flags.c_str()));
+ if (!absl::GetFlag(FLAGS_extra_server_flags).empty()) {
+ args.push_back(
+ const_cast<char*>(absl::GetFlag(FLAGS_extra_server_flags).c_str()));
}
args.push_back(nullptr);
execv(args[0], args.data());
*is % allowed in string
*/
-#include <memory>
-#include <string>
-
-#include <gflags/gflags.h>
#include <grpc/support/log.h>
#include <grpcpp/grpcpp.h>
+#include <memory>
+#include <string>
+
+#include "absl/flags/flag.h"
#include "src/proto/grpc/testing/metrics.grpc.pb.h"
#include "src/proto/grpc/testing/metrics.pb.h"
#include "test/cpp/util/metrics_server.h"
int kDeadlineSecs = 10;
-DEFINE_string(metrics_server_address, "localhost:8081",
- "The metrics server addresses in the fomrat <hostname>:<port>");
-DEFINE_int32(deadline_secs, kDeadlineSecs,
- "The deadline (in seconds) for RCP call");
-DEFINE_bool(total_only, false,
- "If true, this prints only the total value of all gauges");
+ABSL_FLAG(std::string, metrics_server_address, "localhost:8081",
+ "The metrics server addresses in the fomrat <hostname>:<port>");
+// TODO(Capstan): Consider using absl::Duration
+ABSL_FLAG(int32_t, deadline_secs, kDeadlineSecs,
+ "The deadline (in seconds) for RCP call");
+ABSL_FLAG(bool, total_only, false,
+ "If true, this prints only the total value of all gauges");
using grpc::testing::EmptyMessage;
using grpc::testing::GaugeResponse;
using grpc::testing::MetricsService;
-using grpc::testing::MetricsServiceImpl;
// Do not log anything
void BlackholeLogger(gpr_log_func_args* /*args*/) {}
// from the grpc library appearing on stdout.
gpr_set_log_function(BlackholeLogger);
- std::shared_ptr<grpc::Channel> channel(grpc::CreateChannel(
- FLAGS_metrics_server_address, grpc::InsecureChannelCredentials()));
+ std::shared_ptr<grpc::Channel> channel(
+ grpc::CreateChannel(absl::GetFlag(FLAGS_metrics_server_address),
+ grpc::InsecureChannelCredentials()));
- if (!PrintMetrics(MetricsService::NewStub(channel), FLAGS_total_only,
- FLAGS_deadline_secs)) {
+ if (!PrintMetrics(MetricsService::NewStub(channel),
+ absl::GetFlag(FLAGS_total_only),
+ absl::GetFlag(FLAGS_deadline_secs))) {
return 1;
}
*
*/
-#include <memory>
-#include <sstream>
-
-#include <gflags/gflags.h>
#include <grpc/grpc.h>
#include <grpc/support/log.h>
#include <grpcpp/channel.h>
#include <grpcpp/client_context.h>
#include <grpcpp/support/channel_arguments.h>
+
+#include <memory>
+#include <sstream>
+
+#include "absl/flags/flag.h"
#include "src/proto/grpc/testing/empty.pb.h"
#include "src/proto/grpc/testing/messages.pb.h"
#include "src/proto/grpc/testing/test.grpc.pb.h"
#include "test/cpp/util/create_test_channel.h"
#include "test/cpp/util/test_config.h"
-DEFINE_int32(server_control_port, 0, "Server port for control rpcs.");
-DEFINE_int32(server_retry_port, 0, "Server port for testing reconnection.");
-DEFINE_string(server_host, "localhost", "Server host to connect to");
-DEFINE_int32(max_reconnect_backoff_ms, 0,
- "Maximum backoff time, or 0 for default.");
+ABSL_FLAG(int32_t, server_control_port, 0, "Server port for control rpcs.");
+ABSL_FLAG(int32_t, server_retry_port, 0,
+ "Server port for testing reconnection.");
+ABSL_FLAG(std::string, server_host, "localhost", "Server host to connect to");
+// TODO(Capstan): Consider using absl::Duration
+ABSL_FLAG(int32_t, max_reconnect_backoff_ms, 0,
+ "Maximum backoff time, or 0 for default.");
using grpc::CallCredentials;
using grpc::Channel;
int main(int argc, char** argv) {
grpc::testing::InitTest(&argc, &argv, true);
- GPR_ASSERT(FLAGS_server_control_port);
- GPR_ASSERT(FLAGS_server_retry_port);
+ GPR_ASSERT(absl::GetFlag(FLAGS_server_control_port));
+ GPR_ASSERT(absl::GetFlag(FLAGS_server_retry_port));
std::ostringstream server_address;
- server_address << FLAGS_server_host << ':' << FLAGS_server_control_port;
+ server_address << absl::GetFlag(FLAGS_server_host) << ':'
+ << absl::GetFlag(FLAGS_server_control_port);
std::unique_ptr<ReconnectService::Stub> control_stub(
ReconnectService::NewStub(
CreateTestChannel(server_address.str(), INSECURE)));
ClientContext start_context;
ReconnectParams reconnect_params;
- reconnect_params.set_max_reconnect_backoff_ms(FLAGS_max_reconnect_backoff_ms);
+ reconnect_params.set_max_reconnect_backoff_ms(
+ absl::GetFlag(FLAGS_max_reconnect_backoff_ms));
Empty empty_response;
Status start_status =
control_stub->Start(&start_context, reconnect_params, &empty_response);
gpr_log(GPR_INFO, "Starting connections with retries.");
server_address.str("");
- server_address << FLAGS_server_host << ':' << FLAGS_server_retry_port;
+ server_address << absl::GetFlag(FLAGS_server_host) << ':'
+ << absl::GetFlag(FLAGS_server_retry_port);
ChannelArguments channel_args;
- if (FLAGS_max_reconnect_backoff_ms > 0) {
+ if (absl::GetFlag(FLAGS_max_reconnect_backoff_ms) > 0) {
channel_args.SetInt(GRPC_ARG_MAX_RECONNECT_BACKOFF_MS,
- FLAGS_max_reconnect_backoff_ms);
+ absl::GetFlag(FLAGS_max_reconnect_backoff_ms));
}
std::shared_ptr<Channel> retry_channel =
CreateTestChannel(server_address.str(), "foo.test.google.fr", TLS, false,
// Test description at doc/connection-backoff-interop-test-description.md
+#include <grpc/grpc.h>
+#include <grpc/support/log.h>
+#include <grpcpp/server.h>
+#include <grpcpp/server_builder.h>
+#include <grpcpp/server_context.h>
#include <signal.h>
#include <condition_variable>
#include <mutex>
#include <sstream>
-#include <gflags/gflags.h>
-#include <grpc/grpc.h>
-#include <grpc/support/log.h>
-#include <grpcpp/server.h>
-#include <grpcpp/server_builder.h>
-#include <grpcpp/server_context.h>
-
+#include "absl/flags/flag.h"
#include "src/proto/grpc/testing/empty.pb.h"
#include "src/proto/grpc/testing/messages.pb.h"
#include "src/proto/grpc/testing/test.grpc.pb.h"
#include "test/core/util/reconnect_server.h"
#include "test/cpp/util/test_config.h"
-DEFINE_int32(control_port, 0, "Server port for controlling the server.");
-DEFINE_int32(retry_port, 0,
- "Server port for raw tcp connections. All incoming "
- "connections will be closed immediately.");
+ABSL_FLAG(int32_t, control_port, 0, "Server port for controlling the server.");
+ABSL_FLAG(int32_t, retry_port, 0,
+ "Server port for raw tcp connections. All incoming "
+ "connections will be closed immediately.");
using grpc::Server;
using grpc::ServerBuilder;
using grpc::ServerContext;
-using grpc::ServerCredentials;
-using grpc::ServerReader;
-using grpc::ServerReaderWriter;
-using grpc::ServerWriter;
-using grpc::SslServerCredentialsOptions;
using grpc::Status;
using grpc::testing::Empty;
using grpc::testing::ReconnectInfo;
reconnect_server_init(&tcp_server_);
}
- ~ReconnectServiceImpl() {
+ ~ReconnectServiceImpl() override {
if (server_started_) {
reconnect_server_destroy(&tcp_server_);
}
void Poll(int seconds) { reconnect_server_poll(&tcp_server_, seconds); }
Status Start(ServerContext* /*context*/, const ReconnectParams* request,
- Empty* /*response*/) {
+ Empty* /*response*/) override {
bool start_server = true;
std::unique_lock<std::mutex> lock(mu_);
while (serving_ && !shutdown_) {
}
Status Stop(ServerContext* /*context*/, const Empty* /*request*/,
- ReconnectInfo* response) {
+ ReconnectInfo* response) override {
// extract timestamps and set response
Verify(response);
reconnect_server_clear_timestamps(&tcp_server_);
void RunServer() {
std::ostringstream server_address;
- server_address << "0.0.0.0:" << FLAGS_control_port;
- ReconnectServiceImpl service(FLAGS_retry_port);
+ server_address << "0.0.0.0:" << absl::GetFlag(FLAGS_control_port);
+ ReconnectServiceImpl service(absl::GetFlag(FLAGS_retry_port));
ServerBuilder builder;
builder.RegisterService(&service);
grpc::testing::InitTest(&argc, &argv, true);
signal(SIGINT, sigint_handler);
- GPR_ASSERT(FLAGS_control_port != 0);
- GPR_ASSERT(FLAGS_retry_port != 0);
+ GPR_ASSERT(absl::GetFlag(FLAGS_control_port) != 0);
+ GPR_ASSERT(absl::GetFlag(FLAGS_retry_port) != 0);
RunServer();
return 0;
#include "test/cpp/interop/server_helper.h"
-#include <memory>
-
-#include <gflags/gflags.h>
#include <grpcpp/security/server_credentials.h>
+#include <memory>
+
+#include "absl/flags/declare.h"
+#include "absl/flags/flag.h"
#include "src/core/lib/surface/call_test_only.h"
#include "src/core/lib/transport/byte_stream.h"
#include "test/cpp/util/test_credentials_provider.h"
-DECLARE_bool(use_alts);
-DECLARE_bool(use_tls);
-DECLARE_string(custom_credentials_type);
+ABSL_DECLARE_FLAG(bool, use_alts);
+ABSL_DECLARE_FLAG(bool, use_tls);
+ABSL_DECLARE_FLAG(std::string, custom_credentials_type);
namespace grpc {
namespace testing {
std::shared_ptr<ServerCredentials> CreateInteropServerCredentials() {
- if (!FLAGS_custom_credentials_type.empty()) {
+ if (!absl::GetFlag(FLAGS_custom_credentials_type).empty()) {
return GetCredentialsProvider()->GetServerCredentials(
- FLAGS_custom_credentials_type);
- } else if (FLAGS_use_alts) {
+ absl::GetFlag(FLAGS_custom_credentials_type));
+ } else if (absl::GetFlag(FLAGS_use_alts)) {
return GetCredentialsProvider()->GetServerCredentials(kAltsCredentialsType);
- } else if (FLAGS_use_tls) {
+ } else if (absl::GetFlag(FLAGS_use_tls)) {
return GetCredentialsProvider()->GetServerCredentials(kTlsCredentialsType);
} else {
return GetCredentialsProvider()->GetServerCredentials(
*is % allowed in string
*/
+#include <grpc/support/log.h>
+#include <grpc/support/time.h>
+#include <grpcpp/create_channel.h>
+#include <grpcpp/grpcpp.h>
+
#include <memory>
#include <string>
#include <thread>
#include <utility>
#include <vector>
-#include <gflags/gflags.h>
-#include <grpc/support/log.h>
-#include <grpc/support/time.h>
-#include <grpcpp/create_channel.h>
-#include <grpcpp/grpcpp.h>
-
+#include "absl/flags/flag.h"
#include "src/proto/grpc/testing/metrics.grpc.pb.h"
#include "src/proto/grpc/testing/metrics.pb.h"
#include "test/cpp/interop/interop_client.h"
extern void gpr_default_log(gpr_log_func_args* args);
-DEFINE_int32(metrics_port, 8081, "The metrics server port.");
+ABSL_FLAG(int32_t, metrics_port, 8081, "The metrics server port.");
-DEFINE_int32(sleep_duration_ms, 0,
- "The duration (in millisec) between two"
- " consecutive test calls (per server) issued by the server.");
+// TODO(Capstan): Consider using absl::Duration
+ABSL_FLAG(int32_t, sleep_duration_ms, 0,
+ "The duration (in millisec) between two"
+ " consecutive test calls (per server) issued by the server.");
-DEFINE_int32(test_duration_secs, -1,
- "The length of time (in seconds) to run"
- " the test. Enter -1 if the test should run continuously until"
- " forcefully terminated.");
+// TODO(Capstan): Consider using absl::Duration
+ABSL_FLAG(int32_t, test_duration_secs, -1,
+ "The length of time (in seconds) to run"
+ " the test. Enter -1 if the test should run continuously until"
+ " forcefully terminated.");
-DEFINE_string(server_addresses, "localhost:8080",
- "The list of server addresses. The format is: \n"
- " \"<name_1>:<port_1>,<name_2>:<port_1>...<name_N>:<port_N>\"\n"
- " Note: <name> can be servername or IP address.");
+ABSL_FLAG(std::string, server_addresses, "localhost:8080",
+ "The list of server addresses. The format is: \n"
+ " \"<name_1>:<port_1>,<name_2>:<port_1>...<name_N>:<port_N>\"\n"
+ " Note: <name> can be servername or IP address.");
-DEFINE_int32(num_channels_per_server, 1, "Number of channels for each server");
+ABSL_FLAG(int32_t, num_channels_per_server, 1,
+ "Number of channels for each server");
-DEFINE_int32(num_stubs_per_channel, 1,
- "Number of stubs per each channels to server. This number also "
- "indicates the max number of parallel RPC calls on each channel "
- "at any given time.");
+ABSL_FLAG(int32_t, num_stubs_per_channel, 1,
+ "Number of stubs per each channels to server. This number also "
+ "indicates the max number of parallel RPC calls on each channel "
+ "at any given time.");
// TODO(sreek): Add more test cases here in future
-DEFINE_string(test_cases, "",
- "List of test cases to call along with the"
- " relative weights in the following format:\n"
- " \"<testcase_1:w_1>,<testcase_2:w_2>...<testcase_n:w_n>\"\n"
- " The following testcases are currently supported:\n"
- " empty_unary\n"
- " large_unary\n"
- " large_compressed_unary\n"
- " client_streaming\n"
- " server_streaming\n"
- " server_compressed_streaming\n"
- " slow_consumer\n"
- " half_duplex\n"
- " ping_pong\n"
- " cancel_after_begin\n"
- " cancel_after_first_response\n"
- " timeout_on_sleeping_server\n"
- " empty_stream\n"
- " status_code_and_message\n"
- " custom_metadata\n"
- " Example: \"empty_unary:20,large_unary:10,empty_stream:70\"\n"
- " The above will execute 'empty_unary', 20% of the time,"
- " 'large_unary', 10% of the time and 'empty_stream' the remaining"
- " 70% of the time");
-
-DEFINE_int32(log_level, GPR_LOG_SEVERITY_INFO,
- "Severity level of messages that should be logged. Any messages "
- "greater than or equal to the level set here will be logged. "
- "The choices are: 0 (GPR_LOG_SEVERITY_DEBUG), 1 "
- "(GPR_LOG_SEVERITY_INFO) and 2 (GPR_LOG_SEVERITY_ERROR)");
-
-DEFINE_bool(do_not_abort_on_transient_failures, true,
- "If set to 'true', abort() is not called in case of transient "
- "failures like temporary connection failures.");
+ABSL_FLAG(std::string, test_cases, "",
+ "List of test cases to call along with the"
+ " relative weights in the following format:\n"
+ " \"<testcase_1:w_1>,<testcase_2:w_2>...<testcase_n:w_n>\"\n"
+ " The following testcases are currently supported:\n"
+ " empty_unary\n"
+ " large_unary\n"
+ " large_compressed_unary\n"
+ " client_streaming\n"
+ " server_streaming\n"
+ " server_compressed_streaming\n"
+ " slow_consumer\n"
+ " half_duplex\n"
+ " ping_pong\n"
+ " cancel_after_begin\n"
+ " cancel_after_first_response\n"
+ " timeout_on_sleeping_server\n"
+ " empty_stream\n"
+ " status_code_and_message\n"
+ " custom_metadata\n"
+ " Example: \"empty_unary:20,large_unary:10,empty_stream:70\"\n"
+ " The above will execute 'empty_unary', 20% of the time,"
+ " 'large_unary', 10% of the time and 'empty_stream' the remaining"
+ " 70% of the time");
+
+ABSL_FLAG(int32_t, log_level, GPR_LOG_SEVERITY_INFO,
+ "Severity level of messages that should be logged. Any messages "
+ "greater than or equal to the level set here will be logged. "
+ "The choices are: 0 (GPR_LOG_SEVERITY_DEBUG), 1 "
+ "(GPR_LOG_SEVERITY_INFO) and 2 (GPR_LOG_SEVERITY_ERROR)");
+
+ABSL_FLAG(bool, do_not_abort_on_transient_failures, true,
+ "If set to 'true', abort() is not called in case of transient "
+ "failures like temporary connection failures.");
// Options from client.cc (for compatibility with interop test).
// TODO(sreek): Consolidate overlapping options
-DEFINE_bool(use_alts, false,
- "Whether to use alts. Enable alts will disable tls.");
-DEFINE_bool(use_tls, false, "Whether to use tls.");
-DEFINE_bool(use_test_ca, false, "False to use SSL roots for google");
-DEFINE_string(server_host_override, "",
- "Override the server host which is sent in HTTP header");
+ABSL_FLAG(bool, use_alts, false,
+ "Whether to use alts. Enable alts will disable tls.");
+ABSL_FLAG(bool, use_tls, false, "Whether to use tls.");
+ABSL_FLAG(bool, use_test_ca, false, "False to use SSL roots for google");
+ABSL_FLAG(std::string, server_host_override, "",
+ "Override the server host which is sent in HTTP header");
using grpc::testing::ALTS;
using grpc::testing::INSECURE;
using grpc::testing::kTestCaseList;
-using grpc::testing::MetricsService;
using grpc::testing::MetricsServiceImpl;
using grpc::testing::StressTestInteropClient;
using grpc::testing::TestCaseType;
// For debugging purposes
void LogParameterInfo(const std::vector<std::string>& addresses,
const std::vector<std::pair<TestCaseType, int>>& tests) {
- gpr_log(GPR_INFO, "server_addresses: %s", FLAGS_server_addresses.c_str());
- gpr_log(GPR_INFO, "test_cases : %s", FLAGS_test_cases.c_str());
- gpr_log(GPR_INFO, "sleep_duration_ms: %d", FLAGS_sleep_duration_ms);
- gpr_log(GPR_INFO, "test_duration_secs: %d", FLAGS_test_duration_secs);
+ gpr_log(GPR_INFO, "server_addresses: %s",
+ absl::GetFlag(FLAGS_server_addresses).c_str());
+ gpr_log(GPR_INFO, "test_cases : %s", absl::GetFlag(FLAGS_test_cases).c_str());
+ gpr_log(GPR_INFO, "sleep_duration_ms: %d",
+ absl::GetFlag(FLAGS_sleep_duration_ms));
+ gpr_log(GPR_INFO, "test_duration_secs: %d",
+ absl::GetFlag(FLAGS_test_duration_secs));
gpr_log(GPR_INFO, "num_channels_per_server: %d",
- FLAGS_num_channels_per_server);
- gpr_log(GPR_INFO, "num_stubs_per_channel: %d", FLAGS_num_stubs_per_channel);
- gpr_log(GPR_INFO, "log_level: %d", FLAGS_log_level);
+ absl::GetFlag(FLAGS_num_channels_per_server));
+ gpr_log(GPR_INFO, "num_stubs_per_channel: %d",
+ absl::GetFlag(FLAGS_num_stubs_per_channel));
+ gpr_log(GPR_INFO, "log_level: %d", absl::GetFlag(FLAGS_log_level));
gpr_log(GPR_INFO, "do_not_abort_on_transient_failures: %s",
- FLAGS_do_not_abort_on_transient_failures ? "true" : "false");
+ absl::GetFlag(FLAGS_do_not_abort_on_transient_failures) ? "true"
+ : "false");
int num = 0;
for (auto it = addresses.begin(); it != addresses.end(); it++) {
int main(int argc, char** argv) {
grpc::testing::InitTest(&argc, &argv, true);
- if (FLAGS_log_level > GPR_LOG_SEVERITY_ERROR ||
- FLAGS_log_level < GPR_LOG_SEVERITY_DEBUG) {
+ if (absl::GetFlag(FLAGS_log_level) > GPR_LOG_SEVERITY_ERROR ||
+ absl::GetFlag(FLAGS_log_level) < GPR_LOG_SEVERITY_DEBUG) {
gpr_log(GPR_ERROR, "log_level should be an integer between %d and %d",
GPR_LOG_SEVERITY_DEBUG, GPR_LOG_SEVERITY_ERROR);
return 1;
// Change the default log function to TestLogFunction which respects the
// log_level setting.
- log_level = FLAGS_log_level;
+ log_level = absl::GetFlag(FLAGS_log_level);
gpr_set_log_function(TestLogFunction);
srand(time(nullptr));
// Parse the server addresses
std::vector<std::string> server_addresses;
- ParseCommaDelimitedString(FLAGS_server_addresses, server_addresses);
+ ParseCommaDelimitedString(absl::GetFlag(FLAGS_server_addresses),
+ server_addresses);
// Parse test cases and weights
- if (FLAGS_test_cases.length() == 0) {
+ if (absl::GetFlag(FLAGS_test_cases).length() == 0) {
gpr_log(GPR_ERROR, "No test cases supplied");
return 1;
}
std::vector<std::pair<TestCaseType, int>> tests;
- if (!ParseTestCasesString(FLAGS_test_cases, tests)) {
+ if (!ParseTestCasesString(absl::GetFlag(FLAGS_test_cases), tests)) {
gpr_log(GPR_ERROR, "Error in parsing test cases string %s ",
- FLAGS_test_cases.c_str());
+ absl::GetFlag(FLAGS_test_cases).c_str());
return 1;
}
int server_idx = -1;
char buffer[256];
transport_security security_type =
- FLAGS_use_alts ? ALTS : (FLAGS_use_tls ? TLS : INSECURE);
+ absl::GetFlag(FLAGS_use_alts)
+ ? ALTS
+ : (absl::GetFlag(FLAGS_use_tls) ? TLS : INSECURE);
for (auto it = server_addresses.begin(); it != server_addresses.end(); it++) {
++server_idx;
// Create channel(s) for each server
- for (int channel_idx = 0; channel_idx < FLAGS_num_channels_per_server;
+ for (int channel_idx = 0;
+ channel_idx < absl::GetFlag(FLAGS_num_channels_per_server);
channel_idx++) {
gpr_log(GPR_INFO, "Starting test with %s channel_idx=%d..", it->c_str(),
channel_idx);
- grpc::testing::ChannelCreationFunc channel_creation_func = std::bind(
- static_cast<std::shared_ptr<grpc::Channel> (*)(
- const std::string&, const std::string&,
- grpc::testing::transport_security, bool)>(
- grpc::CreateTestChannel),
- *it, FLAGS_server_host_override, security_type, !FLAGS_use_test_ca);
+ grpc::testing::ChannelCreationFunc channel_creation_func =
+ std::bind(static_cast<std::shared_ptr<grpc::Channel> (*)(
+ const std::string&, const std::string&,
+ grpc::testing::transport_security, bool)>(
+ grpc::CreateTestChannel),
+ *it, absl::GetFlag(FLAGS_server_host_override),
+ security_type, !absl::GetFlag(FLAGS_use_test_ca));
// Create stub(s) for each channel
- for (int stub_idx = 0; stub_idx < FLAGS_num_stubs_per_channel;
- stub_idx++) {
+ for (int stub_idx = 0;
+ stub_idx < absl::GetFlag(FLAGS_num_stubs_per_channel); stub_idx++) {
clients.emplace_back(new StressTestInteropClient(
++thread_idx, *it, channel_creation_func, test_selector,
- FLAGS_test_duration_secs, FLAGS_sleep_duration_ms,
- FLAGS_do_not_abort_on_transient_failures));
+ absl::GetFlag(FLAGS_test_duration_secs),
+ absl::GetFlag(FLAGS_sleep_duration_ms),
+ absl::GetFlag(FLAGS_do_not_abort_on_transient_failures)));
bool is_already_created = false;
// QpsGauge name
// Start metrics server before waiting for the stress test threads
std::unique_ptr<grpc::Server> metrics_server;
- if (FLAGS_metrics_port > 0) {
- metrics_server = metrics_service.StartServer(FLAGS_metrics_port);
+ if (absl::GetFlag(FLAGS_metrics_port) > 0) {
+ metrics_server =
+ metrics_service.StartServer(absl::GetFlag(FLAGS_metrics_port));
}
// Wait for the stress test threads to complete
*
*/
+#include <grpcpp/grpcpp.h>
+#include <grpcpp/server.h>
+#include <grpcpp/server_builder.h>
+#include <grpcpp/server_context.h>
+
#include <atomic>
#include <chrono>
#include <condition_variable>
#include <thread>
#include <vector>
+#include "absl/flags/flag.h"
#include "absl/strings/str_split.h"
-
-#include <gflags/gflags.h>
-#include <grpcpp/grpcpp.h>
-#include <grpcpp/server.h>
-#include <grpcpp/server_builder.h>
-#include <grpcpp/server_context.h>
-
#include "src/core/lib/gpr/env.h"
#include "src/proto/grpc/testing/empty.pb.h"
#include "src/proto/grpc/testing/messages.pb.h"
#include "test/core/util/test_config.h"
#include "test/cpp/util/test_config.h"
-DEFINE_bool(fail_on_failed_rpc, false,
- "Fail client if any RPCs fail after first successful RPC.");
-DEFINE_int32(num_channels, 1, "Number of channels.");
-DEFINE_bool(print_response, false, "Write RPC response to stdout.");
-DEFINE_int32(qps, 1, "Qps per channel.");
-DEFINE_int32(rpc_timeout_sec, 30, "Per RPC timeout seconds.");
-DEFINE_string(server, "localhost:50051", "Address of server.");
-DEFINE_int32(stats_port, 50052,
- "Port to expose peer distribution stats service.");
-DEFINE_string(rpc, "UnaryCall", "a comma separated list of rpc methods.");
-DEFINE_string(metadata, "", "metadata to send with the RPC.");
+ABSL_FLAG(bool, fail_on_failed_rpc, false,
+ "Fail client if any RPCs fail after first successful RPC.");
+ABSL_FLAG(int32_t, num_channels, 1, "Number of channels.");
+ABSL_FLAG(bool, print_response, false, "Write RPC response to stdout.");
+ABSL_FLAG(int32_t, qps, 1, "Qps per channel.");
+// TODO(Capstan): Consider using absl::Duration
+ABSL_FLAG(int32_t, rpc_timeout_sec, 30, "Per RPC timeout seconds.");
+ABSL_FLAG(std::string, server, "localhost:50051", "Address of server.");
+ABSL_FLAG(int32_t, stats_port, 50052,
+ "Port to expose peer distribution stats service.");
+ABSL_FLAG(std::string, rpc, "UnaryCall",
+ "a comma separated list of rpc methods.");
+ABSL_FLAG(std::string, metadata, "", "metadata to send with the RPC.");
using grpc::Channel;
using grpc::ClientAsyncResponseReader;
using grpc::Server;
using grpc::ServerBuilder;
using grpc::ServerContext;
-using grpc::ServerCredentials;
-using grpc::ServerReader;
-using grpc::ServerReaderWriter;
-using grpc::ServerWriter;
using grpc::Status;
using grpc::testing::Empty;
using grpc::testing::LoadBalancerStatsRequest;
}
std::chrono::system_clock::time_point deadline =
std::chrono::system_clock::now() +
- std::chrono::seconds(FLAGS_rpc_timeout_sec);
+ std::chrono::seconds(absl::GetFlag(FLAGS_rpc_timeout_sec));
AsyncClientCall* call = new AsyncClientCall;
call->context.set_deadline(deadline);
for (const auto& data : metadata) {
}
std::chrono::system_clock::time_point deadline =
std::chrono::system_clock::now() +
- std::chrono::seconds(FLAGS_rpc_timeout_sec);
+ std::chrono::seconds(absl::GetFlag(FLAGS_rpc_timeout_sec));
AsyncClientCall* call = new AsyncClientCall;
call->context.set_deadline(deadline);
for (const auto& data : metadata) {
}
if (!call->status.ok()) {
- if (FLAGS_print_response || FLAGS_fail_on_failed_rpc) {
+ if (absl::GetFlag(FLAGS_print_response) ||
+ absl::GetFlag(FLAGS_fail_on_failed_rpc)) {
std::cout << "RPC failed: " << call->status.error_code() << ": "
<< call->status.error_message() << std::endl;
}
- if (FLAGS_fail_on_failed_rpc && one_rpc_succeeded.load()) {
+ if (absl::GetFlag(FLAGS_fail_on_failed_rpc) &&
+ one_rpc_succeeded.load()) {
abort();
}
} else {
- if (FLAGS_print_response) {
+ if (absl::GetFlag(FLAGS_print_response)) {
auto metadata_hostname =
call->context.GetServerInitialMetadata().find("hostname");
std::string hostname =
public:
Status GetClientStats(ServerContext* context,
const LoadBalancerStatsRequest* request,
- LoadBalancerStatsResponse* response) {
+ LoadBalancerStatsResponse* response) override {
int start_id;
int end_id;
XdsStatsWatcher* watcher;
};
void RunTestLoop(std::chrono::duration<double> duration_per_query) {
- std::vector<absl::string_view> rpc_methods =
- absl::StrSplit(FLAGS_rpc, ',', absl::SkipEmpty());
+ std::vector<std::string> rpc_methods =
+ absl::StrSplit(absl::GetFlag(FLAGS_rpc), ',', absl::SkipEmpty());
// Store Metadata like
// "EmptyCall:key1:value1,UnaryCall:key1:value1,UnaryCall:key2:value2" into a
// map where the key is the RPC method and value is a vector of key:value
// pairs. {EmptyCall, [{key1,value1}],
// UnaryCall, [{key1,value1}, {key2,value2}]}
- std::vector<absl::string_view> rpc_metadata =
- absl::StrSplit(FLAGS_metadata, ',', absl::SkipEmpty());
+ std::vector<std::string> rpc_metadata =
+ absl::StrSplit(absl::GetFlag(FLAGS_metadata), ',', absl::SkipEmpty());
std::map<std::string, std::vector<std::pair<std::string, std::string>>>
metadata_map;
for (auto& data : rpc_metadata) {
- std::vector<absl::string_view> metadata =
+ std::vector<std::string> metadata =
absl::StrSplit(data, ':', absl::SkipEmpty());
GPR_ASSERT(metadata.size() == 3);
- metadata_map[std::string(metadata[0])].push_back(
- {std::string(metadata[1]), std::string(metadata[2])});
+ metadata_map[metadata[0]].push_back({metadata[1], metadata[2]});
}
- TestClient client(
- grpc::CreateChannel(FLAGS_server, grpc::InsecureChannelCredentials()));
+ TestClient client(grpc::CreateChannel(absl::GetFlag(FLAGS_server),
+ grpc::InsecureChannelCredentials()));
std::chrono::time_point<std::chrono::system_clock> start =
std::chrono::system_clock::now();
std::chrono::duration<double> elapsed;
std::thread thread = std::thread(&TestClient::AsyncCompleteRpc, &client);
while (true) {
- for (const absl::string_view& rpc_method : rpc_methods) {
+ for (const std::string& rpc_method : rpc_methods) {
elapsed = std::chrono::system_clock::now() - start;
if (elapsed > duration_per_query) {
start = std::chrono::system_clock::now();
- auto metadata_iter = metadata_map.find(std::string(rpc_method));
+ auto metadata_iter = metadata_map.find(rpc_method);
if (rpc_method == "EmptyCall") {
client.AsyncEmptyCall(
metadata_iter != metadata_map.end()
grpc::testing::InitTest(&argc, &argv, true);
std::chrono::duration<double> duration_per_query =
- std::chrono::nanoseconds(std::chrono::seconds(1)) / FLAGS_qps;
+ std::chrono::nanoseconds(std::chrono::seconds(1)) /
+ absl::GetFlag(FLAGS_qps);
std::vector<std::thread> test_threads;
- test_threads.reserve(FLAGS_num_channels);
- for (int i = 0; i < FLAGS_num_channels; i++) {
+ test_threads.reserve(absl::GetFlag(FLAGS_num_channels));
+ for (int i = 0; i < absl::GetFlag(FLAGS_num_channels); i++) {
test_threads.emplace_back(std::thread(&RunTestLoop, duration_per_query));
}
- RunServer(FLAGS_stats_port);
+ RunServer(absl::GetFlag(FLAGS_stats_port));
for (auto it = test_threads.begin(); it != test_threads.end(); it++) {
it->join();
*
*/
-#include <gflags/gflags.h>
#include <grpc/grpc.h>
#include <grpc/support/log.h>
#include <grpc/support/time.h>
#include <sstream>
+#include "absl/flags/flag.h"
#include "src/core/lib/gpr/string.h"
#include "src/core/lib/iomgr/gethostname.h"
#include "src/core/lib/transport/byte_stream.h"
#include "test/core/util/test_config.h"
#include "test/cpp/util/test_config.h"
-DEFINE_int32(port, 50051, "Server port.");
-DEFINE_string(server_id, "cpp_server", "Server ID to include in responses.");
+ABSL_FLAG(int32_t, port, 50051, "Server port.");
+ABSL_FLAG(std::string, server_id, "cpp_server",
+ "Server ID to include in responses.");
using grpc::Server;
using grpc::ServerBuilder;
using grpc::ServerContext;
-using grpc::ServerCredentials;
-using grpc::ServerReader;
-using grpc::ServerReaderWriter;
-using grpc::ServerWriter;
using grpc::Status;
using grpc::testing::Empty;
using grpc::testing::SimpleRequest;
TestServiceImpl(const std::string& i) : hostname_(i) {}
Status UnaryCall(ServerContext* context, const SimpleRequest* request,
- SimpleResponse* response) {
- response->set_server_id(FLAGS_server_id);
+ SimpleResponse* response) override {
+ response->set_server_id(absl::GetFlag(FLAGS_server_id));
response->set_hostname(hostname_);
context->AddInitialMetadata("hostname", hostname_);
return Status::OK;
}
Status EmptyCall(ServerContext* context, const Empty* request,
- Empty* response) {
+ Empty* response) override {
context->AddInitialMetadata("hostname", hostname_);
return Status::OK;
}
std::cout << "Failed to get hostname, terminating" << std::endl;
return 1;
}
- if (FLAGS_port == 0) {
+ if (absl::GetFlag(FLAGS_port) == 0) {
std::cout << "Invalid port, terminating" << std::endl;
return 1;
}
- RunServer(FLAGS_port, hostname);
+ RunServer(absl::GetFlag(FLAGS_port), hostname);
return 0;
}
target 'CronetTests' do
- platform :ios, '8.0'
+ platform :ios, '9.0'
pod 'Protobuf', :path => "#{GRPC_LOCAL_SRC}/third_party/protobuf", :inhibit_warnings => true
pod '!ProtoCompiler', :path => "#{GRPC_LOCAL_SRC}/src/objective-c"
'USE_HEADERMAP' => 'NO',
'ALWAYS_SEARCH_USER_PATHS' => 'NO',
}
+
+ # This is the RemoteTestCpp podspec object.
+ remote_test_cpp_spec = installer.pod_targets.find{|t| t.name.start_with?('RemoteTestCpp')}.root_spec
+
+ # ios-cpp-test-cronet failes by chance because the RemoteTestCpp target cannot find Protobuf-C++.
+ remote_test_cpp_spec.pod_target_xcconfig = {
+ 'HEADER_SEARCH_PATHS' => '"$(inherited)" "$(PODS_ROOT)/header/Public/Protobuf-C++"',
+ }
end
post_install do |installer|
s.summary = "RemoteTest example"
s.source = { :git => 'https://github.com/grpc/grpc.git' }
- s.ios.deployment_target = '7.1'
- s.osx.deployment_target = '10.9'
+ s.ios.deployment_target = '9.0'
+ s.osx.deployment_target = '10.10'
# Run protoc with the C++ and gRPC plugins to generate protocol messages and gRPC clients.
s.dependency "!ProtoCompiler-gRPCCppPlugin"
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
- IPHONEOS_DEPLOYMENT_TARGET = 8.3;
+ IPHONEOS_DEPLOYMENT_TARGET = 9.0;
MTL_ENABLE_DEBUG_INFO = YES;
ONLY_ACTIVE_ARCH = YES;
SDKROOT = iphoneos;
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
- IPHONEOS_DEPLOYMENT_TARGET = 8.3;
+ IPHONEOS_DEPLOYMENT_TARGET = 9.0;
MTL_ENABLE_DEBUG_INFO = YES;
ONLY_ACTIVE_ARCH = YES;
SDKROOT = iphoneos;
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
- IPHONEOS_DEPLOYMENT_TARGET = 8.3;
+ IPHONEOS_DEPLOYMENT_TARGET = 9.0;
MTL_ENABLE_DEBUG_INFO = YES;
ONLY_ACTIVE_ARCH = YES;
SDKROOT = iphoneos;
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
- IPHONEOS_DEPLOYMENT_TARGET = 8.3;
+ IPHONEOS_DEPLOYMENT_TARGET = 9.0;
MTL_ENABLE_DEBUG_INFO = NO;
SDKROOT = iphoneos;
VALIDATE_PRODUCT = YES;
echo "TIME: $(date)"
pod install
+# ios-cpp-test-cronet flakes sometimes because of missing files in Protobuf-C++,
+# add some log to help find out the root cause.
+# TODO(yulinliang): Delete it after solving the issue.
+if [ -d "./Pods/Headers/Public/Protobuf-C++/google/protobuf" ]
+then
+ echo "Protobuf-C++/google/protobuf/ has been imported."
+ number_of_files=$(find Pods/Headers/Public/Protobuf-C++/google/protobuf -name "*.h" | wc -l)
+ echo "The number of header files in Pods/Headers/Public/Protobuf-C++/google/protobuf/ is $number_of_files"
+else
+ echo "Error: Protobuf-C++/google/protobuf/ hasn't been imported."
+fi
name = "bm_fullstack_trickle",
size = "large",
srcs = ["bm_fullstack_trickle.cc"],
+ external_deps = [
+ "absl/flags:flag",
+ ],
tags = [
"manual",
"no_windows",
grpc_core::ExecCtx exec_ctx;
size_t channel_size = grpc_channel_stack_size(
- filters.size() == 0 ? nullptr : &filters[0], filters.size());
+ filters.empty() ? nullptr : &filters[0], filters.size());
grpc_channel_stack* channel_stack =
static_cast<grpc_channel_stack*>(gpr_zalloc(channel_size));
GPR_ASSERT(GRPC_LOG_IF_ERROR(
"channel_stack_init",
grpc_channel_stack_init(1, FilterDestroy, channel_stack,
- filters.size() == 0 ? nullptr : &filters[0],
+ filters.empty() ? nullptr : &filters[0],
filters.size(), &channel_args,
fixture.flags & REQUIRES_TRANSPORT
? &dummy_transport::dummy_transport
cq_ = grpc_completion_queue_create_for_next(nullptr);
}
- void Finish(benchmark::State& state) {
+ void Finish(benchmark::State& state) override {
grpc_completion_queue_destroy(cq_);
grpc_channel_destroy(channel_);
TrackCounters::Finish(state);
/* Benchmark gRPC end2end in various configurations */
#include <benchmark/benchmark.h>
-#include <gflags/gflags.h>
+
#include <fstream>
+#include "absl/flags/flag.h"
+#include "absl/memory/memory.h"
#include "src/core/ext/transport/chttp2/transport/chttp2_transport.h"
#include "src/core/ext/transport/chttp2/transport/internal.h"
#include "src/core/lib/iomgr/timer_manager.h"
#include "test/cpp/microbenchmarks/fullstack_fixtures.h"
#include "test/cpp/util/test_config.h"
-DEFINE_bool(log, false, "Log state to CSV files");
-DEFINE_int32(
- warmup_megabytes, 1,
- "Number of megabytes to pump before collecting flow control stats");
-DEFINE_int32(
- warmup_iterations, 100,
- "Number of iterations to run before collecting flow control stats");
-DEFINE_int32(warmup_max_time_seconds, 10,
- "Maximum number of seconds to run warmup loop");
+ABSL_FLAG(bool, log, false, "Log state to CSV files");
+ABSL_FLAG(int32_t, warmup_megabytes, 1,
+ "Number of megabytes to pump before collecting flow control stats");
+ABSL_FLAG(int32_t, warmup_iterations, 100,
+ "Number of iterations to run before collecting flow control stats");
+ABSL_FLAG(int32_t, warmup_max_time_seconds, 10,
+ "Maximum number of seconds to run warmup loop");
namespace grpc {
namespace testing {
: EndpointPairFixture(service, MakeEndpoints(kilobits_per_second, stats),
FixtureConfiguration()),
stats_(stats) {
- if (FLAGS_log) {
+ if (absl::GetFlag(FLAGS_log)) {
std::ostringstream fn;
fn << "trickle." << (streaming ? "streaming" : "unary") << "." << req_size
<< "." << resp_size << "." << kilobits_per_second << ".csv";
- log_.reset(new std::ofstream(fn.str().c_str()));
+ log_ = absl::make_unique<std::ofstream>(fn.str().c_str());
write_csv(log_.get(), "t", "iteration", "client_backlog",
"server_backlog", "client_t_stall", "client_s_stall",
"server_t_stall", "server_s_stall", "client_t_remote",
}
}
- virtual ~TrickledCHTTP2() {
+ ~TrickledCHTTP2() override {
if (stats_ != nullptr) {
grpc_passthru_endpoint_stats_destroy(stats_);
}
}
- void AddToLabel(std::ostream& out, benchmark::State& state) {
+ void AddToLabel(std::ostream& out, benchmark::State& state) override {
out << " writes/iter:"
<< ((double)stats_->num_writes / (double)state.iterations())
<< " cli_transport_stalls/iter:"
}
};
gpr_timespec warmup_start = gpr_now(GPR_CLOCK_MONOTONIC);
- for (int i = 0;
- i < GPR_MAX(FLAGS_warmup_iterations, FLAGS_warmup_megabytes * 1024 *
- 1024 / (14 + state.range(0)));
+ for (int i = 0; i < GPR_MAX(absl::GetFlag(FLAGS_warmup_iterations),
+ absl::GetFlag(FLAGS_warmup_megabytes) * 1024 *
+ 1024 / (14 + state.range(0)));
i++) {
inner_loop(true);
if (gpr_time_cmp(gpr_time_sub(gpr_now(GPR_CLOCK_MONOTONIC), warmup_start),
- gpr_time_from_seconds(FLAGS_warmup_max_time_seconds,
- GPR_TIMESPAN)) > 0) {
+ gpr_time_from_seconds(
+ absl::GetFlag(FLAGS_warmup_max_time_seconds),
+ GPR_TIMESPAN)) > 0) {
break;
}
}
fixture->cq(), fixture->cq(), tag(slot));
};
gpr_timespec warmup_start = gpr_now(GPR_CLOCK_MONOTONIC);
- for (int i = 0;
- i < GPR_MAX(FLAGS_warmup_iterations, FLAGS_warmup_megabytes * 1024 *
- 1024 / (14 + state.range(0)));
+ for (int i = 0; i < GPR_MAX(absl::GetFlag(FLAGS_warmup_iterations),
+ absl::GetFlag(FLAGS_warmup_megabytes) * 1024 *
+ 1024 / (14 + state.range(0)));
i++) {
inner_loop(true);
- if (gpr_time_cmp(gpr_time_sub(gpr_now(GPR_CLOCK_MONOTONIC), warmup_start),
- gpr_time_from_seconds(FLAGS_warmup_max_time_seconds,
- GPR_TIMESPAN)) > 0) {
+ if (gpr_time_cmp(
+ gpr_time_sub(gpr_now(GPR_CLOCK_MONOTONIC), warmup_start),
+ gpr_time_from_seconds(absl::GetFlag(FLAGS_warmup_max_time_seconds),
+ GPR_TIMESPAN)) > 0) {
break;
}
}
int i = 0;
for (auto _ : state) {
TimerClosure* timer_closure = &timer_closures[i++ % kTimerCount];
- GRPC_CLOSURE_INIT(&timer_closure->closure,
- [](void* /*args*/, grpc_error* /*err*/) {}, nullptr,
- grpc_schedule_on_exec_ctx);
+ GRPC_CLOSURE_INIT(
+ &timer_closure->closure, [](void* /*args*/, grpc_error* /*err*/) {},
+ nullptr, grpc_schedule_on_exec_ctx);
grpc_timer_init(&timer_closure->timer, GRPC_MILLIS_INF_FUTURE,
&timer_closure->closure);
grpc_timer_cancel(&timer_closure->timer);
for (auto _ : state) {
for (grpc_millis deadline = start; deadline != end; deadline += increment) {
TimerClosure* timer_closure = &timer_closures[deadline % kTimerCount];
- GRPC_CLOSURE_INIT(&timer_closure->closure,
- [](void* /*args*/, grpc_error* /*err*/) {}, nullptr,
- grpc_schedule_on_exec_ctx);
+ GRPC_CLOSURE_INIT(
+ &timer_closure->closure, [](void* /*args*/, grpc_error* /*err*/) {},
+ nullptr, grpc_schedule_on_exec_ctx);
grpc_timer_init(&timer_closure->timer, deadline, &timer_closure->closure);
}
* BENCHMARKING KERNELS
*/
-void SendCallbackUnaryPingPong(benchmark::State* state, ClientContext* cli_ctx,
- EchoRequest* request, EchoResponse* response,
- EchoTestService::Stub* stub_, bool* done,
- std::mutex* mu, std::condition_variable* cv) {
+inline void SendCallbackUnaryPingPong(
+ benchmark::State* state, ClientContext* cli_ctx, EchoRequest* request,
+ EchoResponse* response, EchoTestService::Stub* stub_, bool* done,
+ std::mutex* mu, std::condition_variable* cv) {
int response_msgs_size = state->range(1);
cli_ctx->AddMetadata(kServerMessageSize, std::to_string(response_msgs_size));
stub_->experimental_async()->Echo(
}
}
- virtual ~FullstackFixture() {
+ ~FullstackFixture() override {
server_->Shutdown();
cq_->Shutdown();
void* tag;
}
}
- void AddToLabel(std::ostream& out, benchmark::State& state) {
+ void AddToLabel(std::ostream& out, benchmark::State& state) override {
BaseFixture::AddToLabel(out, state);
out << " polls/iter:"
<< static_cast<double>(grpc_get_cq_poll_num(this->cq()->cq())) /
FixtureConfiguration())
: FullstackFixture(service, fixture_configuration, MakeAddress(&port_)) {}
- ~TCP() { grpc_recycle_unused_port(port_); }
+ ~TCP() override { grpc_recycle_unused_port(port_); }
private:
int port_;
FixtureConfiguration())
: FullstackFixture(service, fixture_configuration, MakeAddress(&port_)) {}
- ~UDS() { grpc_recycle_unused_port(port_); }
+ ~UDS() override { grpc_recycle_unused_port(port_); }
private:
int port_;
const FixtureConfiguration& fixture_configuration =
FixtureConfiguration())
: FullstackFixture(service, fixture_configuration, "") {}
- ~InProcess() {}
+ ~InProcess() override {}
};
class EndpointPairFixture : public BaseFixture {
}
}
- virtual ~EndpointPairFixture() {
+ ~EndpointPairFixture() override {
server_->Shutdown();
cq_->Shutdown();
void* tag;
}
}
- void AddToLabel(std::ostream& out, benchmark::State& state) {
+ void AddToLabel(std::ostream& out, benchmark::State& state) override {
BaseFixture::AddToLabel(out, state);
out << " polls/iter:"
<< static_cast<double>(grpc_get_cq_poll_num(this->cq()->cq())) /
fixture_configuration),
stats_(stats) {}
- virtual ~InProcessCHTTP2WithExplicitStats() {
+ ~InProcessCHTTP2WithExplicitStats() override {
if (stats_ != nullptr) {
grpc_passthru_endpoint_stats_destroy(stats_);
}
}
- void AddToLabel(std::ostream& out, benchmark::State& state) {
+ void AddToLabel(std::ostream& out, benchmark::State& state) override {
EndpointPairFixture::AddToLabel(out, state);
out << " writes/iter:"
<< static_cast<double>(gpr_atm_no_barrier_load(&stats_->num_writes)) /
*
*/
+#include <address_sorting/address_sorting.h>
+#include <gmock/gmock.h>
#include <grpc/grpc.h>
#include <grpc/support/alloc.h>
#include <grpc/support/log.h>
#include <grpc/support/sync.h>
#include <grpc/support/time.h>
#include <string.h>
-
-#include <gflags/gflags.h>
-#include <gmock/gmock.h>
#include <sys/types.h>
-#include <vector>
-#include <address_sorting/address_sorting.h>
-#include "test/cpp/util/subprocess.h"
-#include "test/cpp/util/test_config.h"
+#include <vector>
#include "src/core/ext/filters/client_channel/client_channel.h"
#include "src/core/ext/filters/client_channel/resolver.h"
#include "src/core/lib/iomgr/sockaddr_utils.h"
#include "test/core/util/port.h"
#include "test/core/util/test_config.h"
+#include "test/cpp/util/subprocess.h"
+#include "test/cpp/util/test_config.h"
#ifndef GPR_WINDOWS
#include <arpa/inet.h>
class AddressSortingTest : public ::testing::Test {
protected:
void SetUp() override { grpc_init(); }
- void TearDown() override { grpc_shutdown_blocking(); }
+ void TearDown() override { grpc_shutdown(); }
};
/* Tests for rule 1 */
GPR_GLOBAL_CONFIG_GET(grpc_dns_resolver);
if (strlen(resolver.get()) == 0) {
GPR_GLOBAL_CONFIG_SET(grpc_dns_resolver, "ares");
- } else if (strcmp("ares", resolver.get())) {
+ } else if (strcmp("ares", resolver.get()) != 0) {
gpr_log(GPR_INFO, "GRPC_DNS_RESOLVER != ares: %s.", resolver.get());
}
grpc::testing::TestEnvironment env(argc, argv);
*
*/
-#include <stdio.h>
-#include <string.h>
-
-#include <string>
-
-#include "absl/strings/str_cat.h"
-#include "absl/strings/str_format.h"
-
-#include <gflags/gflags.h>
#include <gmock/gmock.h>
-
#include <grpc/byte_buffer.h>
#include <grpc/grpc.h>
#include <grpc/support/alloc.h>
#include <grpc/support/log.h>
#include <grpc/support/time.h>
+#include <stdio.h>
+#include <string.h>
+#include <string>
+
+#include "absl/strings/str_cat.h"
+#include "absl/strings/str_format.h"
#include "src/core/ext/filters/client_channel/resolver.h"
#include "src/core/ext/filters/client_channel/resolver/dns/dns_resolver_selection.h"
#include "src/core/ext/filters/client_channel/resolver_registry.h"
#define BAD_SOCKET_RETURN_VAL INVALID_SOCKET
#else
#include "src/core/lib/iomgr/sockaddr_posix.h"
-#define BAD_SOCKET_RETURN_VAL -1
+#define BAD_SOCKET_RETURN_VAL (-1)
#endif
namespace {
#define BAD_SOCKET_RETURN_VAL INVALID_SOCKET
#else
#include "src/core/lib/iomgr/sockaddr_posix.h"
-#define BAD_SOCKET_RETURN_VAL -1
+#define BAD_SOCKET_RETURN_VAL (-1)
#endif
namespace grpc {
srcs = [
"resolver_component_tests_runner_invoker.cc",
],
+ external_deps = [
+ "absl/flags:flag",
+ ],
deps = [
"//test/cpp/util:test_util",
"//test/core/util:grpc_test_util",
*
*/
-#include <grpc/support/port_platform.h>
-
-#include <string>
-#include <thread>
-#include <vector>
-
#include <errno.h>
#include <fcntl.h>
-#include <string.h>
-
-#include <gflags/gflags.h>
#include <gmock/gmock.h>
-
-#include "absl/strings/str_cat.h"
-#include "absl/strings/str_format.h"
-
#include <grpc/grpc.h>
#include <grpc/impl/codegen/grpc_types.h>
#include <grpc/support/alloc.h>
#include <grpc/support/log.h>
+#include <grpc/support/port_platform.h>
#include <grpc/support/sync.h>
#include <grpc/support/time.h>
+#include <string.h>
-#include "test/cpp/util/subprocess.h"
-#include "test/cpp/util/test_config.h"
+#include <string>
+#include <thread>
+#include <vector>
+#include "absl/flags/flag.h"
+#include "absl/memory/memory.h"
+#include "absl/strings/str_cat.h"
+#include "absl/strings/str_format.h"
#include "src/core/ext/filters/client_channel/client_channel.h"
#include "src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.h"
#include "src/core/ext/filters/client_channel/resolver.h"
#include "src/core/lib/iomgr/work_serializer.h"
#include "test/core/util/port.h"
#include "test/core/util/test_config.h"
-
#include "test/cpp/naming/dns_test_util.h"
+#include "test/cpp/util/subprocess.h"
+#include "test/cpp/util/test_config.h"
// TODO: pull in different headers when enabling this
// test on windows. Also set BAD_SOCKET_RETURN_VAL
#define BAD_SOCKET_RETURN_VAL INVALID_SOCKET
#else
#include "src/core/lib/iomgr/sockaddr_posix.h"
-#define BAD_SOCKET_RETURN_VAL -1
+#define BAD_SOCKET_RETURN_VAL (-1)
#endif
-using grpc::SubProcess;
using std::vector;
using testing::UnorderedElementsAreArray;
-// Hack copied from "test/cpp/end2end/server_crash_test_client.cc"!
-// In some distros, gflags is in the namespace google, and in some others,
-// in gflags. This hack is enabling us to find both.
-namespace google {}
-namespace gflags {}
-using namespace google;
-using namespace gflags;
-
-DEFINE_string(target_name, "", "Target name to resolve.");
-DEFINE_string(do_ordered_address_comparison, "",
- "Whether or not to compare resolved addresses to expected "
- "addresses using an ordered comparison. This is useful for "
- "testing certain behaviors that involve sorting of resolved "
- "addresses. Note it would be better if this argument was a "
- "bool flag, but it's a string for ease of invocation from "
- "the generated python test runner.");
-DEFINE_string(expected_addrs, "",
- "List of expected backend or balancer addresses in the form "
- "'<ip0:port0>,<is_balancer0>;<ip1:port1>,<is_balancer1>;...'. "
- "'is_balancer' should be bool, i.e. true or false.");
-DEFINE_string(expected_chosen_service_config, "",
- "Expected service config json string that gets chosen (no "
- "whitespace). Empty for none.");
-DEFINE_string(expected_service_config_error, "",
- "Expected service config error. Empty for none.");
-DEFINE_string(
- local_dns_server_address, "",
- "Optional. This address is placed as the uri authority if present.");
-DEFINE_string(
- enable_srv_queries, "",
+ABSL_FLAG(std::string, target_name, "", "Target name to resolve.");
+ABSL_FLAG(std::string, do_ordered_address_comparison, "",
+ "Whether or not to compare resolved addresses to expected "
+ "addresses using an ordered comparison. This is useful for "
+ "testing certain behaviors that involve sorting of resolved "
+ "addresses. Note it would be better if this argument was a "
+ "bool flag, but it's a string for ease of invocation from "
+ "the generated python test runner.");
+ABSL_FLAG(std::string, expected_addrs, "",
+ "List of expected backend or balancer addresses in the form "
+ "'<ip0:port0>,<is_balancer0>;<ip1:port1>,<is_balancer1>;...'. "
+ "'is_balancer' should be bool, i.e. true or false.");
+ABSL_FLAG(std::string, expected_chosen_service_config, "",
+ "Expected service config json string that gets chosen (no "
+ "whitespace). Empty for none.");
+ABSL_FLAG(std::string, expected_service_config_error, "",
+ "Expected service config error. Empty for none.");
+ABSL_FLAG(std::string, local_dns_server_address, "",
+ "Optional. This address is placed as the uri authority if present.");
+// TODO(Capstan): Is this worth making `bool` now with Abseil flags?
+ABSL_FLAG(
+ std::string, enable_srv_queries, "",
"Whether or not to enable SRV queries for the ares resolver instance."
"It would be better if this arg could be bool, but the way that we "
"generate "
"the python script runner doesn't allow us to pass a gflags bool to this "
"binary.");
-DEFINE_string(
- enable_txt_queries, "",
+// TODO(Capstan): Is this worth making `bool` now with Abseil flags?
+ABSL_FLAG(
+ std::string, enable_txt_queries, "",
"Whether or not to enable TXT queries for the ares resolver instance."
"It would be better if this arg could be bool, but the way that we "
"generate "
"the python script runner doesn't allow us to pass a gflags bool to this "
"binary.");
-DEFINE_string(
- inject_broken_nameserver_list, "",
+// TODO(Capstan): Is this worth making `bool` now with Abseil flags?
+ABSL_FLAG(
+ std::string, inject_broken_nameserver_list, "",
"Whether or not to configure c-ares to use a broken nameserver list, in "
"which "
"the first nameserver in the list is non-responsive, but the second one "
"generate "
"the python script runner doesn't allow us to pass a gflags bool to this "
"binary.");
-DEFINE_string(expected_lb_policy, "",
- "Expected lb policy name that appears in resolver result channel "
- "arg. Empty for none.");
+ABSL_FLAG(std::string, expected_lb_policy, "",
+ "Expected lb policy name that appears in resolver result channel "
+ "arg. Empty for none.");
namespace {
vector<GrpcLBAddress> ParseExpectedAddrs(std::string expected_addrs) {
std::vector<GrpcLBAddress> out;
- while (expected_addrs.size() != 0) {
+ while (!expected_addrs.empty()) {
// get the next <ip>,<port> (v4 or v6)
size_t next_comma = expected_addrs.find(',');
if (next_comma == std::string::npos) {
expected_addrs =
expected_addrs.substr(next_semicolon + 1, std::string::npos);
}
- if (out.size() == 0) {
+ if (out.empty()) {
gpr_log(GPR_ERROR,
"expected_addrs arg should be a semicolon-separated list of "
"<ip-port>,<bool> pairs");
void CheckServiceConfigResultLocked(const char* service_config_json,
grpc_error* service_config_error,
ArgsStruct* args) {
- if (args->expected_service_config_string != "") {
+ if (!args->expected_service_config_string.empty()) {
GPR_ASSERT(service_config_json != nullptr);
EXPECT_EQ(service_config_json, args->expected_service_config_string);
}
- if (args->expected_service_config_error == "") {
+ if (args->expected_service_config_error.empty()) {
EXPECT_EQ(service_config_error, GRPC_ERROR_NONE);
} else {
EXPECT_THAT(grpc_error_string(service_config_error),
ArgsStruct* args) {
const grpc_arg* lb_policy_arg =
grpc_channel_args_find(channel_args, GRPC_ARG_LB_POLICY_NAME);
- if (args->expected_lb_policy != "") {
+ if (!args->expected_lb_policy.empty()) {
GPR_ASSERT(lb_policy_arg != nullptr);
GPR_ASSERT(lb_policy_arg->type == GRPC_ARG_STRING);
EXPECT_EQ(lb_policy_arg->value.string, args->expected_lb_policy);
found_lb_addrs.size(), args->expected_addrs.size());
abort();
}
- if (FLAGS_do_ordered_address_comparison == "True") {
+ if (absl::GetFlag(FLAGS_do_ordered_address_comparison) == "True") {
EXPECT_EQ(args->expected_addrs, found_lb_addrs);
- } else if (FLAGS_do_ordered_address_comparison == "False") {
+ } else if (absl::GetFlag(FLAGS_do_ordered_address_comparison) == "False") {
EXPECT_THAT(args->expected_addrs,
UnorderedElementsAreArray(found_lb_addrs));
} else {
gpr_log(GPR_ERROR,
"Invalid for setting for --do_ordered_address_comparison. "
"Have %s, want True or False",
- FLAGS_do_ordered_address_comparison.c_str());
+ absl::GetFlag(FLAGS_do_ordered_address_comparison).c_str());
GPR_ASSERT(0);
}
const char* service_config_json =
: result.service_config->json_string().c_str();
CheckServiceConfigResultLocked(
service_config_json, GRPC_ERROR_REF(result.service_config_error), args);
- if (args->expected_service_config_string == "") {
+ if (args->expected_service_config_string.empty()) {
CheckLBPolicyResultLocked(result.args, args);
}
}
memset(dns_server_addrs, 0, sizeof(dns_server_addrs));
std::string unused_host;
std::string local_dns_server_port;
- GPR_ASSERT(grpc_core::SplitHostPort(FLAGS_local_dns_server_address.c_str(),
- &unused_host, &local_dns_server_port));
+ GPR_ASSERT(grpc_core::SplitHostPort(
+ absl::GetFlag(FLAGS_local_dns_server_address).c_str(), &unused_host,
+ &local_dns_server_port));
gpr_log(GPR_DEBUG,
"Injecting broken nameserver list. Bad server address:|[::1]:%d|. "
"Good server address:%s",
g_fake_non_responsive_dns_server_port,
- FLAGS_local_dns_server_address.c_str());
+ absl::GetFlag(FLAGS_local_dns_server_address).c_str());
// Put the non-responsive DNS server at the front of c-ares's nameserver list.
dns_server_addrs[0].family = AF_INET6;
((char*)&dns_server_addrs[0].addr.addr6)[15] = 0x1;
grpc_core::ExecCtx exec_ctx;
ArgsStruct args;
ArgsInit(&args);
- args.expected_addrs = ParseExpectedAddrs(FLAGS_expected_addrs);
- args.expected_service_config_string = FLAGS_expected_chosen_service_config;
- args.expected_service_config_error = FLAGS_expected_service_config_error;
- args.expected_lb_policy = FLAGS_expected_lb_policy;
+ args.expected_addrs = ParseExpectedAddrs(absl::GetFlag(FLAGS_expected_addrs));
+ args.expected_service_config_string =
+ absl::GetFlag(FLAGS_expected_chosen_service_config);
+ args.expected_service_config_error =
+ absl::GetFlag(FLAGS_expected_service_config_error);
+ args.expected_lb_policy = absl::GetFlag(FLAGS_expected_lb_policy);
// maybe build the address with an authority
std::string whole_uri;
gpr_log(GPR_DEBUG,
"resolver_component_test: --inject_broken_nameserver_list: %s",
- FLAGS_inject_broken_nameserver_list.c_str());
+ absl::GetFlag(FLAGS_inject_broken_nameserver_list).c_str());
std::unique_ptr<grpc::testing::FakeNonResponsiveDNSServer>
fake_non_responsive_dns_server;
- if (FLAGS_inject_broken_nameserver_list == "True") {
+ if (absl::GetFlag(FLAGS_inject_broken_nameserver_list) == "True") {
g_fake_non_responsive_dns_server_port = grpc_pick_unused_port_or_die();
- fake_non_responsive_dns_server.reset(
- new grpc::testing::FakeNonResponsiveDNSServer(
- g_fake_non_responsive_dns_server_port));
+ fake_non_responsive_dns_server =
+ absl::make_unique<grpc::testing::FakeNonResponsiveDNSServer>(
+
+ g_fake_non_responsive_dns_server_port);
grpc_ares_test_only_inject_config = InjectBrokenNameServerList;
- whole_uri = absl::StrCat("dns:///", FLAGS_target_name);
- } else if (FLAGS_inject_broken_nameserver_list == "False") {
+ whole_uri = absl::StrCat("dns:///", absl::GetFlag(FLAGS_target_name));
+ } else if (absl::GetFlag(FLAGS_inject_broken_nameserver_list) == "False") {
gpr_log(GPR_INFO, "Specifying authority in uris to: %s",
- FLAGS_local_dns_server_address.c_str());
- whole_uri = absl::StrFormat("dns://%s/%s", FLAGS_local_dns_server_address,
- FLAGS_target_name);
+ absl::GetFlag(FLAGS_local_dns_server_address).c_str());
+ whole_uri = absl::StrFormat("dns://%s/%s",
+ absl::GetFlag(FLAGS_local_dns_server_address),
+ absl::GetFlag(FLAGS_target_name));
} else {
gpr_log(GPR_DEBUG, "Invalid value for --inject_broken_nameserver_list.");
abort();
}
gpr_log(GPR_DEBUG, "resolver_component_test: --enable_srv_queries: %s",
- FLAGS_enable_srv_queries.c_str());
+ absl::GetFlag(FLAGS_enable_srv_queries).c_str());
grpc_channel_args* resolver_args = nullptr;
// By default, SRV queries are disabled, so tests that expect no SRV query
// should avoid setting any channel arg. Test cases that do rely on the SRV
// query must explicitly enable SRV though.
- if (FLAGS_enable_srv_queries == "True") {
+ if (absl::GetFlag(FLAGS_enable_srv_queries) == "True") {
grpc_arg srv_queries_arg = grpc_channel_arg_integer_create(
const_cast<char*>(GRPC_ARG_DNS_ENABLE_SRV_QUERIES), true);
resolver_args =
grpc_channel_args_copy_and_add(nullptr, &srv_queries_arg, 1);
- } else if (FLAGS_enable_srv_queries != "False") {
+ } else if (absl::GetFlag(FLAGS_enable_srv_queries) != "False") {
gpr_log(GPR_DEBUG, "Invalid value for --enable_srv_queries.");
abort();
}
gpr_log(GPR_DEBUG, "resolver_component_test: --enable_txt_queries: %s",
- FLAGS_enable_txt_queries.c_str());
+ absl::GetFlag(FLAGS_enable_txt_queries).c_str());
// By default, TXT queries are disabled, so tests that expect no TXT query
// should avoid setting any channel arg. Test cases that do rely on the TXT
// query must explicitly enable TXT though.
- if (FLAGS_enable_txt_queries == "True") {
+ if (absl::GetFlag(FLAGS_enable_txt_queries) == "True") {
// Unlike SRV queries, there isn't a channel arg specific to TXT records.
// Rather, we use the resolver-agnostic "service config" resolution option,
// for which c-ares has its own specific default value, which isn't
grpc_channel_args_copy_and_add(resolver_args, &txt_queries_arg, 1);
grpc_channel_args_destroy(resolver_args);
resolver_args = tmp_args;
- } else if (FLAGS_enable_txt_queries != "False") {
+ } else if (absl::GetFlag(FLAGS_enable_txt_queries) != "False") {
gpr_log(GPR_DEBUG, "Invalid value for --enable_txt_queries.");
abort();
}
grpc::testing::TestEnvironment env(argc, argv);
::testing::InitGoogleTest(&argc, argv);
grpc::testing::InitTest(&argc, &argv, true);
- if (FLAGS_target_name == "") {
+ if (absl::GetFlag(FLAGS_target_name).empty()) {
gpr_log(GPR_ERROR, "Missing target_name param.");
abort();
}
#include <string.h>
#include <unistd.h>
-#include <gflags/gflags.h>
#include <string>
#include <thread>
#include <vector>
+#include "absl/flags/flag.h"
+
#ifdef __FreeBSD__
#include <sys/wait.h>
#endif
#include "test/cpp/util/subprocess.h"
#include "test/cpp/util/test_config.h"
-DEFINE_bool(
- running_under_bazel, false,
+ABSL_FLAG(
+ bool, running_under_bazel, false,
"True if this test is running under bazel. "
"False indicates that this test is running under run_tests.py. "
"Child process test binaries are located differently based on this flag. ");
-DEFINE_string(test_bin_name, "",
- "Name, without the preceding path, of the test binary");
+ABSL_FLAG(std::string, test_bin_name, "",
+ "Name, without the preceding path, of the test binary");
-DEFINE_string(grpc_test_directory_relative_to_test_srcdir,
- "/com_github_grpc_grpc",
- "This flag only applies if runner_under_bazel is true. This "
- "flag is ignored if runner_under_bazel is false. "
- "Directory of the <repo-root>/test directory relative to bazel's "
- "TEST_SRCDIR environment variable");
+ABSL_FLAG(std::string, grpc_test_directory_relative_to_test_srcdir,
+ "/com_github_grpc_grpc",
+ "This flag only applies if runner_under_bazel is true. This "
+ "flag is ignored if runner_under_bazel is false. "
+ "Directory of the <repo-root>/test directory relative to bazel's "
+ "TEST_SRCDIR environment variable");
using grpc::SubProcess;
"Test timeout reached or received signal. Interrupting test driver "
"child process.");
test_driver->Interrupt();
- return;
}
} // namespace
grpc::testing::TestEnvironment env(argc, argv);
grpc::testing::InitTest(&argc, &argv, true);
grpc_init();
- GPR_ASSERT(FLAGS_test_bin_name != "");
+ GPR_ASSERT(!absl::GetFlag(FLAGS_test_bin_name).empty());
std::string my_bin = argv[0];
- if (FLAGS_running_under_bazel) {
- GPR_ASSERT(FLAGS_grpc_test_directory_relative_to_test_srcdir != "");
+ if (absl::GetFlag(FLAGS_running_under_bazel)) {
+ GPR_ASSERT(!absl::GetFlag(FLAGS_grpc_test_directory_relative_to_test_srcdir)
+ .empty());
// Use bazel's TEST_SRCDIR environment variable to locate the "test data"
// binaries.
char* test_srcdir = gpr_getenv("TEST_SRCDIR");
std::string const bin_dir =
- test_srcdir + FLAGS_grpc_test_directory_relative_to_test_srcdir +
+ test_srcdir +
+ absl::GetFlag(FLAGS_grpc_test_directory_relative_to_test_srcdir) +
std::string("/test/cpp/naming");
// Invoke bazel's executeable links to the .sh and .py scripts (don't use
// the .sh and .py suffixes) to make
// sure that we're using bazel's test environment.
grpc::testing::InvokeResolverComponentTestsRunner(
bin_dir + "/resolver_component_tests_runner",
- bin_dir + "/" + FLAGS_test_bin_name, bin_dir + "/utils/dns_server",
+ bin_dir + "/" + absl::GetFlag(FLAGS_test_bin_name),
+ bin_dir + "/utils/dns_server",
bin_dir + "/resolver_test_record_groups.yaml",
bin_dir + "/utils/dns_resolver", bin_dir + "/utils/tcp_connect");
gpr_free(test_srcdir);
// Invoke the .sh and .py scripts directly where they are in source code.
grpc::testing::InvokeResolverComponentTestsRunner(
"test/cpp/naming/resolver_component_tests_runner.py",
- bin_dir + "/" + FLAGS_test_bin_name,
+ bin_dir + "/" + absl::GetFlag(FLAGS_test_bin_name),
"test/cpp/naming/utils/dns_server.py",
"test/cpp/naming/resolver_test_record_groups.yaml",
"test/cpp/naming/utils/dns_resolver.py",
InProcessCHTTP2(Service* service, grpc_passthru_endpoint_stats* stats)
: EndpointPairFixture(service, MakeEndpoints(stats)), stats_(stats) {}
- virtual ~InProcessCHTTP2() {
+ ~InProcessCHTTP2() override {
if (stats_ != nullptr) {
grpc_passthru_endpoint_stats_destroy(stats_);
}
"qps_worker.h",
"server.h",
],
- external_deps = [
- "gflags",
- ],
deps = [
":histogram",
":interarrival",
"benchmark_config.h",
],
external_deps = [
- "gflags",
+ "absl/flags:flag",
],
deps = [
":driver_impl",
"histogram.h",
"stats.h",
],
- deps = ["//test/core/util:grpc_test_util"],
+ deps = [
+ "//src/proto/grpc/testing:stats_proto",
+ "//test/core/util:grpc_test_util",
+ ],
)
grpc_cc_binary(
name = "qps_json_driver",
srcs = ["qps_json_driver.cc"],
external_deps = [
- "gflags",
+ "absl/flags:flag",
],
deps = [
":benchmark_config",
grpc_cc_binary(
name = "qps_worker",
srcs = ["worker.cc"],
+ external_deps = [
+ "absl/flags:flag",
+ ],
deps = [
":qps_worker_impl",
"//:grpc++",
*/
#include "test/cpp/qps/benchmark_config.h"
-#include <gflags/gflags.h>
+
#include <grpc/support/log.h>
#include <grpcpp/create_channel.h>
#include <grpcpp/security/credentials.h>
+#include "absl/flags/flag.h"
#include "test/cpp/util/test_credentials_provider.h"
-DEFINE_bool(enable_log_reporter, true,
- "Enable reporting of benchmark results through GprLog");
+ABSL_FLAG(bool, enable_log_reporter, true,
+ "Enable reporting of benchmark results through GprLog");
-DEFINE_string(scenario_result_file, "",
- "Write JSON benchmark report to the file specified.");
+ABSL_FLAG(std::string, scenario_result_file, "",
+ "Write JSON benchmark report to the file specified.");
-DEFINE_string(hashed_id, "", "Hash of the user id");
+ABSL_FLAG(std::string, hashed_id, "", "Hash of the user id");
-DEFINE_string(test_name, "", "Name of the test being executed");
+ABSL_FLAG(std::string, test_name, "", "Name of the test being executed");
-DEFINE_string(sys_info, "", "System information");
+ABSL_FLAG(std::string, sys_info, "", "System information");
-DEFINE_string(server_address, "localhost:50052",
- "Address of the performance database server");
+ABSL_FLAG(std::string, server_address, "localhost:50052",
+ "Address of the performance database server");
-DEFINE_string(tag, "", "Optional tag for the test");
+ABSL_FLAG(std::string, tag, "", "Optional tag for the test");
-DEFINE_string(rpc_reporter_server_address, "",
- "Server address for rpc reporter to send results to");
+ABSL_FLAG(std::string, rpc_reporter_server_address, "",
+ "Server address for rpc reporter to send results to");
-DEFINE_bool(enable_rpc_reporter, false, "Enable use of RPC reporter");
+ABSL_FLAG(bool, enable_rpc_reporter, false, "Enable use of RPC reporter");
-DEFINE_string(
- rpc_reporter_credential_type, grpc::testing::kInsecureCredentialsType,
+ABSL_FLAG(
+ std::string, rpc_reporter_credential_type,
+ grpc::testing::kInsecureCredentialsType,
"Credential type for communication to the QPS benchmark report server");
-// In some distros, gflags is in the namespace google, and in some others,
-// in gflags. This hack is enabling us to find both.
-namespace google {}
-namespace gflags {}
-using namespace google;
-using namespace gflags;
-
namespace grpc {
namespace testing {
static std::shared_ptr<Reporter> InitBenchmarkReporters() {
auto* composite_reporter = new CompositeReporter;
- if (FLAGS_enable_log_reporter) {
+ if (absl::GetFlag(FLAGS_enable_log_reporter)) {
composite_reporter->add(
std::unique_ptr<Reporter>(new GprLogReporter("LogReporter")));
}
- if (FLAGS_scenario_result_file != "") {
- composite_reporter->add(std::unique_ptr<Reporter>(
- new JsonReporter("JsonReporter", FLAGS_scenario_result_file)));
+ if (!absl::GetFlag(FLAGS_scenario_result_file).empty()) {
+ composite_reporter->add(std::unique_ptr<Reporter>(new JsonReporter(
+ "JsonReporter", absl::GetFlag(FLAGS_scenario_result_file))));
}
- if (FLAGS_enable_rpc_reporter) {
+ if (absl::GetFlag(FLAGS_enable_rpc_reporter)) {
ChannelArguments channel_args;
std::shared_ptr<ChannelCredentials> channel_creds =
testing::GetCredentialsProvider()->GetChannelCredentials(
- FLAGS_rpc_reporter_credential_type, &channel_args);
- GPR_ASSERT(!FLAGS_rpc_reporter_server_address.empty());
+ absl::GetFlag(FLAGS_rpc_reporter_credential_type), &channel_args);
+ GPR_ASSERT(!absl::GetFlag(FLAGS_rpc_reporter_server_address).empty());
composite_reporter->add(std::unique_ptr<Reporter>(new RpcReporter(
- "RpcReporter", grpc::CreateChannel(FLAGS_rpc_reporter_server_address,
- channel_creds))));
+ "RpcReporter",
+ grpc::CreateChannel(absl::GetFlag(FLAGS_rpc_reporter_server_address),
+ channel_creds))));
}
return std::shared_ptr<Reporter>(composite_reporter);
#include <condition_variable>
#include <mutex>
+#include <thread>
#include <unordered_map>
#include <vector>
#include <grpcpp/support/channel_arguments.h>
#include <grpcpp/support/slice.h>
+#include "absl/memory/memory.h"
+#include "absl/strings/match.h"
+
#include "src/proto/grpc/testing/benchmark_service.grpc.pb.h"
#include "src/proto/grpc/testing/payloads.pb.h"
// Closed-loop doesn't use random dist at all
break;
case LoadParams::kPoisson:
- random_dist.reset(
- new ExpDist(load.poisson().offered_load() / num_threads));
+ random_dist = absl::make_unique<ExpDist>(load.poisson().offered_load() /
+ num_threads);
break;
default:
GPR_ASSERT(false);
ClientRequestCreator<RequestType> create_req(&request_,
config.payload_config());
}
- virtual ~ClientImpl() {}
+ ~ClientImpl() override {}
const RequestType* request() { return &request_; }
void WaitForChannelsToConnect() {
}
std::string inproc_pfx(INPROC_NAME_PREFIX);
- if (target.find(inproc_pfx) != 0) {
+ if (!absl::StartsWith(target, inproc_pfx)) {
channel_ = CreateTestChannel(
target, type, config.security_params().server_host_override(),
!config.security_params().use_test_ca(),
#include <grpcpp/client_context.h>
#include <grpcpp/generic/generic_stub.h>
+#include "absl/memory/memory.h"
+
#include "src/core/lib/surface/completion_queue.h"
#include "src/proto/grpc/testing/benchmark_service.grpc.pb.h"
#include "test/cpp/qps/client.h"
t = (t + 1) % cli_cqs_.size();
}
}
- virtual ~AsyncClient() {
+ ~AsyncClient() override {
for (auto cq = cli_cqs_.begin(); cq != cli_cqs_.end(); cq++) {
void* got_tag;
bool ok;
}
return num_threads;
}
- void DestroyMultithreading() override final {
+ void DestroyMultithreading() final {
for (auto ss = shutdown_state_.begin(); ss != shutdown_state_.end(); ++ss) {
std::lock_guard<std::mutex> lock((*ss)->mutex);
(*ss)->shutdown = true;
return ctx;
}
- void ThreadFunc(size_t thread_idx, Client::Thread* t) override final {
+ void ThreadFunc(size_t thread_idx, Client::Thread* t) final {
void* got_tag;
bool ok;
break; // loop around, don't return
case State::WAIT:
next_state_ = State::READY_TO_WRITE;
- alarm_.reset(new Alarm);
+ alarm_ = absl::make_unique<Alarm>();
alarm_->Set(cq_, next_issue_(), ClientRpcContext::tag(this));
return true;
case State::READY_TO_WRITE:
static std::unique_ptr<grpc::GenericStub> GenericStubCreator(
const std::shared_ptr<Channel>& ch) {
- return std::unique_ptr<grpc::GenericStub>(new grpc::GenericStub(ch));
+ return absl::make_unique<grpc::GenericStub>(ch);
}
class GenericAsyncStreamingClient final
#include <grpcpp/channel.h>
#include <grpcpp/client_context.h>
+#include "absl/memory/memory.h"
+
#include "src/proto/grpc/testing/benchmark_service.grpc.pb.h"
#include "test/cpp/qps/client.h"
#include "test/cpp/qps/usage_timer.h"
config.client_channels() * config.outstanding_rpcs_per_channel();
}
- virtual ~CallbackClient() {}
+ ~CallbackClient() override {}
/**
* The main thread of the benchmark will be waiting on DestroyMultithreading.
}
StartThreads(num_threads_);
}
- ~CallbackUnaryClient() {}
+ ~CallbackUnaryClient() override {}
protected:
bool ThreadFuncImpl(Thread* t, size_t thread_idx) override {
return true;
}
- void InitThreadFuncImpl(size_t /*thread_idx*/) override { return; }
+ void InitThreadFuncImpl(size_t /*thread_idx*/) override {}
private:
void ScheduleRpc(Thread* t, size_t vector_idx) {
// Start an alarm callback to run the internal callback after
// next_issue_time
if (ctx_[vector_idx]->alarm_ == nullptr) {
- ctx_[vector_idx]->alarm_.reset(new Alarm);
+ ctx_[vector_idx]->alarm_ = absl::make_unique<Alarm>();
}
ctx_[vector_idx]->alarm_->experimental().Set(
next_issue_time, [this, t, vector_idx](bool /*ok*/) {
NotifyMainThreadOfThreadCompletion();
} else {
// Reallocate ctx for next RPC
- ctx_[vector_idx].reset(
- new CallbackClientRpcContext(ctx_[vector_idx]->stub_));
+ ctx_[vector_idx] = absl::make_unique<CallbackClientRpcContext>(
+ ctx_[vector_idx]->stub_);
// Schedule a new RPC
ScheduleRpc(t, vector_idx);
}
}
StartThreads(num_threads_);
}
- ~CallbackStreamingClient() {}
+ ~CallbackStreamingClient() override {}
void AddHistogramEntry(double start, bool ok, Thread* thread_ptr) {
// Update Histogram with data from the callback run
public:
CallbackStreamingPingPongClient(const ClientConfig& config)
: CallbackStreamingClient(config) {}
- ~CallbackStreamingPingPongClient() {}
+ ~CallbackStreamingPingPongClient() override {}
};
class CallbackStreamingPingPongReactor final
client_->NotifyMainThreadOfThreadCompletion();
return;
}
- ctx_.reset(new CallbackClientRpcContext(ctx_->stub_));
+ ctx_ = absl::make_unique<CallbackClientRpcContext>(ctx_->stub_);
ScheduleRpc();
}
// Start an alarm callback to run the internal callback after
// next_issue_time
if (ctx_->alarm_ == nullptr) {
- ctx_->alarm_.reset(new Alarm);
+ ctx_->alarm_ = absl::make_unique<Alarm>();
}
ctx_->alarm_->experimental().Set(next_issue_time,
[this](bool /*ok*/) { StartNewRpc(); });
public:
CallbackStreamingPingPongClientImpl(const ClientConfig& config)
: CallbackStreamingPingPongClient(config) {
- for (size_t i = 0; i < total_outstanding_rpcs_; i++)
+ for (size_t i = 0; i < total_outstanding_rpcs_; i++) {
reactor_.emplace_back(
new CallbackStreamingPingPongReactor(this, std::move(ctx_[i])));
+ }
}
- ~CallbackStreamingPingPongClientImpl() {}
+ ~CallbackStreamingPingPongClientImpl() override {}
bool ThreadFuncImpl(Client::Thread* t, size_t thread_idx) override {
for (size_t vector_idx = thread_idx; vector_idx < total_outstanding_rpcs_;
SetupLoadTest(config, num_threads_);
}
- virtual ~SynchronousClient() {}
+ ~SynchronousClient() override {}
virtual bool InitThreadFuncImpl(size_t thread_idx) = 0;
virtual bool ThreadFuncImpl(HistogramEntry* entry, size_t thread_idx) = 0;
: SynchronousClient(config) {
StartThreads(num_threads_);
}
- ~SynchronousUnaryClient() {}
+ ~SynchronousUnaryClient() override {}
bool InitThreadFuncImpl(size_t /*thread_idx*/) override { return true; }
}
private:
- void DestroyMultithreading() override final { EndThreads(); }
+ void DestroyMultithreading() final { EndThreads(); }
};
template <class StreamType>
messages_issued_(num_threads_) {
StartThreads(num_threads_);
}
- virtual ~SynchronousStreamingClient() {
+ ~SynchronousStreamingClient() override {
CleanupAllStreams([this](size_t thread_idx) {
// Don't log any kind of error since we may have canceled this
stream_[thread_idx]->Finish().IgnoreError();
}
private:
- void DestroyMultithreading() override final {
+ void DestroyMultithreading() final {
CleanupAllStreams(
[this](size_t thread_idx) { context_[thread_idx].TryCancel(); });
EndThreads();
public:
SynchronousStreamingPingPongClient(const ClientConfig& config)
: SynchronousStreamingClient(config) {}
- ~SynchronousStreamingPingPongClient() {
+ ~SynchronousStreamingPingPongClient() override {
CleanupAllStreams(
[this](size_t thread_idx) { stream_[thread_idx]->WritesDone(); });
}
public:
SynchronousStreamingFromClientClient(const ClientConfig& config)
: SynchronousStreamingClient(config), last_issue_(num_threads_) {}
- ~SynchronousStreamingFromClientClient() {
+ ~SynchronousStreamingFromClientClient() override {
CleanupAllStreams(
[this](size_t thread_idx) { stream_[thread_idx]->WritesDone(); });
}
public:
SynchronousStreamingFromServerClient(const ClientConfig& config)
: SynchronousStreamingClient(config), last_recv_(num_threads_) {}
- ~SynchronousStreamingFromServerClient() {}
+ ~SynchronousStreamingFromServerClient() override {}
private:
std::vector<double> last_recv_;
public:
SynchronousStreamingBothWaysClient(const ClientConfig& config)
: SynchronousStreamingClient(config) {}
- ~SynchronousStreamingBothWaysClient() {
+ ~SynchronousStreamingBothWaysClient() override {
CleanupAllStreams(
[this](size_t thread_idx) { stream_[thread_idx]->WritesDone(); });
}
using std::deque;
using std::list;
-using std::thread;
using std::unique_ptr;
using std::vector;
}
}
}
- if (out.size() == 0) {
+ if (out.empty()) {
gpr_log(GPR_ERROR,
"Environment variable \"%s\" does not contain a list of QPS "
"workers to use. Set it to a comma-separated list of "
workers.push_back(addr);
}
}
- GPR_ASSERT(workers.size() != 0);
+ GPR_ASSERT(!workers.empty());
// if num_clients is set to <=0, do dynamic sizing: all workers
// except for servers are clients
gpr_log(GPR_ERROR, "Server %zu did not yield initial status", i);
GPR_ASSERT(false);
}
- if (qps_server_target_override.length() > 0) {
- // overriding the qps server target only works if there is 1 server
- GPR_ASSERT(num_servers == 1);
- client_config.add_server_targets(qps_server_target_override);
- } else if (run_inproc) {
+ if (run_inproc) {
std::string cli_target(INPROC_NAME_PREFIX);
cli_target += std::to_string(i);
client_config.add_server_targets(cli_target);
client_config.add_server_targets(cli_target.c_str());
}
}
-
+ if (qps_server_target_override.length() > 0) {
+ // overriding the qps server target only makes since if there is <= 1
+ // servers
+ GPR_ASSERT(num_servers <= 1);
+ client_config.add_server_targets(qps_server_target_override);
+ }
client_config.set_median_latency_collection_interval_millis(
median_latency_collection_interval_millis);
// Get client, server lists
bool result = true;
auto workers = get_workers("QPS_WORKERS");
- if (workers.size() == 0) {
+ if (workers.empty()) {
return false;
}
impl_ = grpc_histogram_create(default_resolution(), default_max_possible());
}
- Histogram(Histogram&& other) : impl_(other.impl_) { other.impl_ = nullptr; }
+ Histogram(Histogram&& other) noexcept : impl_(other.impl_) {
+ other.impl_ = nullptr;
+ }
void Merge(const Histogram& h) { grpc_histogram_merge(impl_, h.impl_); }
void Add(double value) { grpc_histogram_add(impl_, value); }
int64_t next(int thread_num) {
auto ret = *(thread_posns_[thread_num]++);
- if (thread_posns_[thread_num] == random_table_.end())
+ if (thread_posns_[thread_num] == random_table_.end()) {
thread_posns_[thread_num] = random_table_.begin();
+ }
return ret;
}
load("//test/cpp/qps:qps_json_driver_scenarios.bzl", "QPS_JSON_DRIVER_SCENARIOS")
load("//test/cpp/qps:json_run_localhost_scenarios.bzl", "JSON_RUN_LOCALHOST_SCENARIOS")
+def add_suffix(name):
+ # NOTE(https://github.com/grpc/grpc/issues/24178): Add the suffix to the name
+ # to avoid having the target name that 89 or 90 long.
+ m = len(name) - (89 - len("//test/cpp/qps:"))
+ if m == 0 or m == 1:
+ return name + "_" * (2 - m)
+ else:
+ return name
+
def qps_json_driver_batch():
for scenario in QPS_JSON_DRIVER_SCENARIOS:
grpc_cc_test(
- name = "qps_json_driver_test_%s" % scenario,
+ name = add_suffix("qps_json_driver_test_%s" % scenario),
srcs = ["qps_json_driver.cc"],
args = [
"--run_inproc",
"--scenarios_json",
QPS_JSON_DRIVER_SCENARIOS[scenario],
],
- external_deps = [
- "gflags",
- ],
deps = [
":benchmark_config",
":driver_impl",
def json_run_localhost_batch():
for scenario in JSON_RUN_LOCALHOST_SCENARIOS:
grpc_cc_test(
- name = "json_run_localhost_%s" % scenario,
+ name = add_suffix("json_run_localhost_%s" % scenario),
srcs = ["json_run_localhost.cc"],
args = [
"--scenarios_json",
*
*/
+#include <grpc/support/log.h>
+#include <grpcpp/impl/codegen/config_protobuf.h>
+
#include <fstream>
#include <iostream>
#include <memory>
#include <set>
-#include <grpcpp/impl/codegen/config_protobuf.h>
-
-#include <gflags/gflags.h>
-#include <grpc/support/log.h>
-
+#include "absl/flags/flag.h"
#include "test/core/util/test_config.h"
#include "test/cpp/qps/benchmark_config.h"
#include "test/cpp/qps/driver.h"
#include "test/cpp/util/test_config.h"
#include "test/cpp/util/test_credentials_provider.h"
-DEFINE_string(scenarios_file, "",
- "JSON file containing an array of Scenario objects");
-DEFINE_string(scenarios_json, "",
- "JSON string containing an array of Scenario objects");
-DEFINE_bool(quit, false, "Quit the workers");
-DEFINE_string(search_param, "",
- "The parameter, whose value is to be searched for to achieve "
- "targeted cpu load. For now, we have 'offered_load'. Later, "
- "'num_channels', 'num_outstanding_requests', etc. shall be "
- "added.");
-DEFINE_double(
- initial_search_value, 0.0,
+ABSL_FLAG(std::string, scenarios_file, "",
+ "JSON file containing an array of Scenario objects");
+ABSL_FLAG(std::string, scenarios_json, "",
+ "JSON string containing an array of Scenario objects");
+ABSL_FLAG(bool, quit, false, "Quit the workers");
+ABSL_FLAG(std::string, search_param, "",
+ "The parameter, whose value is to be searched for to achieve "
+ "targeted cpu load. For now, we have 'offered_load'. Later, "
+ "'num_channels', 'num_outstanding_requests', etc. shall be "
+ "added.");
+ABSL_FLAG(
+ double, initial_search_value, 0.0,
"initial parameter value to start the search with (i.e. lower bound)");
-DEFINE_double(targeted_cpu_load, 70.0,
- "Targeted cpu load (unit: %, range [0,100])");
-DEFINE_double(stride, 1,
- "Defines each stride of the search. The larger the stride is, "
- "the coarser the result will be, but will also be faster.");
-DEFINE_double(error_tolerance, 0.01,
- "Defines threshold for stopping the search. When current search "
- "range is narrower than the error_tolerance computed range, we "
- "stop the search.");
-
-DEFINE_string(qps_server_target_override, "",
- "Override QPS server target to configure in client configs."
- "Only applicable if there is a single benchmark server.");
-
-DEFINE_string(json_file_out, "", "File to write the JSON output to.");
-
-DEFINE_string(credential_type, grpc::testing::kInsecureCredentialsType,
- "Credential type for communication with workers");
-DEFINE_string(
- per_worker_credential_types, "",
+ABSL_FLAG(double, targeted_cpu_load, 70.0,
+ "Targeted cpu load (unit: %, range [0,100])");
+ABSL_FLAG(double, stride, 1,
+ "Defines each stride of the search. The larger the stride is, "
+ "the coarser the result will be, but will also be faster.");
+ABSL_FLAG(double, error_tolerance, 0.01,
+ "Defines threshold for stopping the search. When current search "
+ "range is narrower than the error_tolerance computed range, we "
+ "stop the search.");
+
+ABSL_FLAG(std::string, qps_server_target_override, "",
+ "Override QPS server target to configure in client configs."
+ "Only applicable if there is a single benchmark server.");
+
+ABSL_FLAG(std::string, json_file_out, "", "File to write the JSON output to.");
+
+ABSL_FLAG(std::string, credential_type, grpc::testing::kInsecureCredentialsType,
+ "Credential type for communication with workers");
+ABSL_FLAG(
+ std::string, per_worker_credential_types, "",
"A map of QPS worker addresses to credential types. When creating a "
"channel to a QPS worker's driver port, the qps_json_driver first checks "
"if the 'name:port' string is in the map, and it uses the corresponding "
"the credentials specified in --credential_type. The value of this flag "
"is a semicolon-separated list of map entries, where each map entry is "
"a comma-separated pair.");
-DEFINE_bool(run_inproc, false, "Perform an in-process transport test");
-DEFINE_int32(
- median_latency_collection_interval_millis, 0,
+ABSL_FLAG(bool, run_inproc, false, "Perform an in-process transport test");
+ABSL_FLAG(
+ int32_t, median_latency_collection_interval_millis, 0,
"Specifies the period between gathering latency medians in "
"milliseconds. The medians will be logged out on the client at the "
"end of the benchmark run. If 0, this periodic collection is disabled.");
ConstructPerWorkerCredentialTypesMap() {
// Parse a list of the form: "addr1,cred_type1;addr2,cred_type2;..." into
// a map.
- std::string remaining = FLAGS_per_worker_credential_types;
+ std::string remaining = absl::GetFlag(FLAGS_per_worker_credential_types);
std::map<std::string, std::string> out;
while (!remaining.empty()) {
size_t next_semicolon = remaining.find(';');
const std::map<std::string, std::string>& per_worker_credential_types,
bool* success) {
std::cerr << "RUNNING SCENARIO: " << scenario.name() << "\n";
- auto result =
- RunScenario(scenario.client_config(), scenario.num_clients(),
- scenario.server_config(), scenario.num_servers(),
- scenario.warmup_seconds(), scenario.benchmark_seconds(),
- !FLAGS_run_inproc ? scenario.spawn_local_worker_count() : -2,
- FLAGS_qps_server_target_override, FLAGS_credential_type,
- per_worker_credential_types, FLAGS_run_inproc,
- FLAGS_median_latency_collection_interval_millis);
+ auto result = RunScenario(
+ scenario.client_config(), scenario.num_clients(),
+ scenario.server_config(), scenario.num_servers(),
+ scenario.warmup_seconds(), scenario.benchmark_seconds(),
+ !absl::GetFlag(FLAGS_run_inproc) ? scenario.spawn_local_worker_count()
+ : -2,
+ absl::GetFlag(FLAGS_qps_server_target_override),
+ absl::GetFlag(FLAGS_credential_type), per_worker_credential_types,
+ absl::GetFlag(FLAGS_run_inproc),
+ absl::GetFlag(FLAGS_median_latency_collection_interval_millis));
// Amend the result with scenario config. Eventually we should adjust
// RunScenario contract so we don't need to touch the result here.
*success = result->server_success(i);
}
- if (FLAGS_json_file_out != "") {
+ if (!absl::GetFlag(FLAGS_json_file_out).empty()) {
std::ofstream json_outfile;
- json_outfile.open(FLAGS_json_file_out);
+ json_outfile.open(absl::GetFlag(FLAGS_json_file_out));
json_outfile << "{\"qps\": " << result->summary().qps() << "}\n";
json_outfile.close();
}
Scenario* scenario, double targeted_cpu_load, double low, double high,
const std::map<std::string, std::string>& per_worker_credential_types,
bool* success) {
- while (low <= high * (1 - FLAGS_error_tolerance)) {
+ while (low <= high * (1 - absl::GetFlag(FLAGS_error_tolerance))) {
double mid = low + (high - low) / 2;
double current_cpu_load =
GetCpuLoad(scenario, mid, per_worker_credential_types, success);
break;
}
if (targeted_cpu_load <= current_cpu_load) {
- high = mid - FLAGS_stride;
+ high = mid - absl::GetFlag(FLAGS_stride);
} else {
- low = mid + FLAGS_stride;
+ low = mid + absl::GetFlag(FLAGS_stride);
}
}
static bool QpsDriver() {
std::string json;
- bool scfile = (FLAGS_scenarios_file != "");
- bool scjson = (FLAGS_scenarios_json != "");
- if ((!scfile && !scjson && !FLAGS_quit) ||
- (scfile && (scjson || FLAGS_quit)) || (scjson && FLAGS_quit)) {
+ bool scfile = (!absl::GetFlag(FLAGS_scenarios_file).empty());
+ bool scjson = (!absl::GetFlag(FLAGS_scenarios_json).empty());
+ if ((!scfile && !scjson && !absl::GetFlag(FLAGS_quit)) ||
+ (scfile && (scjson || absl::GetFlag(FLAGS_quit))) ||
+ (scjson && absl::GetFlag(FLAGS_quit))) {
gpr_log(GPR_ERROR,
"Exactly one of --scenarios_file, --scenarios_json, "
"or --quit must be set");
auto per_worker_credential_types = ConstructPerWorkerCredentialTypesMap();
if (scfile) {
// Read the json data from disk
- FILE* json_file = fopen(FLAGS_scenarios_file.c_str(), "r");
+ FILE* json_file = fopen(absl::GetFlag(FLAGS_scenarios_file).c_str(), "r");
GPR_ASSERT(json_file != nullptr);
fseek(json_file, 0, SEEK_END);
long len = ftell(json_file);
json = std::string(data, data + len);
delete[] data;
} else if (scjson) {
- json = FLAGS_scenarios_json.c_str();
- } else if (FLAGS_quit) {
- return RunQuit(FLAGS_credential_type, per_worker_credential_types);
+ json = absl::GetFlag(FLAGS_scenarios_json).c_str();
+ } else if (absl::GetFlag(FLAGS_quit)) {
+ return RunQuit(absl::GetFlag(FLAGS_credential_type),
+ per_worker_credential_types);
}
// Parse into an array of scenarios
GPR_ASSERT(scenarios.scenarios_size() > 0);
for (int i = 0; i < scenarios.scenarios_size(); i++) {
- if (FLAGS_search_param == "") {
+ if (absl::GetFlag(FLAGS_search_param).empty()) {
const Scenario& scenario = scenarios.scenarios(i);
RunAndReport(scenario, per_worker_credential_types, &success);
} else {
- if (FLAGS_search_param == "offered_load") {
+ if (absl::GetFlag(FLAGS_search_param) == "offered_load") {
Scenario* scenario = scenarios.mutable_scenarios(i);
- double targeted_offered_load = SearchOfferedLoad(
- FLAGS_initial_search_value, FLAGS_targeted_cpu_load, scenario,
- per_worker_credential_types, &success);
+ double targeted_offered_load =
+ SearchOfferedLoad(absl::GetFlag(FLAGS_initial_search_value),
+ absl::GetFlag(FLAGS_targeted_cpu_load), scenario,
+ per_worker_credential_types, &success);
gpr_log(GPR_INFO, "targeted_offered_load %f", targeted_offered_load);
GetCpuLoad(scenario, targeted_offered_load, per_worker_credential_types,
&success);
#include "qps_server_builder.h"
+#include "absl/memory/memory.h"
+
using grpc::ServerBuilder;
namespace grpc {
namespace {
std::unique_ptr<ServerBuilder> DefaultCreateQpsServerBuilder() {
- return std::unique_ptr<ServerBuilder>(new ServerBuilder());
+ return absl::make_unique<ServerBuilder>();
}
std::function<std::unique_ptr<ServerBuilder>()> g_create_qps_server_builder =
#include <grpcpp/server.h>
#include <grpcpp/server_builder.h>
+#include "absl/memory/memory.h"
+
#include "src/core/lib/gprpp/host_port.h"
#include "src/proto/grpc/testing/worker_service.grpc.pb.h"
#include "test/core/util/grpc_profiler.h"
if (!args.has_setup()) {
return Status(StatusCode::INVALID_ARGUMENT, "Bad server creation args");
}
- if (server_port_ > 0) {
+ if (server_port_ > 0 && args.setup().port() == 0) {
args.mutable_setup()->set_port(server_port_);
}
gpr_log(GPR_INFO, "RunServerBody: about to create server");
QpsWorker::QpsWorker(int driver_port, int server_port,
const std::string& credential_type) {
- impl_.reset(new WorkerServiceImpl(server_port, this));
+ impl_ = absl::make_unique<WorkerServiceImpl>(server_port, this);
gpr_atm_rel_store(&done_, static_cast<gpr_atm>(0));
std::unique_ptr<ServerBuilder> builder = CreateQpsServerBuilder();
threads_.emplace_back(&AsyncQpsServerTest::ThreadFunc, this, i);
}
}
- ~AsyncQpsServerTest() {
+ ~AsyncQpsServerTest() override {
for (auto ss = shutdown_state_.begin(); ss != shutdown_state_.end(); ++ss) {
std::lock_guard<std::mutex> lock((*ss)->mutex);
(*ss)->shutdown = true;
for (auto cq = srv_cqs_.begin(); cq != srv_cqs_.end(); ++cq) {
bool ok;
void* got_tag;
- while ((*cq)->Next(&got_tag, &ok))
- ;
+ while ((*cq)->Next(&got_tag, &ok)) {
+ }
}
}
*
*/
+#include <grpc/grpc.h>
+#include <grpc/support/time.h>
#include <signal.h>
#include <chrono>
#include <thread>
#include <vector>
-#include <gflags/gflags.h>
-#include <grpc/grpc.h>
-#include <grpc/support/time.h>
-
+#include "absl/flags/flag.h"
#include "test/core/util/test_config.h"
#include "test/cpp/qps/qps_worker.h"
#include "test/cpp/util/test_config.h"
#include "test/cpp/util/test_credentials_provider.h"
-DEFINE_int32(driver_port, 0, "Port for communication with driver");
-DEFINE_int32(server_port, 0, "Port for operation as a server");
-DEFINE_string(credential_type, grpc::testing::kInsecureCredentialsType,
- "Credential type for communication with driver");
+ABSL_FLAG(int32_t, driver_port, 0, "Port for communication with driver");
+ABSL_FLAG(int32_t, server_port, 0,
+ "Port for operation as a server, if not specified by the server "
+ "config message");
+ABSL_FLAG(std::string, credential_type, grpc::testing::kInsecureCredentialsType,
+ "Credential type for communication with driver");
static bool got_sigint = false;
std::vector<grpc::testing::Server*>* g_inproc_servers = nullptr;
static void RunServer() {
- QpsWorker worker(FLAGS_driver_port, FLAGS_server_port, FLAGS_credential_type);
+ QpsWorker worker(absl::GetFlag(FLAGS_driver_port),
+ absl::GetFlag(FLAGS_server_port),
+ absl::GetFlag(FLAGS_credential_type));
while (!got_sigint && !worker.Done()) {
gpr_sleep_until(gpr_time_add(gpr_now(GPR_CLOCK_REALTIME),
"//test/core/util:grpc_test_util_unsecure",
],
)
+
+grpc_cc_test(
+ name = "credentials_test",
+ srcs = ["credentials_test.cc"],
+ external_deps = [
+ "gtest",
+ ],
+ deps = [
+ "//:gpr",
+ "//:grpc",
+ "//:grpc++",
+ "//test/core/util:grpc_test_util",
+ ],
+)
--- /dev/null
+//
+// Copyright 2020 gRPC authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+#include <gmock/gmock.h>
+#include <grpc/grpc.h>
+#include <grpc/grpc_security.h>
+#include <grpcpp/security/server_credentials.h>
+#include <grpcpp/security/tls_credentials_options.h>
+#include <gtest/gtest.h>
+
+#include <memory>
+
+#include "src/cpp/client/secure_credentials.h"
+#include "test/core/util/port.h"
+#include "test/core/util/test_config.h"
+
+namespace {
+
+constexpr const char* kRootCertName = "root_cert_name";
+constexpr const char* kRootCertContents = "root_cert_contents";
+constexpr const char* kIdentityCertName = "identity_cert_name";
+constexpr const char* kIdentityCertPrivateKey = "identity_private_key";
+constexpr const char* kIdentityCertContents = "identity_cert_contents";
+
+using ::grpc::experimental::StaticDataCertificateProvider;
+
+} // namespace
+
+namespace grpc {
+namespace testing {
+namespace {
+
+TEST(
+ CredentialsTest,
+ TlsServerCredentialsWithStaticDataCertificateProviderLoadingRootAndIdentity) {
+ experimental::IdentityKeyCertPair key_cert_pair;
+ key_cert_pair.private_key = kIdentityCertPrivateKey;
+ key_cert_pair.certificate_chain = kIdentityCertContents;
+ std::vector<experimental::IdentityKeyCertPair> identity_key_cert_pairs;
+ identity_key_cert_pairs.emplace_back(key_cert_pair);
+ auto certificate_provider = std::make_shared<StaticDataCertificateProvider>(
+ kRootCertContents, identity_key_cert_pairs);
+ grpc::experimental::TlsServerCredentialsOptions options(certificate_provider);
+ options.watch_root_certs();
+ options.set_root_cert_name(kRootCertName);
+ options.watch_identity_key_cert_pairs();
+ options.set_identity_cert_name(kIdentityCertName);
+ options.set_cert_request_type(
+ GRPC_SSL_REQUEST_AND_REQUIRE_CLIENT_CERTIFICATE_AND_VERIFY);
+ auto server_credentials = grpc::experimental::TlsServerCredentials(options);
+ GPR_ASSERT(server_credentials.get() != nullptr);
+}
+
+// ServerCredentials should always have identity credential presented.
+// Otherwise gRPC stack will fail.
+TEST(CredentialsTest,
+ TlsServerCredentialsWithStaticDataCertificateProviderLoadingIdentityOnly) {
+ experimental::IdentityKeyCertPair key_cert_pair;
+ key_cert_pair.private_key = kIdentityCertPrivateKey;
+ key_cert_pair.certificate_chain = kIdentityCertContents;
+ std::vector<experimental::IdentityKeyCertPair> identity_key_cert_pairs;
+ // Adding two key_cert_pair(s) should still work.
+ identity_key_cert_pairs.emplace_back(key_cert_pair);
+ identity_key_cert_pairs.emplace_back(key_cert_pair);
+ auto certificate_provider =
+ std::make_shared<StaticDataCertificateProvider>(identity_key_cert_pairs);
+ grpc::experimental::TlsServerCredentialsOptions options(certificate_provider);
+ options.watch_identity_key_cert_pairs();
+ options.set_identity_cert_name(kIdentityCertName);
+ options.set_cert_request_type(
+ GRPC_SSL_REQUEST_AND_REQUIRE_CLIENT_CERTIFICATE_AND_VERIFY);
+ auto server_credentials = grpc::experimental::TlsServerCredentials(options);
+ GPR_ASSERT(server_credentials.get() != nullptr);
+}
+
+} // namespace
+} // namespace testing
+} // namespace grpc
+
+int main(int argc, char** argv) {
+ ::testing::InitGoogleTest(&argc, argv);
+ grpc::testing::TestEnvironment env(argc, argv);
+ int ret = RUN_ALL_TESTS();
+ return ret;
+}
#include <grpc/grpc.h>
#include <gtest/gtest.h>
+#include "absl/memory/memory.h"
+
#include "src/core/ext/filters/load_reporting/registered_opencensus_objects.h"
#include "src/core/lib/iomgr/exec_ctx.h"
#include "src/cpp/server/load_reporter/constants.h"
using ::grpc::load_reporter::CensusViewProvider;
using ::grpc::load_reporter::CpuStatsProvider;
using ::grpc::load_reporter::LoadReporter;
-using ::opencensus::stats::View;
-using ::opencensus::stats::ViewData;
-using ::opencensus::stats::ViewDataImpl;
using ::opencensus::stats::ViewDescriptor;
using ::testing::DoubleNear;
using ::testing::Return;
EXPECT_CALL(*mock_cpu, GetCpuStats())
.WillOnce(Return(initial_cpu_stats_))
.RetiresOnSaturation();
- load_reporter_ = std::unique_ptr<LoadReporter>(
- new LoadReporter(kFeedbackSampleWindowSeconds,
- std::unique_ptr<CensusViewProvider>(mock_census),
- std::unique_ptr<CpuStatsProvider>(mock_cpu)));
+ load_reporter_ = absl::make_unique<LoadReporter>(
+ kFeedbackSampleWindowSeconds,
+ std::unique_ptr<CensusViewProvider>(mock_census),
+ std::unique_ptr<CpuStatsProvider>(mock_cpu));
}
};
name = "thread_manager_test",
srcs = ["thread_manager_test.cc"],
external_deps = [
- "gflags",
"gtest",
],
deps = [
#include <memory>
#include <thread>
-#include <gflags/gflags.h>
#include <grpc/support/log.h>
#include <grpc/support/port_platform.h>
#include <grpcpp/grpcpp.h>
"test_config.h",
],
external_deps = [
- "gflags",
+ "absl/flags:parse",
],
deps = [
"//:gpr",
"test_credentials_provider.h",
],
external_deps = [
- "gflags",
+ "absl/flags:flag",
"protobuf",
],
deps = [
"service_describer.h",
],
external_deps = [
- "gflags",
+ "absl/flags:flag",
"protobuf",
"protobuf_clib",
],
"grpc_tool.h",
],
external_deps = [
- "gflags",
+ "absl/flags:flag",
],
deps = [
":grpc_cli_utils",
"//src/proto/grpc/testing:simple_messages.proto",
],
external_deps = [
+ "absl/flags:flag",
"gtest",
],
tags = [
"grpc_cli.cc",
],
external_deps = [
- "gflags",
+ "absl/flags:flag",
],
deps = [
":grpc++_proto_reflection_desc_db",
name = "channelz_sampler",
srcs = ["channelz_sampler.cc"],
external_deps = [
- "gflags",
+ "absl/flags:flag",
],
language = "c++",
tags = [
":channelz_sampler",
],
external_deps = [
- "gflags",
"gtest",
],
tags = [
#include "test/cpp/util/byte_buffer_proto_helper.h"
+#include "absl/memory/memory.h"
+
namespace grpc {
namespace testing {
std::string buf;
message->SerializeToString(&buf);
Slice slice(buf);
- return std::unique_ptr<ByteBuffer>(new ByteBuffer(&slice, 1));
+ return absl::make_unique<ByteBuffer>(&slice, 1);
}
bool SerializeToByteBufferInPlace(grpc::protobuf::Message* message,
#include <queue>
#include <string>
+#include "absl/flags/flag.h"
#include "absl/strings/str_format.h"
#include "absl/strings/str_join.h"
-#include "gflags/gflags.h"
#include "google/protobuf/text_format.h"
#include "grpc/grpc.h"
#include "grpc/support/port_platform.h"
#include "test/cpp/util/test_config.h"
#include "test/cpp/util/test_credentials_provider.h"
-DEFINE_string(server_address, "", "channelz server address");
-DEFINE_string(custom_credentials_type, "", "custom credentials type");
-DEFINE_int64(sampling_times, 1, "number of sampling");
-DEFINE_int64(sampling_interval_seconds, 0, "sampling interval in seconds");
-DEFINE_string(output_json, "", "output filename in json format");
+ABSL_FLAG(std::string, server_address, "", "channelz server address");
+ABSL_FLAG(std::string, custom_credentials_type, "", "custom credentials type");
+ABSL_FLAG(int64_t, sampling_times, 1, "number of sampling");
+// TODO(Capstan): Consider using absl::Duration
+ABSL_FLAG(int64_t, sampling_interval_seconds, 0,
+ "sampling interval in seconds");
+ABSL_FLAG(std::string, output_json, "", "output filename in json format");
namespace {
using grpc::ClientContext;
using grpc::StatusCode;
using grpc::channelz::v1::GetChannelRequest;
using grpc::channelz::v1::GetChannelResponse;
-using grpc::channelz::v1::GetServerRequest;
-using grpc::channelz::v1::GetServerResponse;
-using grpc::channelz::v1::GetServerSocketsRequest;
-using grpc::channelz::v1::GetServerSocketsResponse;
using grpc::channelz::v1::GetServersRequest;
using grpc::channelz::v1::GetServersResponse;
using grpc::channelz::v1::GetSocketRequest;
std::string start, finish;
gpr_timespec ago = gpr_time_sub(
now_,
- gpr_time_from_seconds(FLAGS_sampling_interval_seconds, GPR_TIMESPAN));
+ gpr_time_from_seconds(absl::GetFlag(FLAGS_sampling_interval_seconds),
+ GPR_TIMESPAN));
std::stringstream ss;
const time_t time_now = now_.tv_sec;
ss << std::put_time(std::localtime(&time_now), "%F %T");
int main(int argc, char** argv) {
grpc::testing::TestEnvironment env(argc, argv);
grpc::testing::InitTest(&argc, &argv, true);
- std::ofstream output_file(FLAGS_output_json);
- for (int i = 0; i < FLAGS_sampling_times; ++i) {
+ std::ofstream output_file(absl::GetFlag(FLAGS_output_json));
+ for (int i = 0; i < absl::GetFlag(FLAGS_sampling_times); ++i) {
ChannelzSampler channelz_sampler;
- channelz_sampler.Setup(FLAGS_custom_credentials_type, FLAGS_server_address);
+ channelz_sampler.Setup(absl::GetFlag(FLAGS_custom_credentials_type),
+ absl::GetFlag(FLAGS_server_address));
std::cout << "Wait for sampling interval "
- << FLAGS_sampling_interval_seconds << "s..." << std::endl;
+ << absl::GetFlag(FLAGS_sampling_interval_seconds) << "s..."
+ << std::endl;
const gpr_timespec kDelay = gpr_time_add(
gpr_now(GPR_CLOCK_MONOTONIC),
- gpr_time_from_seconds(FLAGS_sampling_interval_seconds, GPR_TIMESPAN));
+ gpr_time_from_seconds(absl::GetFlag(FLAGS_sampling_interval_seconds),
+ GPR_TIMESPAN));
gpr_sleep_until(kDelay);
std::cout << "##### " << i << "th sampling #####" << std::endl;
channelz_sampler.RecordNow();
channelz_sampler.GetTopChannelsRPC();
channelz_sampler.TraverseTopChannels();
channelz_sampler.DumpStdout();
- if (!FLAGS_output_json.empty()) {
+ if (!absl::GetFlag(FLAGS_output_json).empty()) {
output_file << channelz_sampler.DumpJson() << "\n" << std::flush;
}
}
class EchoServerImpl final : public grpc::testing::TestService::Service {
Status EmptyCall(::grpc::ServerContext* context,
const grpc::testing::Empty* request,
- grpc::testing::Empty* response) {
+ grpc::testing::Empty* response) override {
return Status::OK;
}
};
#include "test/cpp/util/cli_credentials.h"
-#include <gflags/gflags.h>
#include <grpc/slice.h>
#include <grpc/support/log.h>
#include <grpcpp/impl/codegen/slice.h>
+#include "absl/flags/flag.h"
#include "src/core/lib/iomgr/load_file.h"
-DEFINE_bool(
- enable_ssl, false,
- "Whether to use ssl/tls. Deprecated. Use --channel_creds_type=ssl.");
-DEFINE_bool(use_auth, false,
- "Whether to create default google credentials. Deprecated. Use "
- "--channel_creds_type=gdc.");
-DEFINE_string(
- access_token, "",
- "The access token that will be sent to the server to authenticate RPCs. "
- "Deprecated. Use --call_creds=access_token=<token>.");
-DEFINE_string(
- ssl_target, "",
+ABSL_RETIRED_FLAG(bool, enable_ssl, false,
+ "Replaced by --channel_creds_type=ssl.");
+ABSL_RETIRED_FLAG(bool, use_auth, false,
+ "Replaced by --channel_creds_type=gdc.");
+ABSL_RETIRED_FLAG(std::string, access_token, "",
+ "Replaced by --call_creds=access_token=<token>.");
+ABSL_FLAG(
+ std::string, ssl_target, "",
"If not empty, treat the server host name as this for ssl/tls certificate "
"validation.");
-DEFINE_string(
- ssl_client_cert, "",
+ABSL_FLAG(
+ std::string, ssl_client_cert, "",
"If not empty, load this PEM formatted client certificate file. Requires "
"use of --ssl_client_key.");
-DEFINE_string(
- ssl_client_key, "",
- "If not empty, load this PEM formatted private key. Requires use of "
- "--ssl_client_cert");
-DEFINE_string(
- local_connect_type, "local_tcp",
+ABSL_FLAG(std::string, ssl_client_key, "",
+ "If not empty, load this PEM formatted private key. Requires use of "
+ "--ssl_client_cert");
+ABSL_FLAG(
+ std::string, local_connect_type, "local_tcp",
"The type of local connections for which local channel credentials will "
"be applied. Should be local_tcp or uds.");
-DEFINE_string(
- channel_creds_type, "",
+ABSL_FLAG(
+ std::string, channel_creds_type, "",
"The channel creds type: insecure, ssl, gdc (Google Default Credentials), "
"alts, or local.");
-DEFINE_string(
- call_creds, "",
+ABSL_FLAG(
+ std::string, call_creds, "",
"Call credentials to use: none (default), or access_token=<token>. If "
"provided, the call creds are composited on top of channel creds.");
} // namespace
std::string CliCredentials::GetDefaultChannelCredsType() const {
- // Compatibility logic for --enable_ssl.
- if (FLAGS_enable_ssl) {
- fprintf(stderr,
- "warning: --enable_ssl is deprecated. Use "
- "--channel_creds_type=ssl.\n");
- return "ssl";
- }
- // Compatibility logic for --use_auth.
- if (FLAGS_access_token.empty() && FLAGS_use_auth) {
- fprintf(stderr,
- "warning: --use_auth is deprecated. Use "
- "--channel_creds_type=gdc.\n");
- return "gdc";
- }
return "insecure";
}
-std::string CliCredentials::GetDefaultCallCreds() const {
- if (!FLAGS_access_token.empty()) {
- fprintf(stderr,
- "warning: --access_token is deprecated. Use "
- "--call_creds=access_token=<token>.\n");
- return std::string("access_token=") + FLAGS_access_token;
- }
- return "none";
-}
+std::string CliCredentials::GetDefaultCallCreds() const { return "none"; }
std::shared_ptr<grpc::ChannelCredentials>
CliCredentials::GetChannelCredentials() const {
- if (FLAGS_channel_creds_type.compare("insecure") == 0) {
+ if (absl::GetFlag(FLAGS_channel_creds_type) == "insecure") {
return grpc::InsecureChannelCredentials();
- } else if (FLAGS_channel_creds_type.compare("ssl") == 0) {
+ } else if (absl::GetFlag(FLAGS_channel_creds_type) == "ssl") {
grpc::SslCredentialsOptions ssl_creds_options;
// TODO(@Capstan): This won't affect Google Default Credentials using SSL.
- if (!FLAGS_ssl_client_cert.empty()) {
+ if (!absl::GetFlag(FLAGS_ssl_client_cert).empty()) {
grpc_slice cert_slice = grpc_empty_slice();
GRPC_LOG_IF_ERROR(
"load_file",
- grpc_load_file(FLAGS_ssl_client_cert.c_str(), 1, &cert_slice));
+ grpc_load_file(absl::GetFlag(FLAGS_ssl_client_cert).c_str(), 1,
+ &cert_slice));
ssl_creds_options.pem_cert_chain =
grpc::StringFromCopiedSlice(cert_slice);
grpc_slice_unref(cert_slice);
}
- if (!FLAGS_ssl_client_key.empty()) {
+ if (!absl::GetFlag(FLAGS_ssl_client_key).empty()) {
grpc_slice key_slice = grpc_empty_slice();
GRPC_LOG_IF_ERROR(
"load_file",
- grpc_load_file(FLAGS_ssl_client_key.c_str(), 1, &key_slice));
+ grpc_load_file(absl::GetFlag(FLAGS_ssl_client_key).c_str(), 1,
+ &key_slice));
ssl_creds_options.pem_private_key =
grpc::StringFromCopiedSlice(key_slice);
grpc_slice_unref(key_slice);
}
return grpc::SslCredentials(ssl_creds_options);
- } else if (FLAGS_channel_creds_type.compare("gdc") == 0) {
+ } else if (absl::GetFlag(FLAGS_channel_creds_type) == "gdc") {
return grpc::GoogleDefaultCredentials();
- } else if (FLAGS_channel_creds_type.compare("alts") == 0) {
+ } else if (absl::GetFlag(FLAGS_channel_creds_type) == "alts") {
return grpc::experimental::AltsCredentials(
grpc::experimental::AltsCredentialsOptions());
- } else if (FLAGS_channel_creds_type.compare("local") == 0) {
- if (FLAGS_local_connect_type.compare("local_tcp") == 0) {
+ } else if (absl::GetFlag(FLAGS_channel_creds_type) == "local") {
+ if (absl::GetFlag(FLAGS_local_connect_type) == "local_tcp") {
return grpc::experimental::LocalCredentials(LOCAL_TCP);
- } else if (FLAGS_local_connect_type.compare("uds") == 0) {
+ } else if (absl::GetFlag(FLAGS_local_connect_type) == "uds") {
return grpc::experimental::LocalCredentials(UDS);
} else {
fprintf(stderr,
"--local_connect_type=%s invalid; must be local_tcp or uds.\n",
- FLAGS_local_connect_type.c_str());
+ absl::GetFlag(FLAGS_local_connect_type).c_str());
}
}
fprintf(stderr,
"--channel_creds_type=%s invalid; must be insecure, ssl, gdc, "
"alts, or local.\n",
- FLAGS_channel_creds_type.c_str());
+ absl::GetFlag(FLAGS_channel_creds_type).c_str());
return std::shared_ptr<grpc::ChannelCredentials>();
}
std::shared_ptr<grpc::CallCredentials> CliCredentials::GetCallCredentials()
const {
- if (IsAccessToken(FLAGS_call_creds)) {
- return grpc::AccessTokenCredentials(AccessToken(FLAGS_call_creds));
+ if (IsAccessToken(absl::GetFlag(FLAGS_call_creds))) {
+ return grpc::AccessTokenCredentials(
+ AccessToken(absl::GetFlag(FLAGS_call_creds)));
}
- if (FLAGS_call_creds.compare("none") == 0) {
+ if (absl::GetFlag(FLAGS_call_creds) == "none") {
// Nothing to do; creds, if any, are baked into the channel.
return std::shared_ptr<grpc::CallCredentials>();
}
fprintf(stderr,
"--call_creds=%s invalid; must be none "
"or access_token=<token>.\n",
- FLAGS_call_creds.c_str());
+ absl::GetFlag(FLAGS_call_creds).c_str());
return std::shared_ptr<grpc::CallCredentials>();
}
std::shared_ptr<grpc::ChannelCredentials> CliCredentials::GetCredentials()
const {
- if (FLAGS_call_creds.empty()) {
- FLAGS_call_creds = GetDefaultCallCreds();
- } else if (!FLAGS_access_token.empty() && !IsAccessToken(FLAGS_call_creds)) {
- fprintf(stderr,
- "warning: ignoring --access_token because --call_creds "
- "already set to %s.\n",
- FLAGS_call_creds.c_str());
- }
- if (FLAGS_channel_creds_type.empty()) {
- FLAGS_channel_creds_type = GetDefaultChannelCredsType();
- } else if (FLAGS_enable_ssl && FLAGS_channel_creds_type.compare("ssl") != 0) {
- fprintf(stderr,
- "warning: ignoring --enable_ssl because "
- "--channel_creds_type already set to %s.\n",
- FLAGS_channel_creds_type.c_str());
- } else if (FLAGS_use_auth && FLAGS_channel_creds_type.compare("gdc") != 0) {
- fprintf(stderr,
- "warning: ignoring --use_auth because "
- "--channel_creds_type already set to %s.\n",
- FLAGS_channel_creds_type.c_str());
+ if (absl::GetFlag(FLAGS_call_creds).empty()) {
+ absl::SetFlag(&FLAGS_call_creds, GetDefaultCallCreds());
}
- // Legacy transport upgrade logic for insecure requests.
- if (IsAccessToken(FLAGS_call_creds) &&
- FLAGS_channel_creds_type.compare("insecure") == 0) {
- fprintf(stderr,
- "warning: --channel_creds_type=insecure upgraded to ssl because "
- "an access token was provided.\n");
- FLAGS_channel_creds_type = "ssl";
+ if (absl::GetFlag(FLAGS_channel_creds_type).empty()) {
+ absl::SetFlag(&FLAGS_channel_creds_type, GetDefaultChannelCredsType());
}
std::shared_ptr<grpc::ChannelCredentials> channel_creds =
GetChannelCredentials();
}
const std::string CliCredentials::GetCredentialUsage() const {
- return " --enable_ssl ; Set whether to use ssl "
- "(deprecated)\n"
- " --use_auth ; Set whether to create default google"
- " credentials\n"
- " ; (deprecated)\n"
- " --access_token ; Set the access token in metadata,"
- " overrides --use_auth\n"
- " ; (deprecated)\n"
- " --ssl_target ; Set server host for ssl validation\n"
+ return " --ssl_target ; Set server host for ssl validation\n"
" --ssl_client_cert ; Client cert for ssl\n"
" --ssl_client_key ; Client private key for ssl\n"
" --local_connect_type ; Set to local_tcp or uds\n"
}
const std::string CliCredentials::GetSslTargetNameOverride() const {
- bool use_ssl = FLAGS_channel_creds_type.compare("ssl") == 0 ||
- FLAGS_channel_creds_type.compare("gdc") == 0;
- return use_ssl ? FLAGS_ssl_target : "";
+ bool use_ssl = absl::GetFlag(FLAGS_channel_creds_type) == "ssl" ||
+ absl::GetFlag(FLAGS_channel_creds_type) == "gdc";
+ return use_ssl ? absl::GetFlag(FLAGS_ssl_target) : "";
}
} // namespace testing
#include "test/cpp/util/create_test_channel.h"
-#include <gflags/gflags.h>
-
#include <grpc/support/log.h>
#include <grpcpp/create_channel.h>
#include <grpcpp/security/credentials.h>
+#include "absl/flags/flag.h"
#include "test/cpp/util/test_credentials_provider.h"
-DEFINE_string(
- grpc_test_use_grpclb_with_child_policy, "",
- "If non-empty, set a static service config on channels created by "
- "grpc::CreateTestChannel, that configures the grpclb LB policy "
- "with a child policy being the value of this flag (e.g. round_robin "
- "or pick_first).");
+ABSL_FLAG(std::string, grpc_test_use_grpclb_with_child_policy, "",
+ "If non-empty, set a static service config on channels created by "
+ "grpc::CreateTestChannel, that configures the grpclb LB policy "
+ "with a child policy being the value of this flag (e.g. round_robin "
+ "or pick_first).");
namespace grpc {
}
void MaybeSetCustomChannelArgs(grpc::ChannelArguments* args) {
- if (FLAGS_grpc_test_use_grpclb_with_child_policy.size() > 0) {
- args->SetString("grpc.service_config",
- "{\"loadBalancingConfig\":[{\"grpclb\":{\"childPolicy\":[{"
- "\"" +
- FLAGS_grpc_test_use_grpclb_with_child_policy +
- "\":{}}]}}]}");
+ if (!absl::GetFlag(FLAGS_grpc_test_use_grpclb_with_child_policy).empty()) {
+ args->SetString(
+ "grpc.service_config",
+ "{\"loadBalancingConfig\":[{\"grpclb\":{\"childPolicy\":[{"
+ "\"" +
+ absl::GetFlag(FLAGS_grpc_test_use_grpclb_with_child_policy) +
+ "\":{}}]}}]}");
}
}
Example of talking to grpc interop server:
grpc_cli call localhost:50051 UnaryCall "response_size:10" \
- --protofiles=src/proto/grpc/testing/test.proto --enable_ssl=false
+ --protofiles=src/proto/grpc/testing/test.proto \
+ --channel_creds_type=insecure
Options:
1. --protofiles, use this flag to provide proto files if the server does
provided.
3. --metadata specifies metadata to be sent to the server, such as:
--metadata="MyHeaderKey1:Value1:MyHeaderKey2:Value2"
- 4. --enable_ssl, whether to use tls.
+ 4. --channel_creds_type, whether to use tls, insecure or platform-specific
+ options.
5. --use_auth, if set to true, attach a GoogleDefaultCredentials to the call
6. --infile, input filename (defaults to stdin)
7. --outfile, output filename (defaults to stdout)
address of the connection that each RPC is made on to stderr.
*/
+#include <grpcpp/support/config.h>
+
#include <fstream>
#include <functional>
#include <iostream>
-#include <gflags/gflags.h>
-#include <grpcpp/support/config.h>
+#include "absl/flags/flag.h"
#include "test/cpp/util/cli_credentials.h"
#include "test/cpp/util/grpc_tool.h"
#include "test/cpp/util/test_config.h"
-DEFINE_string(outfile, "", "Output file (default is stdout)");
+ABSL_FLAG(std::string, outfile, "", "Output file (default is stdout)");
static bool SimplePrint(const std::string& outfile, const std::string& output) {
if (outfile.empty()) {
return grpc::testing::GrpcToolMainLib(
argc, (const char**)argv, grpc::testing::CliCredentials(),
- std::bind(SimplePrint, FLAGS_outfile, std::placeholders::_1));
+ std::bind(SimplePrint, absl::GetFlag(FLAGS_outfile),
+ std::placeholders::_1));
}
#include "test/cpp/util/grpc_tool.h"
-#include <gflags/gflags.h>
#include <grpc/grpc.h>
#include <grpc/support/port_platform.h>
#include <grpcpp/channel.h>
#include <string>
#include <thread>
+#include "absl/flags/flag.h"
+#include "absl/memory/memory.h"
#include "test/cpp/util/cli_call.h"
#include "test/cpp/util/proto_file_parser.h"
#include "test/cpp/util/proto_reflection_descriptor_database.h"
#include <unistd.h>
#endif
+ABSL_FLAG(bool, l, false, "Use a long listing format");
+ABSL_FLAG(bool, remotedb, true,
+ "Use server types to parse and format messages");
+ABSL_FLAG(std::string, metadata, "",
+ "Metadata to send to server, in the form of key1:val1:key2:val2");
+ABSL_FLAG(std::string, proto_path, ".", "Path to look for the proto file.");
+ABSL_FLAG(std::string, protofiles, "", "Name of the proto file.");
+ABSL_FLAG(bool, binary_input, false, "Input in binary format");
+ABSL_FLAG(bool, binary_output, false, "Output in binary format");
+ABSL_FLAG(std::string, default_service_config, "",
+ "Default service config to use on the channel, if non-empty. Note "
+ "that this will be ignored if the name resolver returns a service "
+ "config.");
+ABSL_FLAG(bool, display_peer_address, false,
+ "Log the peer socket address of the connection that each RPC is made "
+ "on to stderr.");
+ABSL_FLAG(bool, json_input, false, "Input in json format");
+ABSL_FLAG(bool, json_output, false, "Output in json format");
+ABSL_FLAG(std::string, infile, "", "Input file (default is stdin)");
+ABSL_FLAG(bool, batch, false,
+ "Input contains multiple requests. Please do not use this to send "
+ "more than a few RPCs. gRPC CLI has very different performance "
+ "characteristics compared with normal RPC calls which make it "
+ "unsuitable for loadtesting or significant production traffic.");
+// TODO(Capstan): Consider using absl::Duration
+ABSL_FLAG(double, timeout, -1,
+ "Specify timeout in seconds, used to set the deadline for all "
+ "RPCs. The default value of -1 means no deadline has been set.");
+
namespace grpc {
namespace testing {
-
-DEFINE_bool(l, false, "Use a long listing format");
-DEFINE_bool(remotedb, true, "Use server types to parse and format messages");
-DEFINE_string(metadata, "",
- "Metadata to send to server, in the form of key1:val1:key2:val2");
-DEFINE_string(proto_path, ".", "Path to look for the proto file.");
-DEFINE_string(protofiles, "", "Name of the proto file.");
-DEFINE_bool(binary_input, false, "Input in binary format");
-DEFINE_bool(binary_output, false, "Output in binary format");
-DEFINE_string(
- default_service_config, "",
- "Default service config to use on the channel, if non-empty. Note "
- "that this will be ignored if the name resolver returns a service "
- "config.");
-DEFINE_bool(
- display_peer_address, false,
- "Log the peer socket address of the connection that each RPC is made "
- "on to stderr.");
-DEFINE_bool(json_input, false, "Input in json format");
-DEFINE_bool(json_output, false, "Output in json format");
-DEFINE_string(infile, "", "Input file (default is stdin)");
-DEFINE_bool(batch, false,
- "Input contains multiple requests. Please do not use this to send "
- "more than a few RPCs. gRPC CLI has very different performance "
- "characteristics compared with normal RPC calls which make it "
- "unsuitable for loadtesting or significant production traffic.");
-DEFINE_double(timeout, -1,
- "Specify timeout in seconds, used to set the deadline for all "
- "RPCs. The default value of -1 means no deadline has been set.");
-
namespace {
class GrpcTool {
virtual ~GrpcTool() {}
bool Help(int argc, const char** argv, const CliCredentials& cred,
- GrpcToolOutputCallback callback);
+ const GrpcToolOutputCallback& callback);
bool CallMethod(int argc, const char** argv, const CliCredentials& cred,
- GrpcToolOutputCallback callback);
+ const GrpcToolOutputCallback& callback);
bool ListServices(int argc, const char** argv, const CliCredentials& cred,
- GrpcToolOutputCallback callback);
+ const GrpcToolOutputCallback& callback);
bool PrintType(int argc, const char** argv, const CliCredentials& cred,
- GrpcToolOutputCallback callback);
+ const GrpcToolOutputCallback& callback);
// TODO(zyc): implement the following methods
// bool ListServices(int argc, const char** argv, GrpcToolOutputCallback
// callback);
// bool PrintTypeId(int argc, const char** argv, GrpcToolOutputCallback
// callback);
bool ParseMessage(int argc, const char** argv, const CliCredentials& cred,
- GrpcToolOutputCallback callback);
+ const GrpcToolOutputCallback& callback);
bool ToText(int argc, const char** argv, const CliCredentials& cred,
- GrpcToolOutputCallback callback);
+ const GrpcToolOutputCallback& callback);
bool ToJson(int argc, const char** argv, const CliCredentials& cred,
- GrpcToolOutputCallback callback);
+ const GrpcToolOutputCallback& callback);
bool ToBinary(int argc, const char** argv, const CliCredentials& cred,
- GrpcToolOutputCallback callback);
+ const GrpcToolOutputCallback& callback);
void SetPrintCommandMode(int exit_status) {
print_command_usage_ = true;
void ParseMetadataFlag(
std::multimap<std::string, std::string>* client_metadata) {
- if (FLAGS_metadata.empty()) {
+ if (absl::GetFlag(FLAGS_metadata).empty()) {
return;
}
std::vector<std::string> fields;
const char escape = '\\';
size_t cur = -1;
std::stringstream ss;
- while (++cur < FLAGS_metadata.length()) {
- switch (FLAGS_metadata.at(cur)) {
+ while (++cur < absl::GetFlag(FLAGS_metadata).length()) {
+ switch (absl::GetFlag(FLAGS_metadata).at(cur)) {
case escape:
- if (cur < FLAGS_metadata.length() - 1) {
- char c = FLAGS_metadata.at(++cur);
+ if (cur < absl::GetFlag(FLAGS_metadata).length() - 1) {
+ char c = absl::GetFlag(FLAGS_metadata).at(++cur);
if (c == delim || c == escape) {
ss << c;
continue;
ss.clear();
break;
default:
- ss << FLAGS_metadata.at(cur);
+ ss << absl::GetFlag(FLAGS_metadata).at(cur);
}
}
fields.push_back(ss.str());
}
void ReadResponse(CliCall* call, const std::string& method_name,
- GrpcToolOutputCallback callback, ProtoFileParser* parser,
- gpr_mu* parser_mu, bool print_mode) {
+ const GrpcToolOutputCallback& callback,
+ ProtoFileParser* parser, gpr_mu* parser_mu, bool print_mode) {
std::string serialized_response_proto;
std::multimap<grpc::string_ref, grpc::string_ref> server_initial_metadata;
receive_initial_metadata ? &server_initial_metadata : nullptr);
receive_initial_metadata = false) {
fprintf(stderr, "got response.\n");
- if (!FLAGS_binary_output) {
+ if (!absl::GetFlag(FLAGS_binary_output)) {
gpr_mu_lock(parser_mu);
serialized_response_proto = parser->GetFormattedStringFromMethod(
method_name, serialized_response_proto, false /* is_request */,
- FLAGS_json_output);
+ absl::GetFlag(FLAGS_json_output));
if (parser->HasError() && print_mode) {
fprintf(stderr, "Failed to parse response.\n");
}
if (!cred.GetSslTargetNameOverride().empty()) {
args.SetSslTargetNameOverride(cred.GetSslTargetNameOverride());
}
- if (!FLAGS_default_service_config.empty()) {
+ if (!absl::GetFlag(FLAGS_default_service_config).empty()) {
args.SetString(GRPC_ARG_SERVICE_CONFIG,
- FLAGS_default_service_config.c_str());
+ absl::GetFlag(FLAGS_default_service_config).c_str());
}
+ // See |GRPC_ARG_MAX_METADATA_SIZE| in |grpc_types.h|.
+ // Set to large enough size (10M) that should work for most use cases.
+ args.SetInt(GRPC_ARG_MAX_METADATA_SIZE, 10 * 1024 * 1024);
return ::grpc::CreateCustomChannel(server_address, cred.GetCredentials(),
args);
}
} // namespace
int GrpcToolMainLib(int argc, const char** argv, const CliCredentials& cred,
- GrpcToolOutputCallback callback) {
+ const GrpcToolOutputCallback& callback) {
if (argc < 2) {
Usage("No command specified");
}
}
bool GrpcTool::Help(int argc, const char** argv, const CliCredentials& cred,
- GrpcToolOutputCallback callback) {
+ const GrpcToolOutputCallback& callback) {
CommandUsage(
"Print help\n"
" grpc_cli help [subcommand]\n");
bool GrpcTool::ListServices(int argc, const char** argv,
const CliCredentials& cred,
- GrpcToolOutputCallback callback) {
+ const GrpcToolOutputCallback& callback) {
CommandUsage(
"List services\n"
" grpc_cli ls <address> [<service>[/<method>]]\n"
if (argc < 2) {
// List all services, if --l is passed, then include full description,
// otherwise include a summarized list only.
- if (FLAGS_l) {
+ if (absl::GetFlag(FLAGS_l)) {
output = DescribeServiceList(service_list, desc_pool);
} else {
for (auto it = service_list.begin(); it != service_list.end(); it++) {
desc_pool.FindServiceByName(service_name);
if (service != nullptr) {
if (method_name.empty()) {
- output = FLAGS_l ? DescribeService(service) : SummarizeService(service);
+ output = absl::GetFlag(FLAGS_l) ? DescribeService(service)
+ : SummarizeService(service);
} else {
method_name.insert(0, 1, '.');
method_name.insert(0, service_name);
const grpc::protobuf::MethodDescriptor* method =
desc_pool.FindMethodByName(method_name);
if (method != nullptr) {
- output = FLAGS_l ? DescribeMethod(method) : SummarizeMethod(method);
+ output = absl::GetFlag(FLAGS_l) ? DescribeMethod(method)
+ : SummarizeMethod(method);
} else {
fprintf(stderr, "Method %s not found in service %s.\n",
method_name.c_str(), service_name.c_str());
const grpc::protobuf::MethodDescriptor* method =
desc_pool.FindMethodByName(service_name);
if (method != nullptr) {
- output = FLAGS_l ? DescribeMethod(method) : SummarizeMethod(method);
+ output = absl::GetFlag(FLAGS_l) ? DescribeMethod(method)
+ : SummarizeMethod(method);
} else {
fprintf(stderr, "Service or method %s not found.\n",
service_name.c_str());
bool GrpcTool::PrintType(int /*argc*/, const char** argv,
const CliCredentials& cred,
- GrpcToolOutputCallback callback) {
+ const GrpcToolOutputCallback& callback) {
CommandUsage(
"Print type\n"
" grpc_cli type <address> <type>\n"
bool GrpcTool::CallMethod(int argc, const char** argv,
const CliCredentials& cred,
- GrpcToolOutputCallback callback) {
+ const GrpcToolOutputCallback& callback) {
CommandUsage(
"Call method\n"
" grpc_cli call <address> <service>[.<method>] <request>\n"
std::unique_ptr<ProtoFileParser> parser;
std::string serialized_request_proto;
CliArgs cli_args;
- cli_args.timeout = FLAGS_timeout;
+ cli_args.timeout = absl::GetFlag(FLAGS_timeout);
bool print_mode = false;
std::shared_ptr<grpc::Channel> channel =
CreateCliChannel(server_address, cred);
- if (!FLAGS_binary_input || !FLAGS_binary_output) {
- parser.reset(
- new grpc::testing::ProtoFileParser(FLAGS_remotedb ? channel : nullptr,
- FLAGS_proto_path, FLAGS_protofiles));
+ if (!absl::GetFlag(FLAGS_binary_input) ||
+ !absl::GetFlag(FLAGS_binary_output)) {
+ parser = absl::make_unique<grpc::testing::ProtoFileParser>(
+ absl::GetFlag(FLAGS_remotedb) ? channel : nullptr,
+ absl::GetFlag(FLAGS_proto_path), absl::GetFlag(FLAGS_protofiles));
if (parser->HasError()) {
fprintf(
stderr,
}
}
- if (FLAGS_binary_input) {
+ if (absl::GetFlag(FLAGS_binary_input)) {
formatted_method_name = method_name;
} else {
formatted_method_name = parser->GetFormattedMethodName(method_name);
std::istream* input_stream;
std::ifstream input_file;
- if (FLAGS_batch) {
+ if (absl::GetFlag(FLAGS_batch)) {
fprintf(stderr, "Batch mode for streaming RPC is not supported.\n");
return false;
}
PrintMetadata(client_metadata, "Sending client initial metadata:");
CliCall call(channel, formatted_method_name, client_metadata, cli_args);
- if (FLAGS_display_peer_address) {
+ if (absl::GetFlag(FLAGS_display_peer_address)) {
fprintf(stderr, "New call for method_name:%s has peer address:|%s|\n",
formatted_method_name.c_str(), call.peer().c_str());
}
- if (FLAGS_infile.empty()) {
+ if (absl::GetFlag(FLAGS_infile).empty()) {
if (isatty(fileno(stdin))) {
print_mode = true;
fprintf(stderr, "reading streaming request message from stdin...\n");
}
input_stream = &std::cin;
} else {
- input_file.open(FLAGS_infile, std::ios::in | std::ios::binary);
+ input_file.open(absl::GetFlag(FLAGS_infile),
+ std::ios::in | std::ios::binary);
input_stream = &input_file;
}
while (!request_text.empty() ||
(!input_stream->eof() && getline(*input_stream, line))) {
if (!request_text.empty()) {
- if (FLAGS_binary_input) {
+ if (absl::GetFlag(FLAGS_binary_input)) {
serialized_request_proto = request_text;
request_text.clear();
} else {
gpr_mu_lock(&parser_mu);
serialized_request_proto = parser->GetSerializedProtoFromMethod(
method_name, request_text, true /* is_request */,
- FLAGS_json_input);
+ absl::GetFlag(FLAGS_json_input));
request_text.clear();
if (parser->HasError()) {
if (print_mode) {
}
} else { // parser->IsStreaming(method_name, true /* is_request */)
- if (FLAGS_batch) {
+ if (absl::GetFlag(FLAGS_batch)) {
if (parser->IsStreaming(method_name, false /* is_request */)) {
fprintf(stderr, "Batch mode for streaming RPC is not supported.\n");
return false;
std::istream* input_stream;
std::ifstream input_file;
- if (FLAGS_infile.empty()) {
+ if (absl::GetFlag(FLAGS_infile).empty()) {
if (isatty(fileno(stdin))) {
print_mode = true;
fprintf(stderr, "reading request messages from stdin...\n");
}
input_stream = &std::cin;
} else {
- input_file.open(FLAGS_infile, std::ios::in | std::ios::binary);
+ input_file.open(absl::GetFlag(FLAGS_infile),
+ std::ios::in | std::ios::binary);
input_stream = &input_file;
}
while (!request_text.empty() ||
(!input_stream->eof() && getline(*input_stream, line))) {
if (!request_text.empty()) {
- if (FLAGS_binary_input) {
+ if (absl::GetFlag(FLAGS_binary_input)) {
serialized_request_proto = request_text;
request_text.clear();
} else {
serialized_request_proto = parser->GetSerializedProtoFromMethod(
method_name, request_text, true /* is_request */,
- FLAGS_json_input);
+ absl::GetFlag(FLAGS_json_input));
request_text.clear();
if (parser->HasError()) {
if (print_mode) {
server_initial_metadata, server_trailing_metadata;
CliCall call(channel, formatted_method_name, client_metadata,
cli_args);
- if (FLAGS_display_peer_address) {
+ if (absl::GetFlag(FLAGS_display_peer_address)) {
fprintf(stderr,
"New call for method_name:%s has peer address:|%s|\n",
formatted_method_name.c_str(), call.peer().c_str());
"Received trailing metadata from server:");
}
- if (FLAGS_binary_output) {
+ if (absl::GetFlag(FLAGS_binary_output)) {
if (!callback(serialized_response_proto)) {
break;
}
} else {
std::string response_text = parser->GetFormattedStringFromMethod(
method_name, serialized_response_proto,
- false /* is_request */, FLAGS_json_output);
+ false /* is_request */, absl::GetFlag(FLAGS_json_output));
if (parser->HasError() && print_mode) {
fprintf(stderr, "Failed to parse response.\n");
}
if (argc == 3) {
- if (!FLAGS_infile.empty()) {
+ if (!absl::GetFlag(FLAGS_infile).empty()) {
fprintf(stderr, "warning: request given in argv, ignoring --infile\n");
}
} else {
std::stringstream input_stream;
- if (FLAGS_infile.empty()) {
+ if (absl::GetFlag(FLAGS_infile).empty()) {
if (isatty(fileno(stdin))) {
fprintf(stderr, "reading request message from stdin...\n");
}
input_stream << std::cin.rdbuf();
} else {
- std::ifstream input_file(FLAGS_infile, std::ios::in | std::ios::binary);
+ std::ifstream input_file(absl::GetFlag(FLAGS_infile),
+ std::ios::in | std::ios::binary);
input_stream << input_file.rdbuf();
input_file.close();
}
request_text = input_stream.str();
}
- if (FLAGS_binary_input) {
+ if (absl::GetFlag(FLAGS_binary_input)) {
serialized_request_proto = request_text;
} else {
serialized_request_proto = parser->GetSerializedProtoFromMethod(
- method_name, request_text, true /* is_request */, FLAGS_json_input);
+ method_name, request_text, true /* is_request */,
+ absl::GetFlag(FLAGS_json_input));
if (parser->HasError()) {
fprintf(stderr, "Failed to parse request.\n");
return false;
PrintMetadata(client_metadata, "Sending client initial metadata:");
CliCall call(channel, formatted_method_name, client_metadata, cli_args);
- if (FLAGS_display_peer_address) {
+ if (absl::GetFlag(FLAGS_display_peer_address)) {
fprintf(stderr, "New call for method_name:%s has peer address:|%s|\n",
formatted_method_name.c_str(), call.peer().c_str());
}
&serialized_response_proto,
receive_initial_metadata ? &server_initial_metadata : nullptr);
receive_initial_metadata = false) {
- if (!FLAGS_binary_output) {
+ if (!absl::GetFlag(FLAGS_binary_output)) {
serialized_response_proto = parser->GetFormattedStringFromMethod(
method_name, serialized_response_proto, false /* is_request */,
- FLAGS_json_output);
+ absl::GetFlag(FLAGS_json_output));
if (parser->HasError()) {
fprintf(stderr, "Failed to parse response.\n");
return false;
bool GrpcTool::ParseMessage(int argc, const char** argv,
const CliCredentials& cred,
- GrpcToolOutputCallback callback) {
+ const GrpcToolOutputCallback& callback) {
CommandUsage(
"Parse message\n"
" grpc_cli parse <address> <type> [<message>]\n"
if (argc == 3) {
message_text = argv[2];
- if (!FLAGS_infile.empty()) {
+ if (!absl::GetFlag(FLAGS_infile).empty()) {
fprintf(stderr, "warning: message given in argv, ignoring --infile.\n");
}
} else {
std::stringstream input_stream;
- if (FLAGS_infile.empty()) {
+ if (absl::GetFlag(FLAGS_infile).empty()) {
if (isatty(fileno(stdin))) {
fprintf(stderr, "reading request message from stdin...\n");
}
input_stream << std::cin.rdbuf();
} else {
- std::ifstream input_file(FLAGS_infile, std::ios::in | std::ios::binary);
+ std::ifstream input_file(absl::GetFlag(FLAGS_infile),
+ std::ios::in | std::ios::binary);
input_stream << input_file.rdbuf();
input_file.close();
}
message_text = input_stream.str();
}
- if (!FLAGS_binary_input || !FLAGS_binary_output) {
+ if (!absl::GetFlag(FLAGS_binary_input) ||
+ !absl::GetFlag(FLAGS_binary_output)) {
std::shared_ptr<grpc::Channel> channel =
CreateCliChannel(server_address, cred);
- parser.reset(
- new grpc::testing::ProtoFileParser(FLAGS_remotedb ? channel : nullptr,
- FLAGS_proto_path, FLAGS_protofiles));
+ parser = absl::make_unique<grpc::testing::ProtoFileParser>(
+ absl::GetFlag(FLAGS_remotedb) ? channel : nullptr,
+ absl::GetFlag(FLAGS_proto_path), absl::GetFlag(FLAGS_protofiles));
if (parser->HasError()) {
fprintf(
stderr,
}
}
- if (FLAGS_binary_input) {
+ if (absl::GetFlag(FLAGS_binary_input)) {
serialized_request_proto = message_text;
} else {
serialized_request_proto = parser->GetSerializedProtoFromMessageType(
- type_name, message_text, FLAGS_json_input);
+ type_name, message_text, absl::GetFlag(FLAGS_json_input));
if (parser->HasError()) {
fprintf(stderr, "Failed to serialize the message.\n");
return false;
}
}
- if (FLAGS_binary_output) {
+ if (absl::GetFlag(FLAGS_binary_output)) {
output_ss << serialized_request_proto;
} else {
std::string output_text;
output_text = parser->GetFormattedStringFromMessageType(
- type_name, serialized_request_proto, FLAGS_json_output);
+ type_name, serialized_request_proto, absl::GetFlag(FLAGS_json_output));
if (parser->HasError()) {
fprintf(stderr, "Failed to deserialize the message.\n");
return false;
}
bool GrpcTool::ToText(int argc, const char** argv, const CliCredentials& cred,
- GrpcToolOutputCallback callback) {
+ const GrpcToolOutputCallback& callback) {
CommandUsage(
"Convert binary message to text\n"
" grpc_cli totext <protofiles> <type>\n"
" --infile ; Input filename (defaults to stdin)\n"
" --outfile ; Output filename (defaults to stdout)\n");
- FLAGS_protofiles = argv[0];
- FLAGS_remotedb = false;
- FLAGS_binary_input = true;
- FLAGS_binary_output = false;
+ absl::SetFlag(&FLAGS_protofiles, argv[0]);
+ absl::SetFlag(&FLAGS_remotedb, false);
+ absl::SetFlag(&FLAGS_binary_input, true);
+ absl::SetFlag(&FLAGS_binary_output, false);
return ParseMessage(argc, argv, cred, callback);
}
bool GrpcTool::ToJson(int argc, const char** argv, const CliCredentials& cred,
- GrpcToolOutputCallback callback) {
+ const GrpcToolOutputCallback& callback) {
CommandUsage(
"Convert binary message to json\n"
" grpc_cli tojson <protofiles> <type>\n"
" --infile ; Input filename (defaults to stdin)\n"
" --outfile ; Output filename (defaults to stdout)\n");
- FLAGS_protofiles = argv[0];
- FLAGS_remotedb = false;
- FLAGS_binary_input = true;
- FLAGS_binary_output = false;
- FLAGS_json_output = true;
+ absl::SetFlag(&FLAGS_protofiles, argv[0]);
+ absl::SetFlag(&FLAGS_remotedb, false);
+ absl::SetFlag(&FLAGS_binary_input, true);
+ absl::SetFlag(&FLAGS_binary_output, false);
+ absl::SetFlag(&FLAGS_json_output, true);
return ParseMessage(argc, argv, cred, callback);
}
bool GrpcTool::ToBinary(int argc, const char** argv, const CliCredentials& cred,
- GrpcToolOutputCallback callback) {
+ const GrpcToolOutputCallback& callback) {
CommandUsage(
"Convert text message to binary\n"
" grpc_cli tobinary <protofiles> <type> [<message>]\n"
" --infile ; Input filename (defaults to stdin)\n"
" --outfile ; Output filename (defaults to stdout)\n");
- FLAGS_protofiles = argv[0];
- FLAGS_remotedb = false;
- FLAGS_binary_input = false;
- FLAGS_binary_output = true;
+ absl::SetFlag(&FLAGS_protofiles, argv[0]);
+ absl::SetFlag(&FLAGS_remotedb, false);
+ absl::SetFlag(&FLAGS_binary_input, false);
+ absl::SetFlag(&FLAGS_binary_output, true);
return ParseMessage(argc, argv, cred, callback);
}
typedef std::function<bool(const std::string&)> GrpcToolOutputCallback;
int GrpcToolMainLib(int argc, const char** argv, const CliCredentials& cred,
- GrpcToolOutputCallback callback);
+ const GrpcToolOutputCallback& callback);
} // namespace testing
} // namespace grpc
#include "test/cpp/util/grpc_tool.h"
-#include <gflags/gflags.h>
#include <grpc/grpc.h>
#include <grpc/support/alloc.h>
#include <grpcpp/channel.h>
#include <chrono>
#include <sstream>
+#include "absl/flags/declare.h"
+#include "absl/flags/flag.h"
#include "src/core/lib/gpr/env.h"
#include "src/core/lib/iomgr/load_file.h"
#include "src/proto/grpc/testing/echo.grpc.pb.h"
" }\n" \
"}\n\n"
-DECLARE_string(channel_creds_type);
-DECLARE_string(ssl_target);
+ABSL_DECLARE_FLAG(std::string, channel_creds_type);
+ABSL_DECLARE_FLAG(std::string, ssl_target);
+ABSL_DECLARE_FLAG(bool, binary_input);
+ABSL_DECLARE_FLAG(bool, binary_output);
+ABSL_DECLARE_FLAG(bool, json_input);
+ABSL_DECLARE_FLAG(bool, json_output);
+ABSL_DECLARE_FLAG(bool, l);
+ABSL_DECLARE_FLAG(bool, batch);
+ABSL_DECLARE_FLAG(std::string, metadata);
+ABSL_DECLARE_FLAG(std::string, protofiles);
+ABSL_DECLARE_FLAG(std::string, proto_path);
+ABSL_DECLARE_FLAG(std::string, default_service_config);
+ABSL_DECLARE_FLAG(double, timeout);
namespace grpc {
namespace testing {
-
-DECLARE_bool(binary_input);
-DECLARE_bool(binary_output);
-DECLARE_bool(json_input);
-DECLARE_bool(json_output);
-DECLARE_bool(l);
-DECLARE_bool(batch);
-DECLARE_string(metadata);
-DECLARE_string(protofiles);
-DECLARE_string(proto_path);
-DECLARE_string(default_service_config);
-DECLARE_double(timeout);
-
namespace {
const int kServerDefaultResponseStreamsToSend = 3;
// Returning string instead of bool to avoid using embedded messages in
// proto3
- response->set_message(seconds.count() <= FLAGS_timeout ? "true" : "false");
+ response->set_message(
+ seconds.count() <= absl::GetFlag(FLAGS_timeout) ? "true" : "false");
return Status::OK;
}
const std::string server_address = SetUpServer();
const char* argv[] = {"grpc_cli", "ls", server_address.c_str()};
- FLAGS_l = false;
+ absl::SetFlag(&FLAGS_l, false);
EXPECT_TRUE(0 == GrpcToolMainLib(ArraySize(argv), argv, TestCliCredentials(),
std::bind(PrintStream, &output_stream,
std::placeholders::_1)));
const char* argv[] = {"grpc_cli", "ls", server_address.c_str(),
"grpc.testing.EchoTestService"};
// without -l flag
- FLAGS_l = false;
+ absl::SetFlag(&FLAGS_l, false);
EXPECT_TRUE(0 == GrpcToolMainLib(ArraySize(argv), argv, TestCliCredentials(),
std::bind(PrintStream, &output_stream,
std::placeholders::_1)));
// with -l flag
output_stream.str(std::string());
output_stream.clear();
- FLAGS_l = true;
+ absl::SetFlag(&FLAGS_l, true);
EXPECT_TRUE(0 == GrpcToolMainLib(ArraySize(argv), argv, TestCliCredentials(),
std::bind(PrintStream, &output_stream,
std::placeholders::_1)));
const char* argv[] = {"grpc_cli", "ls", server_address.c_str(),
"grpc.testing.EchoTestService.Echo"};
// without -l flag
- FLAGS_l = false;
+ absl::SetFlag(&FLAGS_l, false);
EXPECT_TRUE(0 == GrpcToolMainLib(ArraySize(argv), argv, TestCliCredentials(),
std::bind(PrintStream, &output_stream,
std::placeholders::_1)));
// with -l flag
output_stream.str(std::string());
output_stream.clear();
- FLAGS_l = true;
+ absl::SetFlag(&FLAGS_l, true);
EXPECT_TRUE(0 == GrpcToolMainLib(ArraySize(argv), argv, TestCliCredentials(),
std::bind(PrintStream, &output_stream,
std::placeholders::_1)));
output_stream.str(std::string());
output_stream.clear();
- FLAGS_json_output = true;
+ // TODO(Capstan): Consider using absl::FlagSaver
+ absl::SetFlag(&FLAGS_json_output, true);
EXPECT_TRUE(0 == GrpcToolMainLib(ArraySize(argv), argv, TestCliCredentials(),
std::bind(PrintStream, &output_stream,
std::placeholders::_1)));
- FLAGS_json_output = false;
+ absl::SetFlag(&FLAGS_json_output, false);
// Expected output:
// {
const char* argv[] = {"grpc_cli", "call", server_address.c_str(), "Echo",
"{ \"message\": \"Hello\"}"};
- FLAGS_json_input = true;
+ absl::SetFlag(&FLAGS_json_input, true);
EXPECT_TRUE(0 == GrpcToolMainLib(ArraySize(argv), argv, TestCliCredentials(),
std::bind(PrintStream, &output_stream,
std::placeholders::_1)));
output_stream.str(std::string());
output_stream.clear();
- FLAGS_json_output = true;
+ absl::SetFlag(&FLAGS_json_output, true);
EXPECT_TRUE(0 == GrpcToolMainLib(ArraySize(argv), argv, TestCliCredentials(),
std::bind(PrintStream, &output_stream,
std::placeholders::_1)));
- FLAGS_json_output = false;
- FLAGS_json_input = false;
+ absl::SetFlag(&FLAGS_json_output, false);
+ absl::SetFlag(&FLAGS_json_input, false);
// Expected output:
// {
std::istringstream ss("message: 'Hello1'\n\n message: 'Hello2'\n\n");
std::cin.rdbuf(ss.rdbuf());
- FLAGS_batch = true;
+ absl::SetFlag(&FLAGS_batch, true);
EXPECT_TRUE(0 == GrpcToolMainLib(ArraySize(argv), argv, TestCliCredentials(),
std::bind(PrintStream, &output_stream,
std::placeholders::_1)));
- FLAGS_batch = false;
+ absl::SetFlag(&FLAGS_batch, false);
// Expected output: "message: "Hello0"\nmessage: "Hello1"\nmessage:
// "Hello2"\n"
ss.seekg(0);
std::cin.rdbuf(ss.rdbuf());
- FLAGS_batch = true;
- FLAGS_json_output = true;
+ absl::SetFlag(&FLAGS_batch, true);
+ absl::SetFlag(&FLAGS_json_output, true);
EXPECT_TRUE(0 == GrpcToolMainLib(ArraySize(argv), argv, TestCliCredentials(),
std::bind(PrintStream, &output_stream,
std::placeholders::_1)));
- FLAGS_json_output = false;
- FLAGS_batch = false;
+ absl::SetFlag(&FLAGS_json_output, false);
+ absl::SetFlag(&FLAGS_batch, false);
// Expected output:
// {
"{\"message\": \"Hello1\"}\n\n{\"message\": \"Hello2\" }\n\n");
std::cin.rdbuf(ss.rdbuf());
- FLAGS_json_input = true;
- FLAGS_batch = true;
+ absl::SetFlag(&FLAGS_json_input, true);
+ absl::SetFlag(&FLAGS_batch, true);
EXPECT_TRUE(0 == GrpcToolMainLib(ArraySize(argv), argv, TestCliCredentials(),
std::bind(PrintStream, &output_stream,
std::placeholders::_1)));
- FLAGS_batch = false;
+ absl::SetFlag(&FLAGS_batch, false);
// Expected output: "message: "Hello0"\nmessage: "Hello1"\nmessage:
// "Hello2"\n"
ss.seekg(0);
std::cin.rdbuf(ss.rdbuf());
- FLAGS_batch = true;
- FLAGS_json_output = true;
+ absl::SetFlag(&FLAGS_batch, true);
+ absl::SetFlag(&FLAGS_json_output, true);
EXPECT_TRUE(0 == GrpcToolMainLib(ArraySize(argv), argv, TestCliCredentials(),
std::bind(PrintStream, &output_stream,
std::placeholders::_1)));
- FLAGS_json_output = false;
- FLAGS_batch = false;
- FLAGS_json_input = false;
+ absl::SetFlag(&FLAGS_json_output, false);
+ absl::SetFlag(&FLAGS_batch, false);
+ absl::SetFlag(&FLAGS_json_input, false);
// Expected output:
// {
std::istringstream ss("message: 1\n\n message: 'Hello2'\n\n");
std::cin.rdbuf(ss.rdbuf());
- FLAGS_batch = true;
+ absl::SetFlag(&FLAGS_batch, true);
EXPECT_TRUE(0 == GrpcToolMainLib(ArraySize(argv), argv, TestCliCredentials(),
std::bind(PrintStream, &output_stream,
std::placeholders::_1)));
- FLAGS_batch = false;
+ absl::SetFlag(&FLAGS_batch, false);
// Expected output: "message: "Hello0"\nmessage: "Hello2"\n"
EXPECT_TRUE(nullptr != strstr(output_stream.str().c_str(),
ss.seekg(0);
std::cin.rdbuf(ss.rdbuf());
- FLAGS_batch = true;
- FLAGS_json_output = true;
+ absl::SetFlag(&FLAGS_batch, true);
+ absl::SetFlag(&FLAGS_json_output, true);
EXPECT_TRUE(0 == GrpcToolMainLib(ArraySize(argv), argv, TestCliCredentials(),
std::bind(PrintStream, &output_stream,
std::placeholders::_1)));
- FLAGS_json_output = false;
- FLAGS_batch = false;
+ absl::SetFlag(&FLAGS_json_output, false);
+ absl::SetFlag(&FLAGS_batch, false);
// Expected output:
// {
"{ \"message\": 1 }\n\n { \"message\": \"Hello2\" }\n\n");
std::cin.rdbuf(ss.rdbuf());
- FLAGS_batch = true;
- FLAGS_json_input = true;
+ absl::SetFlag(&FLAGS_batch, true);
+ absl::SetFlag(&FLAGS_json_input, true);
EXPECT_TRUE(0 == GrpcToolMainLib(ArraySize(argv), argv, TestCliCredentials(),
std::bind(PrintStream, &output_stream,
std::placeholders::_1)));
- FLAGS_json_input = false;
- FLAGS_batch = false;
+ absl::SetFlag(&FLAGS_json_input, false);
+ absl::SetFlag(&FLAGS_batch, false);
// Expected output: "message: "Hello0"\nmessage: "Hello2"\n"
EXPECT_TRUE(nullptr != strstr(output_stream.str().c_str(),
ss.seekg(0);
std::cin.rdbuf(ss.rdbuf());
- FLAGS_batch = true;
- FLAGS_json_input = true;
- FLAGS_json_output = true;
+ absl::SetFlag(&FLAGS_batch, true);
+ absl::SetFlag(&FLAGS_json_input, true);
+ absl::SetFlag(&FLAGS_json_output, true);
EXPECT_TRUE(0 == GrpcToolMainLib(ArraySize(argv), argv, TestCliCredentials(),
std::bind(PrintStream, &output_stream,
std::placeholders::_1)));
- FLAGS_json_output = false;
- FLAGS_json_input = false;
- FLAGS_batch = false;
+ absl::SetFlag(&FLAGS_json_output, false);
+ absl::SetFlag(&FLAGS_json_input, false);
+ absl::SetFlag(&FLAGS_batch, false);
// Expected output:
// {
"{ \"message\": \"Hello1\" }\n\n{ \"message\": \"Hello2\" }\n\n");
std::cin.rdbuf(ss.rdbuf());
- FLAGS_json_input = true;
+ absl::SetFlag(&FLAGS_json_input, true);
EXPECT_TRUE(0 == GrpcToolMainLib(ArraySize(argv), argv, TestCliCredentials(),
std::bind(PrintStream, &output_stream,
std::placeholders::_1)));
- FLAGS_json_input = false;
+ absl::SetFlag(&FLAGS_json_input, false);
// Expected output: "message: \"Hello0Hello1Hello2\""
EXPECT_TRUE(nullptr != strstr(output_stream.str().c_str(),
"{ \"bad_field\": \"Hello1\" }\n\n{ \"message\": \"Hello2\" }\n\n");
std::cin.rdbuf(ss.rdbuf());
- FLAGS_json_input = true;
+ absl::SetFlag(&FLAGS_json_input, true);
EXPECT_TRUE(0 == GrpcToolMainLib(ArraySize(argv), argv, TestCliCredentials(),
std::bind(PrintStream, &output_stream,
std::placeholders::_1)));
- FLAGS_json_input = false;
+ absl::SetFlag(&FLAGS_json_input, false);
// Expected output: "message: \"Hello0Hello2\""
EXPECT_TRUE(nullptr !=
"CheckDeadlineSet"};
// Set timeout to 5000.25 seconds
- FLAGS_timeout = 5000.25;
+ absl::SetFlag(&FLAGS_timeout, 5000.25);
EXPECT_TRUE(0 == GrpcToolMainLib(ArraySize(argv), argv, TestCliCredentials(),
std::bind(PrintStream, &output_stream,
"CheckDeadlineUpperBound"};
// Set timeout to 900 seconds
- FLAGS_timeout = 900;
+ absl::SetFlag(&FLAGS_timeout, 900);
EXPECT_TRUE(0 == GrpcToolMainLib(ArraySize(argv), argv, TestCliCredentials(),
std::bind(PrintStream, &output_stream,
"CheckDeadlineSet"};
// Set timeout to -5 (deadline not set)
- FLAGS_timeout = -5;
+ absl::SetFlag(&FLAGS_timeout, -5);
EXPECT_TRUE(0 == GrpcToolMainLib(ArraySize(argv), argv, TestCliCredentials(),
std::bind(PrintStream, &output_stream,
"CheckDeadlineSet"};
// Set timeout to -1 (default value, deadline not set)
- FLAGS_timeout = -1;
+ absl::SetFlag(&FLAGS_timeout, -1);
EXPECT_TRUE(0 == GrpcToolMainLib(ArraySize(argv), argv, TestCliCredentials(),
std::bind(PrintStream, &output_stream,
output_stream.str(std::string());
output_stream.clear();
- FLAGS_json_output = true;
+ absl::SetFlag(&FLAGS_json_output, true);
EXPECT_TRUE(0 == GrpcToolMainLib(ArraySize(argv), argv, TestCliCredentials(),
std::bind(PrintStream, &output_stream,
std::placeholders::_1)));
- FLAGS_json_output = false;
+ absl::SetFlag(&FLAGS_json_output, false);
// Expected output: "{\n \"message\": \"Hello{n}\"\n}\n"
for (int i = 0; i < kServerDefaultResponseStreamsToSend; i++) {
"grpc.testing.EchoResponse",
ECHO_RESPONSE_MESSAGE_TEXT_FORMAT};
- FLAGS_binary_input = false;
- FLAGS_binary_output = false;
+ absl::SetFlag(&FLAGS_binary_input, false);
+ absl::SetFlag(&FLAGS_binary_output, false);
EXPECT_TRUE(0 == GrpcToolMainLib(ArraySize(argv), argv, TestCliCredentials(),
std::bind(PrintStream, &output_stream,
std::placeholders::_1)));
output_stream.str(std::string());
output_stream.clear();
- FLAGS_json_output = true;
+ absl::SetFlag(&FLAGS_json_output, true);
EXPECT_TRUE(0 == GrpcToolMainLib(ArraySize(argv), argv, TestCliCredentials(),
std::bind(PrintStream, &output_stream,
std::placeholders::_1)));
- FLAGS_json_output = false;
+ absl::SetFlag(&FLAGS_json_output, false);
// Expected output: ECHO_RESPONSE_MESSAGE_JSON_FORMAT
EXPECT_TRUE(0 == strcmp(output_stream.str().c_str(),
// Parse text message to binary message and then parse it back to text message
output_stream.str(std::string());
output_stream.clear();
- FLAGS_binary_output = true;
+ absl::SetFlag(&FLAGS_binary_output, true);
EXPECT_TRUE(0 == GrpcToolMainLib(ArraySize(argv), argv, TestCliCredentials(),
std::bind(PrintStream, &output_stream,
std::placeholders::_1)));
output_stream.str(std::string());
output_stream.clear();
argv[4] = binary_data.c_str();
- FLAGS_binary_input = true;
- FLAGS_binary_output = false;
+ absl::SetFlag(&FLAGS_binary_input, true);
+ absl::SetFlag(&FLAGS_binary_output, false);
EXPECT_TRUE(0 == GrpcToolMainLib(5, argv, TestCliCredentials(),
std::bind(PrintStream, &output_stream,
std::placeholders::_1)));
EXPECT_TRUE(0 == strcmp(output_stream.str().c_str(),
ECHO_RESPONSE_MESSAGE_TEXT_FORMAT));
- FLAGS_binary_input = false;
- FLAGS_binary_output = false;
+ absl::SetFlag(&FLAGS_binary_input, false);
+ absl::SetFlag(&FLAGS_binary_output, false);
ShutdownServer();
}
"grpc.testing.EchoResponse",
ECHO_RESPONSE_MESSAGE_JSON_FORMAT};
- FLAGS_json_input = true;
+ absl::SetFlag(&FLAGS_json_input, true);
EXPECT_TRUE(0 == GrpcToolMainLib(ArraySize(argv), argv, TestCliCredentials(),
std::bind(PrintStream, &output_stream,
std::placeholders::_1)));
output_stream.str(std::string());
output_stream.clear();
- FLAGS_json_output = true;
+ absl::SetFlag(&FLAGS_json_output, true);
EXPECT_TRUE(0 == GrpcToolMainLib(ArraySize(argv), argv, TestCliCredentials(),
std::bind(PrintStream, &output_stream,
std::placeholders::_1)));
- FLAGS_json_output = false;
- FLAGS_json_input = false;
+ absl::SetFlag(&FLAGS_json_output, false);
+ absl::SetFlag(&FLAGS_json_input, false);
// Expected output: ECHO_RESPONSE_MESSAGE_JSON_FORMAT
EXPECT_TRUE(0 == strcmp(output_stream.str().c_str(),
{
std::stringstream output_stream;
- FLAGS_metadata = "key0:val0:key1:valq:key2:val2";
+ absl::SetFlag(&FLAGS_metadata, "key0:val0:key1:valq:key2:val2");
EXPECT_TRUE(0 == GrpcToolMainLib(ArraySize(argv), argv,
TestCliCredentials(),
std::bind(PrintStream, &output_stream,
{
std::stringstream output_stream;
- FLAGS_metadata = "key:val\\:val";
+ absl::SetFlag(&FLAGS_metadata, "key:val\\:val");
EXPECT_TRUE(0 == GrpcToolMainLib(ArraySize(argv), argv,
TestCliCredentials(),
std::bind(PrintStream, &output_stream,
{
std::stringstream output_stream;
- FLAGS_metadata = "key:val\\\\val";
+ absl::SetFlag(&FLAGS_metadata, "key:val\\\\val");
EXPECT_TRUE(0 == GrpcToolMainLib(ArraySize(argv), argv,
TestCliCredentials(),
std::bind(PrintStream, &output_stream,
strstr(output_stream.str().c_str(), "message: \"Hello\""));
}
- FLAGS_metadata = "";
+ absl::SetFlag(&FLAGS_metadata, "");
ShutdownServer();
}
const char* argv[] = {"grpc_cli", "call", "localhost:10000",
"grpc.testing.EchoTestService.Echo",
"message: 'Hello'"};
- FLAGS_protofiles = "src/proto/grpc/testing/echo.proto";
+ absl::SetFlag(&FLAGS_protofiles, "src/proto/grpc/testing/echo.proto");
char* test_srcdir = gpr_getenv("TEST_SRCDIR");
if (test_srcdir != nullptr) {
- FLAGS_proto_path = test_srcdir + std::string("/com_github_grpc_grpc");
+ absl::SetFlag(&FLAGS_proto_path,
+ test_srcdir + std::string("/com_github_grpc_grpc"));
}
{
std::stringstream output_stream;
- FLAGS_metadata = "key0:val0:key1";
+ absl::SetFlag(&FLAGS_metadata, "key0:val0:key1");
// Exit with 1
EXPECT_EXIT(
GrpcToolMainLib(
{
std::stringstream output_stream;
- FLAGS_metadata = "key:val\\val";
+ absl::SetFlag(&FLAGS_metadata, "key:val\\val");
// Exit with 1
EXPECT_EXIT(
GrpcToolMainLib(
::testing::ExitedWithCode(1), ".*Failed to parse metadata flag.*");
}
- FLAGS_metadata = "";
- FLAGS_protofiles = "";
+ absl::SetFlag(&FLAGS_metadata, "");
+ absl::SetFlag(&FLAGS_protofiles, "");
gpr_free(test_srcdir);
}
// --ssl_target=z.test.google.fr"
std::stringstream output_stream;
const char* argv[] = {"grpc_cli", "ls", server_address.c_str()};
- FLAGS_l = false;
- FLAGS_channel_creds_type = "ssl";
- FLAGS_ssl_target = "z.test.google.fr";
+ absl::SetFlag(&FLAGS_l, false);
+ absl::SetFlag(&FLAGS_channel_creds_type, "ssl");
+ absl::SetFlag(&FLAGS_ssl_target, "z.test.google.fr");
EXPECT_TRUE(
0 == GrpcToolMainLib(
ArraySize(argv), argv, TestCliCredentials(true),
"grpc.testing.EchoTestService\n"
"grpc.reflection.v1alpha.ServerReflection\n"));
- FLAGS_channel_creds_type = "";
- FLAGS_ssl_target = "";
+ absl::SetFlag(&FLAGS_channel_creds_type, "");
+ absl::SetFlag(&FLAGS_ssl_target, "");
ShutdownServer();
}
// Just check that the tool is still operational when --default_service_config
// is configured. This particular service config is in reality redundant with
// the channel's default configuration.
- FLAGS_l = false;
- FLAGS_default_service_config =
- "{\"loadBalancingConfig\":[{\"pick_first\":{}}]}";
+ absl::SetFlag(&FLAGS_l, false);
+ absl::SetFlag(&FLAGS_default_service_config,
+ "{\"loadBalancingConfig\":[{\"pick_first\":{}}]}");
EXPECT_TRUE(0 == GrpcToolMainLib(ArraySize(argv), argv, TestCliCredentials(),
std::bind(PrintStream, &output_stream,
std::placeholders::_1)));
- FLAGS_default_service_config = "";
+ absl::SetFlag(&FLAGS_default_service_config, "");
EXPECT_TRUE(0 == strcmp(output_stream.str().c_str(),
"grpc.testing.EchoTestService\n"
"grpc.reflection.v1alpha.ServerReflection\n"));
#include <sstream>
#include <unordered_set>
+#include "absl/memory/memory.h"
+
#include <grpcpp/support/config.h>
namespace grpc {
dynamic_factory_(new protobuf::DynamicMessageFactory()) {
std::vector<std::string> service_list;
if (channel) {
- reflection_db_.reset(new grpc::ProtoReflectionDescriptorDatabase(channel));
+ reflection_db_ =
+ absl::make_unique<grpc::ProtoReflectionDescriptorDatabase>(channel);
reflection_db_->GetServices(&service_list);
}
std::unordered_set<std::string> known_services;
if (!protofiles.empty()) {
source_tree_.MapPath("", proto_path);
- error_printer_.reset(new ErrorPrinter(this));
- importer_.reset(
- new protobuf::compiler::Importer(&source_tree_, error_printer_.get()));
+ error_printer_ = absl::make_unique<ErrorPrinter>(this);
+ importer_ = absl::make_unique<protobuf::compiler::Importer>(
+ &source_tree_, error_printer_.get());
std::string file_name;
std::stringstream ss(protofiles);
}
}
- file_db_.reset(new protobuf::DescriptorPoolDatabase(*importer_->pool()));
+ file_db_ =
+ absl::make_unique<protobuf::DescriptorPoolDatabase>(*importer_->pool());
}
if (!reflection_db_ && !file_db_) {
} else if (!file_db_) {
desc_db_ = std::move(reflection_db_);
} else {
- desc_db_.reset(new protobuf::MergedDescriptorDatabase(reflection_db_.get(),
- file_db_.get()));
+ desc_db_ = absl::make_unique<protobuf::MergedDescriptorDatabase>(
+ reflection_db_.get(), file_db_.get());
}
- desc_pool_.reset(new protobuf::DescriptorPool(desc_db_.get()));
+ desc_pool_ = absl::make_unique<protobuf::DescriptorPool>(desc_db_.get());
for (auto it = service_list.begin(); it != service_list.end(); it++) {
if (known_services.find(*it) == known_services.end()) {
if (is_json_format) {
grpc::protobuf::json::JsonPrintOptions jsonPrintOptions;
jsonPrintOptions.add_whitespace = true;
- if (!grpc::protobuf::json::MessageToJsonString(
- *msg.get(), &formatted_string, jsonPrintOptions)
+ if (!grpc::protobuf::json::MessageToJsonString(*msg, &formatted_string,
+ jsonPrintOptions)
.ok()) {
LogError("Failed to print proto message to json format");
return "";
}
} else {
- if (!protobuf::TextFormat::PrintToString(*msg.get(), &formatted_string)) {
+ if (!protobuf::TextFormat::PrintToString(*msg, &formatted_string)) {
LogError("Failed to print proto message to text format");
return "";
}
explicit ProtoReflectionDescriptorDatabase(
const std::shared_ptr<grpc::Channel>& channel);
- virtual ~ProtoReflectionDescriptorDatabase();
+ ~ProtoReflectionDescriptorDatabase() override;
// The following four methods implement DescriptorDatabase interfaces.
//
auto* t = new stest;
t->x = new char[strlen(kContent) + 1];
strcpy(t->x, kContent);
- Slice spp(t->x, strlen(t->x),
- [](void* p) {
- auto* t = static_cast<stest*>(p);
- delete[] t->x;
- delete t;
- },
- t);
+ Slice spp(
+ t->x, strlen(t->x),
+ [](void* p) {
+ auto* t = static_cast<stest*>(p);
+ delete[] t->x;
+ delete t;
+ },
+ t);
CheckSlice(spp, kContent);
}
*
*/
-#include <gflags/gflags.h>
-#include "test/cpp/util/test_config.h"
+#include <vector>
-// In some distros, gflags is in the namespace google, and in some others,
-// in gflags. This hack is enabling us to find both.
-namespace google {}
-namespace gflags {}
-using namespace google;
-using namespace gflags;
+#include "absl/flags/parse.h"
+#include "test/cpp/util/test_config.h"
namespace grpc {
namespace testing {
void InitTest(int* argc, char*** argv, bool remove_flags) {
- ParseCommandLineFlags(argc, argv, remove_flags);
+ std::vector<char*> reduced_argv = absl::ParseCommandLine(*argc, *argv);
+ if (remove_flags) {
+ *argc = reduced_argv.size();
+ for (int i = 0; i < *argc; i++) {
+ (*argv)[i] = reduced_argv.at(i);
+ }
+ }
}
} // namespace testing
#include "test/cpp/util/test_credentials_provider.h"
+#include <grpc/support/log.h>
+#include <grpc/support/sync.h>
+#include <grpcpp/security/server_credentials.h>
+
#include <cstdio>
#include <fstream>
#include <iostream>
-
#include <mutex>
#include <unordered_map>
-#include <gflags/gflags.h>
-#include <grpc/support/log.h>
-#include <grpc/support/sync.h>
-#include <grpcpp/security/server_credentials.h>
-
+#include "absl/flags/flag.h"
#include "test/core/end2end/data/ssl_test_data.h"
-DEFINE_string(tls_cert_file, "", "The TLS cert file used when --use_tls=true");
-DEFINE_string(tls_key_file, "", "The TLS key file used when --use_tls=true");
+ABSL_FLAG(std::string, tls_cert_file, "",
+ "The TLS cert file used when --use_tls=true");
+ABSL_FLAG(std::string, tls_key_file, "",
+ "The TLS key file used when --use_tls=true");
namespace grpc {
namespace testing {
class DefaultCredentialsProvider : public CredentialsProvider {
public:
DefaultCredentialsProvider() {
- if (!FLAGS_tls_key_file.empty()) {
- custom_server_key_ = ReadFile(FLAGS_tls_key_file);
+ if (!absl::GetFlag(FLAGS_tls_key_file).empty()) {
+ custom_server_key_ = ReadFile(absl::GetFlag(FLAGS_tls_key_file));
}
- if (!FLAGS_tls_cert_file.empty()) {
- custom_server_cert_ = ReadFile(FLAGS_tls_cert_file);
+ if (!absl::GetFlag(FLAGS_tls_cert_file).empty()) {
+ custom_server_cert_ = ReadFile(absl::GetFlag(FLAGS_tls_cert_file));
}
}
~DefaultCredentialsProvider() override {}
#include "test/core/util/test_config.h"
-using std::chrono::duration_cast;
using std::chrono::microseconds;
using std::chrono::system_clock;
rm -r third_party/benchmark/* || true
rm -r third_party/bloaty/* || true
rm -r third_party/boringssl-with-bazel/* || true
-rm -r third_party/gflags/* || true
rm -r third_party/googletest/* || true
# Build helloworld example using cmake superbuild
<PropertyGroup>
<OutputType>Exe</OutputType>
- <TargetFrameworks>net45;netcoreapp2.1</TargetFrameworks>
+
+ <!-- set TargetFrameworks, but allow skipping selected frameworks by setting env variables -->
+ <TargetFrameworks></TargetFrameworks>
+ <TargetFrameworks Condition="'$(SKIP_NET45_DISTRIBTEST)' == ''">$(TargetFrameworks);net45</TargetFrameworks>
+ <TargetFrameworks Condition="'$(SKIP_NETCOREAPP21_DISTRIBTEST)' == ''">$(TargetFrameworks);netcoreapp2.1</TargetFrameworks>
+ <TargetFrameworks Condition="'$(SKIP_NETCOREAPP31_DISTRIBTEST)' == ''">$(TargetFrameworks);netcoreapp3.1</TargetFrameworks>
+ <TargetFrameworks Condition="'$(SKIP_NET50_DISTRIBTEST)' == ''">$(TargetFrameworks);net5.0</TargetFrameworks>
+
<GenerateAssemblyCompanyAttribute>false</GenerateAssemblyCompanyAttribute>
<GenerateAssemblyConfigurationAttribute>false</GenerateAssemblyConfigurationAttribute>
<GenerateAssemblyDescriptionAttribute>false</GenerateAssemblyDescriptionAttribute>
dotnet restore DistribTestDotNet.csproj
dotnet build DistribTestDotNet.csproj
-dotnet publish -f netcoreapp2.1 DistribTestDotNet.csproj
-dotnet publish -f net45 DistribTestDotNet.csproj
ls -R bin
-if [ "${SKIP_MONO_DISTRIBTEST}" != "1" ]
+if [ "${SKIP_NET45_DISTRIBTEST}" != "1" ]
then
+ dotnet publish -f net45 DistribTestDotNet.csproj
+
# .NET 4.5 target after dotnet build
mono bin/Debug/net45/publish/DistribTestDotNet.exe
mono bin/Debug/net45/publish/DistribTestDotNet.exe
fi
-# .NET Core target after dotnet build
-dotnet exec bin/Debug/netcoreapp2.1/DistribTestDotNet.dll
+if [ "${SKIP_NETCOREAPP21_DISTRIBTEST}" != "1" ]
+then
+ dotnet publish -f netcoreapp2.1 DistribTestDotNet.csproj
+
+ # .NET Core target after dotnet build
+ dotnet exec bin/Debug/netcoreapp2.1/DistribTestDotNet.dll
+
+ # .NET Core target after dotnet publish
+ dotnet exec bin/Debug/netcoreapp2.1/publish/DistribTestDotNet.dll
+fi
+
+if [ "${SKIP_NETCOREAPP31_DISTRIBTEST}" != "1" ]
+then
+ dotnet publish -f netcoreapp3.1 DistribTestDotNet.csproj
+
+ # .NET Core target after dotnet build
+ dotnet exec bin/Debug/netcoreapp3.1/DistribTestDotNet.dll
+
+ # .NET Core target after dotnet publish
+ dotnet exec bin/Debug/netcoreapp3.1/publish/DistribTestDotNet.dll
+fi
+
+if [ "${SKIP_NET50_DISTRIBTEST}" != "1" ]
+then
+ dotnet publish -f net5.0 DistribTestDotNet.csproj
+
+ dotnet publish -r linux-x64 -f net5.0 DistribTestDotNet.csproj -p:PublishSingleFile=true --self-contained true --output net5_singlefile_publish
+
+ # .NET Core target after dotnet build
+ dotnet exec bin/Debug/net5.0/DistribTestDotNet.dll
-# .NET Core target after dotnet publish
-dotnet exec bin/Debug/netcoreapp2.1/publish/DistribTestDotNet.dll
+ # .NET Core target after dotnet publish
+ dotnet exec bin/Debug/net5.0/publish/DistribTestDotNet.dll
+
+ # binary generated by the single file publish
+ ./net5_singlefile_publish/DistribTestDotNet
+fi
#ifndef ADDRESS_SORTING_H
#define ADDRESS_SORTING_H
+#include <stddef.h>
+
#ifdef __cplusplus
extern "C" {
#endif
"ares__get_hostent.c",
"ares__read_line.c",
"ares__timeval.c",
+ "ares_android.c",
"ares_cancel.c",
"ares_create_query.c",
"ares_data.c",
],
hdrs = [
"ares.h",
+ "ares_android.h",
"ares_build.h",
"ares_config.h",
"ares_data.h",
build:asan_macos --copt=-O0
build:asan_macos --copt=-fno-omit-frame-pointer
build:asan_macos --copt=-DGPR_NO_DIRECT_SYSCALLS
-build:asan_macos --copt=-DADDRESS_SANITIZER # used by absl
build:asan_macos --linkopt=-fsanitize=address
build:asan_macos --action_env=ASAN_OPTIONS=detect_leaks=0
-
build:msan --strip=never
build:msan --copt=-fsanitize=memory
build:msan --copt=-O0
build:msan --copt=-fsanitize-memory-use-after-dtor
build:msan --copt=-fno-omit-frame-pointer
build:msan --copt=-DGPR_NO_DIRECT_SYSCALLS
-build:msan --copt=-DMEMORY_SANITIZER # used by absl
build:msan --linkopt=-fsanitize=memory
build:msan --action_env=MSAN_OPTIONS=poison_in_dtor=1
build:tsan --copt=-fno-omit-frame-pointer
build:tsan --copt=-DGPR_NO_DIRECT_SYSCALLS
build:tsan --copt=-DGRPC_TSAN
-# TODO(jtattermusch): ideally we would set --copt=-DTHREAD_SANITIZER (used by absl)
-# but it seems to do more harm than good and triggers #17175
build:tsan --linkopt=-fsanitize=thread
+# This is needed to address false positive problem with abseil.
+# https://github.com/google/sanitizers/issues/953
+build:tsan --test_env=TSAN_OPTIONS=report_atomic_races=0
build:tsan --action_env=TSAN_OPTIONS=suppressions=test/core/util/tsan_suppressions.txt:halt_on_error=1:second_deadlock_stack=1
build:ubsan --strip=never
build:ubsan --copt=-fno-omit-frame-pointer
build:ubsan --copt=-DGRPC_UBSAN
build:ubsan --copt=-DNDEBUG
-build:ubsan --copt=-DUNDEFINED_BEHAVIOR_SANITIZER # used by absl
build:ubsan --copt=-fno-sanitize=function,vptr
build:ubsan --linkopt=-fsanitize=undefined
build:ubsan --action_env=UBSAN_OPTIONS=halt_on_error=1:print_stacktrace=1:suppressions=test/core/util/ubsan_suppressions.txt
build:mutrace --copt=-fno-omit-frame-pointer
build:mutrace --copt=-DNDEBUG
build:mutrace --linkopt=-rdynamic
+
+# Compile database generation config
+build:compdb --build_tag_filters=-nocompdb
def repr_ordered_dict(dumper, odict):
- return dumper.represent_mapping(u'tag:yaml.org,2002:map', odict.items())
+ return dumper.represent_mapping('tag:yaml.org,2002:map',
+ list(odict.items()))
yaml.add_representer(collections.OrderedDict, repr_ordered_dict)
# See the License for the specific language governing permissions and
# limitations under the License.
+# Script to extract build metadata from bazel BUILD.
+# To avoid having two sources of truth for the build metadata (build
+# targets, source files, header files etc.), this script analyzes the contents
+# of bazel BUILD files and generates a YAML file (currently called
+# build_autogenerated.yaml). The format and semantics of the generated YAML files
+# is chosen to match the format of a "build.yaml" file, which used
+# to be build the source of truth for gRPC build before bazel became
+# the primary build system.
+# A good basic overview of the "build.yaml" format is available here:
+# https://github.com/grpc/grpc/blob/master/templates/README.md. Note that
+# while useful as an overview, the doc does not act as formal spec
+# (formal spec does not exist in fact) and the doc can be incomplete,
+# inaccurate or slightly out of date.
+# TODO(jtattermusch): In the future we want to get rid of the legacy build.yaml
+# format entirely or simplify it to a point where it becomes self-explanatory
+# and doesn't need any detailed documentation.
+
import subprocess
import yaml
import xml.etree.ElementTree as ET
def _rule_dict_from_xml_node(rule_xml_node):
+ """Converts XML node representing a rule (obtained from "bazel query --output xml") to a dictionary that contains all the metadata we will need."""
result = {
'class': rule_xml_node.attrib.get('class'),
'name': rule_xml_node.attrib.get('name'),
def _extract_rules_from_bazel_xml(xml_tree):
+ """Extract bazel rules from an XML tree node obtained from "bazel query --output xml" command."""
result = {}
for child in xml_tree:
if child.tag == 'rule':
def _create_target_from_bazel_rule(target_name, bazel_rules):
- # extract the deps from bazel
+ """Create build.yaml-like target definition from bazel metadata"""
bazel_rule = bazel_rules[_get_bazel_label(target_name)]
+
+ # Create a template for our target from the bazel rule. Initially we only
+ # populate some "private" fields with the original info we got from bazel
+ # and only later we will populate the public fields (once we do some extra
+ # postprocessing).
result = {
'name': target_name,
'_PUBLIC_HEADERS_BAZEL': _extract_public_headers(bazel_rule),
# all libs that are not in the dictionary are considered external.
external_deps = list(
- sorted(filter(lambda lib_name: lib_name not in lib_dict, lib_names)))
+ sorted([lib_name for lib_name in lib_names if lib_name not in lib_dict
+ ]))
if verbose:
print('topo_ordering ' + str(lib_names))
print(' external_deps ' + str(external_deps))
def _populate_transitive_deps(bazel_rules):
"""Add 'transitive_deps' field for each of the rules"""
transitive_deps = {}
- for rule_name in bazel_rules.iterkeys():
+ for rule_name in bazel_rules.keys():
transitive_deps[rule_name] = set(bazel_rules[rule_name]['deps'])
while True:
deps_added = 0
- for rule_name in bazel_rules.iterkeys():
+ for rule_name in bazel_rules.keys():
old_deps = transitive_deps[rule_name]
new_deps = set(old_deps)
for dep_name in old_deps:
if deps_added == 0:
break
- for rule_name, bazel_rule in bazel_rules.iteritems():
+ for rule_name, bazel_rule in bazel_rules.items():
bazel_rule['transitive_deps'] = list(sorted(transitive_deps[rule_name]))
elif bazel_dep == '//external:benchmark':
return 'benchmark'
else:
- # all the other external deps such as gflags, protobuf, cares, zlib
+ # all the other external deps such as protobuf, cares, zlib
# don't need to be listed explicitly, they are handled automatically
# by the build system (make, cmake)
return None
def _generate_build_metadata(build_extra_metadata, bazel_rules):
- lib_names = build_extra_metadata.keys()
+ """Generate build metadata in build.yaml-like format bazel build metadata and build.yaml-specific "extra metadata"."""
+ lib_names = list(build_extra_metadata.keys())
result = {}
for lib_name in lib_names:
lib_dict = _create_target_from_bazel_rule(lib_name, bazel_rules)
+ # Figure out the final list of headers and sources for given target.
+ # While this is mostly based on bazel build metadata, build.yaml does
+ # not necessarily expose all the targets that are present in bazel build.
+ # These "intermediate dependencies" might get flattened.
+ # TODO(jtattermusch): This is done to avoid introducing too many intermediate
+ # libraries into the build.yaml-based builds (which might in cause issues
+ # building language-specific artifacts) and also because the libraries
+ # in build.yaml-based build are generally considered units of distributions
+ # (= public libraries that are visible to the user and are installable),
+ # while in bazel builds it is customary to define larger number of smaller
+ # "sublibraries". The need for elision (and expansion)
+ # of intermediate libraries can be re-evaluated in the future.
_expand_intermediate_deps(lib_dict, lib_names, bazel_rules)
- # populate extra properties from build metadata
+ # populate extra properties from the build.yaml-specific "extra metadata"
lib_dict.update(build_extra_metadata.get(lib_name, {}))
# store to results
result[lib_name] = lib_dict
- # rename some targets to something else
- # this needs to be made after we're done with most of processing logic
+ # Rename targets marked with "_RENAME" extra metadata.
+ # This is mostly a cosmetic change to ensure that we end up with build.yaml target
+ # names we're used to from the past (and also to avoid too long target names).
+ # The rename step needs to be made after we're done with most of processing logic
# otherwise the already-renamed libraries will have different names than expected
for lib_name in lib_names:
to_name = build_extra_metadata.get(lib_name, {}).get('_RENAME', None)
# dep names need to be updated as well
for lib_dict_to_update in result.values():
- lib_dict_to_update['deps'] = list(
- map(lambda dep: to_name if dep == lib_name else dep,
- lib_dict_to_update['deps']))
+ lib_dict_to_update['deps'] = list([
+ to_name if dep == lib_name else dep
+ for dep in lib_dict_to_update['deps']
+ ])
# make sure deps are listed in reverse topological order (e.g. "grpc gpr" and not "gpr grpc")
- for lib_dict in result.itervalues():
+ for lib_dict in result.values():
lib_dict['deps'] = list(
reversed(_sort_by_build_order(lib_dict['deps'], result, 'deps')))
def _convert_to_build_yaml_like(lib_dict):
- lib_names = list(
- filter(
- lambda lib_name: lib_dict[lib_name].get('_TYPE', 'library') ==
- 'library', lib_dict.keys()))
- target_names = list(
- filter(
- lambda lib_name: lib_dict[lib_name].get('_TYPE', 'library') ==
- 'target', lib_dict.keys()))
- test_names = list(
- filter(
- lambda lib_name: lib_dict[lib_name].get('_TYPE', 'library') ==
- 'test', lib_dict.keys()))
+ lib_names = [
+ lib_name for lib_name in list(lib_dict.keys())
+ if lib_dict[lib_name].get('_TYPE', 'library') == 'library'
+ ]
+ target_names = [
+ lib_name for lib_name in list(lib_dict.keys())
+ if lib_dict[lib_name].get('_TYPE', 'library') == 'target'
+ ]
+ test_names = [
+ lib_name for lib_name in list(lib_dict.keys())
+ if lib_dict[lib_name].get('_TYPE', 'library') == 'test'
+ ]
# list libraries and targets in predefined order
- lib_list = list(map(lambda lib_name: lib_dict[lib_name], lib_names))
- target_list = list(map(lambda lib_name: lib_dict[lib_name], target_names))
- test_list = list(map(lambda lib_name: lib_dict[lib_name], test_names))
+ lib_list = [lib_dict[lib_name] for lib_name in lib_names]
+ target_list = [lib_dict[lib_name] for lib_name in target_names]
+ test_list = [lib_dict[lib_name] for lib_name in test_names]
# get rid of temporary private fields prefixed with "_" and some other useless fields
for lib in lib_list:
- for field_to_remove in filter(lambda k: k.startswith('_'), lib.keys()):
+ for field_to_remove in [k for k in lib.keys() if k.startswith('_')]:
lib.pop(field_to_remove, None)
for target in target_list:
- for field_to_remove in filter(lambda k: k.startswith('_'),
- target.keys()):
+ for field_to_remove in [k for k in target.keys() if k.startswith('_')]:
target.pop(field_to_remove, None)
target.pop('public_headers',
None) # public headers make no sense for targets
for test in test_list:
- for field_to_remove in filter(lambda k: k.startswith('_'), test.keys()):
+ for field_to_remove in [k for k in test.keys() if k.startswith('_')]:
test.pop(field_to_remove, None)
test.pop('public_headers',
None) # public headers make no sense for tests
def _extract_cc_tests(bazel_rules):
"""Gets list of cc_test tests from bazel rules"""
result = []
- for bazel_rule in bazel_rules.itervalues():
+ for bazel_rule in bazel_rules.values():
if bazel_rule['class'] == 'cc_test':
test_name = bazel_rule['name']
if test_name.startswith('//'):
return list(sorted(result))
-def _filter_cc_tests(tests):
- """Filters out tests that we don't want or we cannot build them reasonably"""
+def _exclude_unwanted_cc_tests(tests):
+ """Filters out bazel tests that we don't want to run with other build systems or we cannot build them reasonably"""
# most qps tests are autogenerated, we are fine without them
- tests = list(
- filter(lambda test: not test.startswith('test/cpp/qps:'), tests))
+ tests = [test for test in tests if not test.startswith('test/cpp/qps:')]
# we have trouble with census dependency outside of bazel
- tests = list(
- filter(lambda test: not test.startswith('test/cpp/ext/filters/census:'),
- tests))
- tests = list(
- filter(
- lambda test: not test.startswith(
- 'test/cpp/microbenchmarks:bm_opencensus_plugin'), tests))
+ tests = [
+ test for test in tests
+ if not test.startswith('test/cpp/ext/filters/census:')
+ ]
+ tests = [
+ test for test in tests
+ if not test.startswith('test/cpp/microbenchmarks:bm_opencensus_plugin')
+ ]
# missing opencensus/stats/stats.h
- tests = list(
- filter(
- lambda test: not test.startswith(
- 'test/cpp/end2end:server_load_reporting_end2end_test'), tests))
- tests = list(
- filter(
- lambda test: not test.startswith(
- 'test/cpp/server/load_reporter:lb_load_reporter_test'), tests))
+ tests = [
+ test for test in tests if not test.startswith(
+ 'test/cpp/end2end:server_load_reporting_end2end_test')
+ ]
+ tests = [
+ test for test in tests if not test.startswith(
+ 'test/cpp/server/load_reporter:lb_load_reporter_test')
+ ]
# The test uses --running_under_bazel cmdline argument
# To avoid the trouble needing to adjust it, we just skip the test
- tests = list(
- filter(
- lambda test: not test.startswith(
- 'test/cpp/naming:resolver_component_tests_runner_invoker'),
- tests))
+ tests = [
+ test for test in tests if not test.startswith(
+ 'test/cpp/naming:resolver_component_tests_runner_invoker')
+ ]
# the test requires 'client_crash_test_server' to be built
- tests = list(
- filter(
- lambda test: not test.startswith('test/cpp/end2end:time_change_test'
- ), tests))
+ tests = [
+ test for test in tests
+ if not test.startswith('test/cpp/end2end:time_change_test')
+ ]
# the test requires 'client_crash_test_server' to be built
- tests = list(
- filter(
- lambda test: not test.startswith(
- 'test/cpp/end2end:client_crash_test'), tests))
+ tests = [
+ test for test in tests
+ if not test.startswith('test/cpp/end2end:client_crash_test')
+ ]
# the test requires 'server_crash_test_client' to be built
- tests = list(
- filter(
- lambda test: not test.startswith(
- 'test/cpp/end2end:server_crash_test'), tests))
+ tests = [
+ test for test in tests
+ if not test.startswith('test/cpp/end2end:server_crash_test')
+ ]
# test never existed under build.yaml and it fails -> skip it
- tests = list(
- filter(
- lambda test: not test.startswith(
- 'test/core/tsi:ssl_session_cache_test'), tests))
+ tests = [
+ test for test in tests
+ if not test.startswith('test/core/tsi:ssl_session_cache_test')
+ ]
# the binary of this test does not get built with cmake
- tests = list(
- filter(
- lambda test: not test.startswith(
- 'test/cpp/util:channelz_sampler_test'), tests))
+ tests = [
+ test for test in tests
+ if not test.startswith('test/cpp/util:channelz_sampler_test')
+ ]
return tests
def _generate_build_extra_metadata_for_tests(tests, bazel_rules):
+ """For given tests, generate the "extra metadata" that we need for our "build.yaml"-like output. The extra metadata is generated from the bazel rule metadata by using a bunch of heuristics."""
test_metadata = {}
for test in tests:
test_dict = {'build': 'test', '_TYPE': 'target'}
# detect duplicate test names
tests_by_simple_name = {}
- for test_name, test_dict in test_metadata.iteritems():
+ for test_name, test_dict in test_metadata.items():
simple_test_name = test_dict['_RENAME']
if not simple_test_name in tests_by_simple_name:
tests_by_simple_name[simple_test_name] = []
tests_by_simple_name[simple_test_name].append(test_name)
# choose alternative names for tests with a name collision
- for collision_list in tests_by_simple_name.itervalues():
+ for collision_list in tests_by_simple_name.values():
if len(collision_list) > 1:
for test_name in collision_list:
long_name = test_name.replace('/', '_').replace(':', '_')
return test_metadata
+def _detect_and_print_issues(build_yaml_like):
+ """Try detecting some unusual situations and warn about them."""
+ for tgt in build_yaml_like['targets']:
+ if tgt['build'] == 'test':
+ for src in tgt['src']:
+ if src.startswith('src/') and not src.endswith('.proto'):
+ print('source file from under "src/" tree used in test ' +
+ tgt['name'] + ': ' + src)
+
+
# extra metadata that will be used to construct build.yaml
# there are mostly extra properties that we weren't able to obtain from the bazel build
# _TYPE: whether this is library, target or test
'deps("//src/proto/...")',
]
+# Step 1: run a bunch of "bazel query --output xml" queries to collect
+# the raw build metadata from the bazel build.
+# At the end of this step we will have a dictionary of bazel rules
+# that are interesting to us (libraries, binaries, etc.) along
+# with their most important metadata (sources, headers, dependencies)
+#
+# Example of a single bazel rule after being populated:
+# '//:grpc' : { 'class': 'cc_library',
+# 'hdrs': ['//:include/grpc/byte_buffer.h', ... ],
+# 'srcs': ['//:src/core/lib/surface/init.cc', ... ],
+# 'deps': ['//:grpc_common', ...],
+# ... }
bazel_rules = {}
for query in _BAZEL_DEPS_QUERIES:
bazel_rules.update(
_extract_rules_from_bazel_xml(_bazel_query_xml_tree(query)))
+# Step 1a: Knowing the transitive closure of dependencies will make
+# the postprocessing simpler, so compute the info for all our rules.
+#
+# Example:
+# '//:grpc' : { ...,
+# 'transitive_deps': ['//:gpr_base', ...] }
_populate_transitive_deps(bazel_rules)
-tests = _filter_cc_tests(_extract_cc_tests(bazel_rules))
-test_metadata = _generate_build_extra_metadata_for_tests(tests, bazel_rules)
-
-all_metadata = {}
-all_metadata.update(_BUILD_EXTRA_METADATA)
-all_metadata.update(test_metadata)
-
-all_targets_dict = _generate_build_metadata(all_metadata, bazel_rules)
+# Step 2: Extract the known bazel cc_test tests. While most tests
+# will be buildable with other build systems just fine, some of these tests
+# would be too difficult to build and run with other build systems,
+# so we simply exclude the ones we don't want.
+# Note that while making tests buildable with other build systems
+# than just bazel is extra effort, we still need to do that for these
+# reasons:
+# - If our cmake build doesn't have any tests at all, it's hard to make
+# sure that what it built actually works (we need at least some "smoke tests").
+# This is quite important because the build flags between bazel / non-bazel flag might differ
+# (sometimes it's for interesting reasons that are not easy to overcome)
+# which makes it even more important to have at least some tests for cmake/make
+# - Our portability suite actually runs cmake tests and migration of portability
+# suite fully towards bazel might be intricate (e.g. it's unclear whether it's
+# possible to get a good enough coverage of different compilers / distros etc.
+# with bazel)
+# - some things that are considered "tests" in build.yaml-based builds are actually binaries
+# we'd want to be able to build anyway (qps_json_worker, interop_client, interop_server, grpc_cli)
+# so it's unclear how much make/cmake simplification we would gain by removing just some (but not all) test
+# TODO(jtattermusch): Investigate feasibility of running portability suite with bazel.
+tests = _exclude_unwanted_cc_tests(_extract_cc_tests(bazel_rules))
+
+# Step 3: Generate the "extra metadata" for all our build targets.
+# While the bazel rules give us most of the information we need,
+# the legacy "build.yaml" format requires some additional fields that
+# we cannot get just from bazel alone (we call that "extra metadata").
+# In this step, we basically analyze the build metadata we have from bazel
+# and use heuristics to determine (and sometimes guess) the right
+# extra metadata to use for each target.
+#
+# - For some targets (such as the public libraries, helper libraries
+# and executables) determining the right extra metadata is hard to do
+# automatically. For these targets, the extra metadata is supplied "manually"
+# in form of the _BUILD_EXTRA_METADATA dictionary. That allows us to match
+# the semantics of the legacy "build.yaml" as closely as possible.
+#
+# - For test binaries, it is possible to generate the "extra metadata" mostly
+# automatically using a rule-based heuristic approach because most tests
+# look and behave alike from the build's perspective.
+#
+# TODO(jtattermusch): Of course neither "_BUILD_EXTRA_METADATA" or
+# the heuristic approach used for tests are ideal and they cannot be made
+# to cover all possible situations (and are tailored to work with the way
+# the grpc build currently works), but the idea was to start with something
+# reasonably simple that matches the "build.yaml"-like semantics as closely
+# as possible (to avoid changing too many things at once) and gradually get
+# rid of the legacy "build.yaml"-specific fields one by one. Once that is done,
+# only very little "extra metadata" would be needed and/or it would be trivial
+# to generate it automatically.
+all_extra_metadata = {}
+all_extra_metadata.update(_BUILD_EXTRA_METADATA)
+all_extra_metadata.update(
+ _generate_build_extra_metadata_for_tests(tests, bazel_rules))
+
+# Step 4: Generate the final metadata for all the targets.
+# This is done by combining the bazel build metadata and the "extra metadata"
+# we obtained in the previous step.
+# In this step, we also perform some interesting massaging of the target metadata
+# to end up with a result that is as similar to the legacy build.yaml data
+# as possible.
+# - Some targets get renamed (to match the legacy build.yaml target names)
+# - Some intermediate libraries get elided ("expanded") to better match the set
+# of targets provided by the legacy build.yaml build
+#
+# Originally the target renaming was introduced to address these concerns:
+# - avoid changing too many things at the same time and avoid people getting
+# confused by some well know targets suddenly being missing
+# - Makefile/cmake and also language-specific generators rely on some build
+# targets being called exactly the way they they are. Some of our testing
+# scrips also invoke executables (e.g. "qps_json_driver") by their name.
+# - The autogenerated test name from bazel includes the package path
+# (e.g. "test_cpp_TEST_NAME"). Without renaming, the target names would
+# end up pretty ugly (e.g. test_cpp_qps_qps_json_driver).
+# TODO(jtattermusch): reevaluate the need for target renaming in the future.
+#
+# Example of a single generated target:
+# 'grpc' : { 'language': 'c',
+# 'public_headers': ['include/grpc/byte_buffer.h', ... ],
+# 'headers': ['src/core/ext/filters/client_channel/client_channel.h', ... ],
+# 'src': ['src/core/lib/surface/init.cc', ... ],
+# 'deps': ['gpr', 'address_sorting', ...],
+# ... }
+all_targets_dict = _generate_build_metadata(all_extra_metadata, bazel_rules)
+
+# Step 5: convert the dictionary with all the targets to a dict that has
+# the desired "build.yaml"-like layout.
+# TODO(jtattermusch): We use the custom "build.yaml"-like layout because
+# currently all other build systems use that format as their source of truth.
+# In the future, we can get rid of this custom & legacy format entirely,
+# but we would need to update the generators for other build systems
+# at the same time.
+#
+# Layout of the result:
+# { 'libs': { TARGET_DICT_FOR_LIB_XYZ, ... },
+# 'targets': { TARGET_DICT_FOR_BIN_XYZ, ... },
+# 'tests': { TARGET_DICT_FOR_TEST_XYZ, ...} }
build_yaml_like = _convert_to_build_yaml_like(all_targets_dict)
-# if a test uses source files from src/ directly, it's a little bit suspicious
-for tgt in build_yaml_like['targets']:
- if tgt['build'] == 'test':
- for src in tgt['src']:
- if src.startswith('src/') and not src.endswith('.proto'):
- print('source file from under "src/" tree used in test ' +
- tgt['name'] + ': ' + src)
+# detect and report some suspicious situations we've seen before
+_detect_and_print_issues(build_yaml_like)
+# Step 6: Store the build_autogenerated.yaml in a deterministic (=sorted)
+# and cleaned-up form.
+# A basic overview of the resulting "build.yaml"-like format is here:
+# https://github.com/grpc/grpc/blob/master/templates/README.md
+# TODO(jtattermusch): The "cleanup" function is taken from the legacy
+# build system (which used build.yaml) and can be eventually removed.
build_yaml_string = build_cleaner.cleaned_build_yaml_dict_as_string(
build_yaml_like)
with open('build_autogenerated.yaml', 'w') as file:
for gen_build_yaml in $gen_build_yaml_dirs
do
output_file=`mktemp /tmp/genXXXXXX`
- python $gen_build_yaml/gen_build_yaml.py > $output_file
+ python3 $gen_build_yaml/gen_build_yaml.py > $output_file
gen_build_files="$gen_build_files $output_file"
done
cmd.append(args.base + '/' + root + '/' + f)
jobs.append(jobset.JobSpec(cmd, shortname=out, timeout_seconds=None))
-jobset.run(pre_jobs, maxjobs=args.jobs)
-jobset.run(jobs, maxjobs=args.jobs)
+err_cnt, _ = jobset.run(pre_jobs, maxjobs=args.jobs)
+if err_cnt != 0:
+ print('ERROR: {count} error(s) encountered during preprocessing.'.format(
+ count=err_cnt),
+ file=sys.stderr)
+ sys.exit(1)
+err_cnt, _ = jobset.run(jobs, maxjobs=args.jobs)
+if err_cnt != 0:
+ print('ERROR: {count} error(s) found while generating projects.'.format(
+ count=err_cnt),
+ file=sys.stderr)
+ sys.exit(1)
if test is not None:
- for s, g in test.iteritems():
+ for s, g in test.items():
if os.path.isfile(g):
assert 0 == os.system('diff %s %s' % (s, g)), s
os.unlink(g)
echo "Generating build_autogenerated.yaml from bazel BUILD file"
rm -f build_autogenerated.yaml
-python tools/buildgen/extract_metadata_from_bazel_xml.py
+python3 tools/buildgen/extract_metadata_from_bazel_xml.py
cd `dirname $0`/../..
mako_renderer=tools/buildgen/mako_renderer.py
# Instead of generating from a single build.yaml, we've split it into
# - build_handwritten.yaml: manually written metadata
# - build_autogenerated.yaml: generated from bazel BUILD file
-python tools/buildgen/generate_projects.py build_handwritten.yaml build_autogenerated.yaml $gen_build_files $*
+python3 tools/buildgen/generate_projects.py build_handwritten.yaml build_autogenerated.yaml $gen_build_files $*
rm $gen_build_files
-#!/usr/bin/env python2.7
+#!/usr/bin/env python3
# Copyright 2015 gRPC authors.
#
# Licensed under the Apache License, Version 2.0 (the "License");
import getopt
import imp
import os
-import cPickle as pickle
+import pickle
import shutil
import sys
def import_plugin(name):
_, base_ex = os.path.split(name)
base, _ = os.path.splitext(base_ex)
-
- with open(name, 'r') as plugin_file:
- plugin_code = plugin_file.read()
- plugin_module = imp.new_module(base)
- exec plugin_code in plugin_module.__dict__
- return plugin_module
+ return imp.load_source(base, name)
def out(msg):
- print >> sys.stderr, msg
+ print(msg, file=sys.stderr)
def showhelp():
0,
os.path.abspath(
os.path.join(os.path.dirname(sys.argv[0]), 'plugins')))
- with open(arg, 'r') as dict_file:
+ with open(arg, 'rb') as dict_file:
dictionary = pickle.load(dict_file)
got_preprocessed_input = True
elif opt == '-d':
dictionary[k] = bunch.to_bunch(v)
if preprocessed_output:
- with open(preprocessed_output, 'w') as dict_file:
+ with open(preprocessed_output, 'wb') as dict_file:
pickle.dump(dictionary, dict_file)
cleared_dir = False
with open(arg) as f:
srcs = list(yaml.load_all(f.read()))
for src in srcs:
- if isinstance(src, basestring):
+ if isinstance(src, str):
assert len(srcs) == 1
template = Template(src,
filename=arg,
for lst in FILEGROUP_LISTS:
fg[lst] = fg.get(lst, [])
fg['own_%s' % lst] = list(fg[lst])
- for attr, val in FILEGROUP_DEFAULTS.iteritems():
+ for attr, val in FILEGROUP_DEFAULTS.items():
if attr not in fg:
fg[attr] = val
thing['used_by'] = []
thing_deps = lambda t: t.get('uses', []) + t.get('filegroups', []) + t.get(
'deps', [])
- for thing in things.itervalues():
+ for thing in things.values():
done = set()
todo = thing_deps(thing)
while todo:
done.add(cur)
# the above expansion can introduce duplicate filenames: contract them here
- for fg in filegroups.itervalues():
+ for fg in filegroups.values():
for lst in FILEGROUP_LISTS:
fg[lst] = uniquify(fg.get(lst, []))
name = target['name']
guid = re.sub('(........)(....)(....)(....)(.*)',
r'{\1-\2-\3-\4-\5}',
- hashlib.md5(name).hexdigest())
+ hashlib.md5(name.encode('utf-8')).hexdigest())
target['vs_project_guid'] = guid.upper()
# Exclude projects without a visual project guid, such as the tests.
projects = [
if __name__ == '__main__':
- print yaml.dump([api for api in list_c_apis(headers_under('include/grpc'))])
+ print(yaml.dump([api for api in list_c_apis(headers_under('include/grpc'))
+ ]))
if [[ ! -z $f ]]; then
if [[ $(tail -c 1 "$f") != $NEWLINE ]]; then
echo "Error: file '$f' is missing a trailing newline character."
- if $2; then # fix
+ if $1; then # fix
sed -i -e '$a\' $f
echo 'Fixed!'
fi
}
if [[ $# == 1 && $1 == '--fix' ]]; then
- ERRORS=$(find_without_newline true)
+ FIX=true
else
- ERRORS=$(find_without_newline false)
+ FIX=false
fi
+ERRORS=$(find_without_newline $FIX)
if [[ "$ERRORS" != '' ]]; then
echo "$ERRORS"
if ! $FIX; then
cd $(dirname $0)/../..
REPO_ROOT=$(pwd)
+# grep targets with manual tag, which is not included in a result of bazel build using ...
+# let's get a list of them using query command and pass it to gen_compilation_database.py
+export MANUAL_TARGETS=$(bazel query 'attr("tags", "manual", tests(//test/cpp/...))' | grep -v _on_ios)
+
+# generate a clang compilation database for all C/C++ sources in the repo.
+tools/distrib/gen_compilation_database.py \
+ --include_headers \
+ --ignore_system_headers \
+ --dedup_targets \
+ "//:*" \
+ "//src/core/..." \
+ "//src/compiler/..." \
+ "//test/core/..." \
+ "//test/cpp/..." \
+ $MANUAL_TARGETS
+
if [ "$CLANG_TIDY_SKIP_DOCKER" == "" ]
then
# build clang-tidy docker image
# run clang-tidy against the checked out codebase
# when modifying the checked-out files, the current user will be impersonated
# so that the updated files don't end up being owned by "root".
- docker run -e TEST="$TEST" -e CHANGED_FILES="$CHANGED_FILES" -e CLANG_TIDY_ROOT="/local-code" --rm=true -v "${REPO_ROOT}":/local-code --user "$(id -u):$(id -g)" -t grpc_clang_tidy /clang_tidy_all_the_things.sh "$@"
+ docker run \
+ -e TEST="$TEST" \
+ -e CHANGED_FILES="$CHANGED_FILES" \
+ -e CLANG_TIDY_ROOT="/local-code" \
+ --rm=true \
+ -v "${REPO_ROOT}":/local-code \
+ -v "${HOME/.cache/bazel}":"${HOME/.cache/bazel}" \
+ --user "$(id -u):$(id -g)" \
+ -t grpc_clang_tidy /clang_tidy_all_the_things.sh "$@"
else
CLANG_TIDY_ROOT="${REPO_ROOT}" tools/dockerfile/grpc_clang_tidy/clang_tidy_all_the_things.sh "$@"
fi
--- /dev/null
+#!/usr/bin/env python3
+
+# Copyright 2020 gRPC authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# This is based on the script on the Envoy project
+# https://github.com/envoyproxy/envoy/blob/master/tools/gen_compilation_database.py
+
+import argparse
+import glob
+import json
+import logging
+import os
+import re
+import shlex
+import subprocess
+from pathlib import Path
+
+RE_INCLUDE_SYSTEM = re.compile("\s*-I\s+/usr/[^ ]+")
+
+
+# This method is equivalent to https://github.com/grailbio/bazel-compilation-database/blob/master/generate.sh
+def generateCompilationDatabase(args):
+ # We need to download all remote outputs for generated source code.
+ # This option lives here to override those specified in bazelrc.
+ bazel_options = shlex.split(os.environ.get("BAZEL_BUILD_OPTIONS", "")) + [
+ "--config=compdb",
+ "--remote_download_outputs=all",
+ ]
+
+ subprocess.check_call(["bazel", "build"] + bazel_options + [
+ "--aspects=@bazel_compdb//:aspects.bzl%compilation_database_aspect",
+ "--output_groups=compdb_files,header_files"
+ ] + args.bazel_targets)
+
+ execroot = subprocess.check_output(["bazel", "info", "execution_root"] +
+ bazel_options).decode().strip()
+
+ compdb = []
+ for compdb_file in Path(execroot).glob("**/*.compile_commands.json"):
+ compdb.extend(
+ json.loads(
+ "[" +
+ compdb_file.read_text().replace("__EXEC_ROOT__", execroot) +
+ "]"))
+
+ if args.dedup_targets:
+ compdb_map = {target["file"]: target for target in compdb}
+ compdb = list(compdb_map.values())
+
+ return compdb
+
+
+def isHeader(filename):
+ for ext in (".h", ".hh", ".hpp", ".hxx"):
+ if filename.endswith(ext):
+ return True
+ return False
+
+
+def isCompileTarget(target, args):
+ filename = target["file"]
+ if not args.include_headers and isHeader(filename):
+ return False
+ if not args.include_genfiles:
+ if filename.startswith("bazel-out/"):
+ return False
+ if not args.include_external:
+ if filename.startswith("external/"):
+ return False
+ return True
+
+
+def modifyCompileCommand(target, args):
+ cc, options = target["command"].split(" ", 1)
+
+ # Workaround for bazel added C++11 options, those doesn't affect build itself but
+ # clang-tidy will misinterpret them.
+ options = options.replace("-std=c++0x ", "")
+ options = options.replace("-std=c++11 ", "")
+
+ if args.vscode:
+ # Visual Studio Code doesn't seem to like "-iquote". Replace it with
+ # old-style "-I".
+ options = options.replace("-iquote ", "-I ")
+
+ if args.ignore_system_headers:
+ # Remove all include options for /usr/* directories
+ options = RE_INCLUDE_SYSTEM.sub("", options)
+
+ if isHeader(target["file"]):
+ options += " -Wno-pragma-once-outside-header -Wno-unused-const-variable"
+ options += " -Wno-unused-function"
+ if not target["file"].startswith("external/"):
+ # *.h file is treated as C header by default while our headers files are all C++11.
+ options = "-x c++ -std=c++11 -fexceptions " + options
+
+ target["command"] = " ".join([cc, options])
+ return target
+
+
+def fixCompilationDatabase(args, db):
+ db = [
+ modifyCompileCommand(target, args)
+ for target in db
+ if isCompileTarget(target, args)
+ ]
+
+ with open("compile_commands.json", "w") as db_file:
+ json.dump(db, db_file, indent=2)
+
+
+if __name__ == "__main__":
+ parser = argparse.ArgumentParser(
+ description='Generate JSON compilation database')
+ parser.add_argument('--include_external', action='store_true')
+ parser.add_argument('--include_genfiles', action='store_true')
+ parser.add_argument('--include_headers', action='store_true')
+ parser.add_argument('--vscode', action='store_true')
+ parser.add_argument('--ignore_system_headers', action='store_true')
+ parser.add_argument('--dedup_targets', action='store_true')
+ parser.add_argument('bazel_targets', nargs='*', default=["//..."])
+ args = parser.parse_args()
+ fixCompilationDatabase(args, generateCompilationDatabase(args))
# AUTO-GENERATED FROM `$REPO_ROOT/templates/tools/distrib/python/grpcio_tools/grpc_version.py.template`!!!
-VERSION = '1.33.2'
+VERSION = '1.34.0'
])
load("//bazel:cython_library.bzl", "pyx_library")
+load("grpcio_tools.bzl", "internal_copied_filegroup")
cc_library(
name = "protoc_lib",
deps = [":protoc_lib"],
)
+internal_copied_filegroup(
+ name = "well_known_protos",
+ srcs = ["@com_google_protobuf//:well_known_protos"],
+ dest = "grpc_tools/_proto/",
+ strip_prefix = "src/",
+)
+
py_library(
name = "grpc_tools",
srcs = [
"grpc_tools/__init__.py",
"grpc_tools/protoc.py",
],
+ data = [":well_known_protos"],
imports = ["."],
srcs_version = "PY2AND3",
deps = [
ProtoFinder(_SERVICE_MODULE_SUFFIX,
_protoc_compiler.get_services)
])
+ sys.path.append(
+ pkg_resources.resource_filename('grpc_tools', '_proto'))
_FINDERS_INSTALLED = True
def _module_name_to_proto_file(suffix, module_name):
# AUTO-GENERATED FROM `$REPO_ROOT/templates/tools/distrib/python/grpcio_tools/grpc_version.py.template`!!!
-VERSION = '1.33.2'
+VERSION = '1.34.0'
--- /dev/null
+# Copyright 2020 The gRPC authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+def _generate_copied_files_impl(ctx):
+ srcs = ctx.attr.srcs[0]
+ strip_prefix = ctx.attr.strip_prefix
+ dest = ctx.attr.dest
+
+ outs = []
+ for f in srcs.files.to_list():
+ destination_path = f.path
+ if f.path.startswith("external"):
+ external_separator = f.path.find("/")
+ repository_separator = f.path.find("/", external_separator + 1)
+ destination_path = f.path[repository_separator + 1:]
+ if not destination_path.startswith(strip_prefix):
+ fail("File '{}' did not start with '{}'.".format(
+ destination_path,
+ strip_prefix,
+ ))
+ destination_path = dest + destination_path[len(strip_prefix):]
+ destination_dir = destination_path.rfind("/")
+ out_file = ctx.actions.declare_file(destination_path)
+ outs.append(out_file)
+ ctx.actions.run_shell(
+ inputs = [f],
+ outputs = [out_file],
+ command = "mkdir -p {0} && cp {1} {2}".format(
+ out_file.dirname,
+ f.path,
+ out_file.path,
+ ),
+ )
+
+ return [DefaultInfo(files = depset(direct = outs))]
+
+_generate_copied_files = rule(
+ attrs = {
+ "srcs": attr.label_list(
+ mandatory = True,
+ allow_empty = False,
+ ),
+ "strip_prefix": attr.string(
+ default = "",
+ ),
+ "dest": attr.string(
+ mandatory = True,
+ ),
+ },
+ implementation = _generate_copied_files_impl,
+)
+
+def internal_copied_filegroup(name, srcs, strip_prefix, dest):
+ """Copies a file group to the current package.
+
+ Useful for using an existing filegroup as a data dependency.
+
+ Args:
+ name: The name of the rule.
+ srcs: A single filegroup.
+ strip_prefix: An optional string to strip from the beginning
+ of the path of each file in the filegroup. Must end in a slash.
+ dest: The directory in which to put the files, relative to the
+ current package. Must end in a slash.
+ """
+ if len(srcs) != 1:
+ fail("srcs must be a single filegroup.")
+
+ if not dest.endswith("/"):
+ fail("dest must end with a '/' character.")
+
+ _symlink_target = name + "_symlink"
+ _generate_copied_files(
+ name = _symlink_target,
+ srcs = srcs,
+ strip_prefix = strip_prefix,
+ dest = dest,
+ )
+
+ native.filegroup(
+ name = name,
+ srcs = [":" + _symlink_target],
+ )
DEFINE_MACROS += (('HAVE_PTHREAD', 1),)
# By default, Python3 distutils enforces compatibility of
-# c plugins (.so files) with the OSX version Python3 was built with.
-# For Python3.4, this is OSX 10.6, but we need Thread Local Support (__thread)
-if 'darwin' in sys.platform and PY3:
+# c plugins (.so files) with the OSX version Python was built with.
+# We need OSX 10.10, the oldest which supports C++ thread_local.
+if 'darwin' in sys.platform:
mac_target = sysconfig.get_config_var('MACOSX_DEPLOYMENT_TARGET')
if mac_target and (pkg_resources.parse_version(mac_target) <
- pkg_resources.parse_version('10.9.0')):
- os.environ['MACOSX_DEPLOYMENT_TARGET'] = '10.9'
+ pkg_resources.parse_version('10.10.0')):
+ os.environ['MACOSX_DEPLOYMENT_TARGET'] = '10.10'
os.environ['_PYTHON_HOST_PLATFORM'] = re.sub(
- r'macosx-[0-9]+\.[0-9]+-(.+)', r'macosx-10.9-\1',
+ r'macosx-[0-9]+\.[0-9]+-(.+)', r'macosx-10.10-\1',
util.get_platform())
install_requires=[
'protobuf>=3.5.0.post1, < 4.0dev',
'grpcio>={version}'.format(version=grpc_version.VERSION),
+ 'setuptools',
],
package_data=package_data(),
)
'python_utils'))
import jobset
-extra_args = [
- '-x',
- 'c++',
- '-std=c++11',
-]
-with open('.clang_complete') as f:
- for line in f:
- line = line.strip()
- if line.startswith('-I'):
- extra_args.append(line)
-
clang_tidy = os.environ.get('CLANG_TIDY', 'clang-tidy')
argp = argparse.ArgumentParser(description='Run clang-tidy against core')
argp.set_defaults(fix=False)
args = argp.parse_args()
+# Explicitly passing the .clang-tidy config by reading it.
+# This is required because source files in the compilation database are
+# in a different source tree so clang-tidy cannot find the right config file
+# by seeking their parent directories.
+with open(".clang-tidy") as f:
+ config = f.read()
cmdline = [
clang_tidy,
-] + ['--extra-arg-before=%s' % arg for arg in extra_args]
+ '--config=' + config,
+]
if args.fix:
cmdline.append('--fix')
jobs = []
for filename in args.files:
- jobs.append(jobset.JobSpec(
- cmdline + [filename],
- shortname=filename,
- )) #verbose_success=True))
+ jobs.append(
+ jobset.JobSpec(
+ cmdline + [filename],
+ shortname=filename,
+ timeout_seconds=15 * 60,
+ ))
num_fails, res_set = jobset.run(jobs, maxjobs=args.jobs)
sys.exit(num_fails)
tools/buildgen/generate_projects.sh
tools/distrib/clang_format_code.sh
tools/distrib/check_copyright.py
-tools/distrib/check_trailing_newlines.sh
+tools/distrib/check_trailing_newlines.sh --fix
RUN apk add glibc-2.30-r0.apk
# installing mono on alpine is hard and we don't really need it
-ENV SKIP_MONO_DISTRIBTEST=1
+ENV SKIP_NET45_DISTRIBTEST=1
+# we have a separate distribtest for netcoreapp3.1
+ENV SKIP_NETCOREAPP31_DISTRIBTEST=1
+# we have a separate distribtest for net5.0
+ENV SKIP_NET50_DISTRIBTEST=1
+
--- /dev/null
+# Copyright 2019 The gRPC Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# "3.1" tag uses debian buster
+FROM mcr.microsoft.com/dotnet/core/sdk:3.1
+
+RUN apt-get update && apt-get install -y unzip && apt-get clean
+
+# we only want to test dotnet core 3.1 runtime. This also allows us to keep
+# this docker image minimal by not installing the other runtimes.
+ENV SKIP_NET45_DISTRIBTEST=1
+ENV SKIP_NETCOREAPP21_DISTRIBTEST=1
+ENV SKIP_NET50_DISTRIBTEST=1
--- /dev/null
+# Copyright 2019 The gRPC Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# "5.0" tag uses debian buster
+FROM mcr.microsoft.com/dotnet/sdk:5.0
+
+RUN apt-get update && apt-get install -y unzip && apt-get clean
+
+# we only want to test dotnet 5 runtime. This also allows us to keep
+# this docker image minimal by not installing the other runtimes.
+ENV SKIP_NET45_DISTRIBTEST=1
+ENV SKIP_NETCOREAPP21_DISTRIBTEST=1
+ENV SKIP_NETCOREAPP31_DISTRIBTEST=1
+++ /dev/null
-# Copyright 2015 gRPC authors.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-FROM i386/debian:jessie
-
-RUN apt-get update && apt-get install -y apt-transport-https && apt-get clean
-
-RUN apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF
-RUN echo "deb https://download.mono-project.com/repo/debian stable-jessie main" | tee /etc/apt/sources.list.d/mono-official-stable.list
-
-RUN apt-get update && apt-get install -y \
- mono-devel \
- nuget \
- && apt-get clean
-
-RUN apt-get update && apt-get install -y unzip && apt-get clean
-
-# Make sure the mono certificate store is up-to-date to prevent issues with nuget restore
-RUN apt-get update && apt-get install -y curl && apt-get clean
-RUN curl https://curl.haxx.se/ca/cacert.pem > ~/cacert.pem && cert-sync ~/cacert.pem && rm -f ~/cacert.pem
# Make sure the mono certificate store is up-to-date to prevent issues with nuget restore
RUN apt-get update && apt-get install -y curl && apt-get clean
RUN curl https://curl.haxx.se/ca/cacert.pem > ~/cacert.pem && cert-sync ~/cacert.pem && rm -f ~/cacert.pem
+
+# we have a separate distribtest for netcoreapp3.1
+ENV SKIP_NETCOREAPP31_DISTRIBTEST=1
+# we have a separate distribtest for net5.0
+ENV SKIP_NET50_DISTRIBTEST=1
# Make sure the mono certificate store is up-to-date to prevent issues with nuget restore
RUN apt-get update && apt-get install -y curl && apt-get clean
RUN curl https://curl.haxx.se/ca/cacert.pem > ~/cacert.pem && cert-sync ~/cacert.pem && rm -f ~/cacert.pem
+
+# we have a separate distribtest for netcoreapp3.1
+ENV SKIP_NETCOREAPP31_DISTRIBTEST=1
+# we have a separate distribtest for net5.0
+ENV SKIP_NET50_DISTRIBTEST=1
RUN apt-get update && apt-get install -y php php-dev php-pear wget zlib1g-dev
-RUN wget https://phar.phpunit.de/phpunit-5.7.27.phar && \
- mv phpunit-5.7.27.phar /usr/local/bin/phpunit && \
+RUN wget https://phar.phpunit.de/phpunit-8.5.8.phar && \
+ mv phpunit-8.5.8.phar /usr/local/bin/phpunit && \
chmod +x /usr/local/bin/phpunit
# limitations under the License.
# Docker file for building gRPC artifacts.
-# Updated: 2020-06-16
+# Updated: 2020-10-08
##################
# Base
# limitations under the License.
# Docker file for building gRPC artifacts.
-# Updated: 2020-06-16
+# Updated: 2020-10-08
##################
# Base
# limitations under the License.
# Docker file for building gRPC manylinux Python artifacts.
-# Updated: 2020-06-25
+# Updated: 2020-10-08
FROM quay.io/pypa/manylinux2010_x86_64
# limitations under the License.
# Docker file for building gRPC manylinux Python artifacts.
-# Updated: 2020-06-25
+# Updated: 2020-10-08
FROM quay.io/pypa/manylinux2010_i686
# limitations under the License.
# Docker file for building gRPC manylinux Python artifacts.
-# Updated: 2020-06-25
+# Updated: 2020-10-08
FROM quay.io/pypa/manylinux2014_x86_64
# limitations under the License.
# Docker file for building gRPC manylinux Python artifacts.
-# Updated: 2020-06-25
+# Updated: 2020-10-08
FROM quay.io/pypa/manylinux2014_i686
FROM debian:10
-RUN apt-get update && apt-get install -y clang-format
+# Add buster-backports for more recent clang packages
+RUN echo "deb http://deb.debian.org/debian buster-backports main" | tee /etc/apt/sources.list.d/buster-backports.list
+
+# Install clang-format
+RUN apt-get update && apt-get install -y clang-format-8
+ENV CLANG_FORMAT=clang-format-8
+
ADD clang_format_all_the_things.sh /
# When running locally, we'll be impersonating the current user, so we need
-# Install clang-tidy 6.0
-# This is because clang-tidy 7.0 started treating compiler errors as tidy errors
-# and there are a couple of files which are not properly compiled via tidy so it
-# should be using 6.0 version until all compilation errors are addressed.
-RUN apt-get update && apt-get install -y clang-tidy-6.0
-ENV CLANG_TIDY=clang-tidy-6.0
+# Add buster-backports for more recent clang packages
+RUN echo "deb http://deb.debian.org/debian buster-backports main" | tee /etc/apt/sources.list.d/buster-backports.list
+
+# Install clang-tidy 7
+RUN apt-get update && apt-get install -y clang-tidy-8 jq
+ENV CLANG_TIDY=clang-tidy-8
ADD clang_tidy_all_the_things.sh /
cd ${CLANG_TIDY_ROOT}
-find src/core src/cpp test/core test/cpp ! -path 'src/core/ext/upb-generated/*' ! -path 'src/core/ext/upbdefs-generated/*' -name '*.h' -or -name '*.cc' -print0 \
- | xargs -0 tools/distrib/run_clang_tidy.py "$@"
+# run clang tidy for all source files
+cat compile_commands.json | jq -r '.[].file' \
+ | grep -E "(^src/core/|^src/cpp/|^test/core/|^test/cpp/)" \
+ | grep -v -E "/upb-generated/|/upbdefs-generated/" \
+ | sort \
+ | xargs tools/distrib/run_clang_tidy.py "$@"
ADD version.txt version.txt
# Install tools needed for building protoc.
-RUN apt-get update && apt-get -y install libgflags-dev libgtest-dev
+RUN apt-get update && apt-get -y install libgtest-dev
# Get the protobuf source from GitHub.
RUN mkdir -p /var/local/git
RUN apt-get update && apt-get install -y \
autoconf \
libtool \
- libgflags-dev \
libgtest-dev \
&& apt-get clean
RUN curl https://bootstrap.pypa.io/get-pip.py | python2.7
RUN pip install --upgrade pip==19.3.1
RUN pip install virtualenv==16.7.9
-RUN pip install futures==2.2.0 enum34==1.0.4 protobuf==3.5.2.post1 six==1.10.0 twisted==17.5.0
+RUN pip install futures==2.2.0 enum34==1.0.4 protobuf==3.5.2.post1 six==1.15.0 twisted==17.5.0
#================
# C# dependencies
RUN curl https://bootstrap.pypa.io/get-pip.py | python2.7
RUN pip install --upgrade pip==19.3.1
RUN pip install virtualenv==16.7.9
-RUN pip install futures==2.2.0 enum34==1.0.4 protobuf==3.5.2.post1 six==1.10.0 twisted==17.5.0
+RUN pip install futures==2.2.0 enum34==1.0.4 protobuf==3.5.2.post1 six==1.15.0 twisted==17.5.0
#================
# C# dependencies
RUN curl https://bootstrap.pypa.io/get-pip.py | python2.7
RUN pip install --upgrade pip==19.3.1
RUN pip install virtualenv==16.7.9
-RUN pip install futures==2.2.0 enum34==1.0.4 protobuf==3.5.2.post1 six==1.10.0 twisted==17.5.0
+RUN pip install futures==2.2.0 enum34==1.0.4 protobuf==3.5.2.post1 six==1.15.0 twisted==17.5.0
#=================
# C++ dependencies
# See the License for the specific language governing permissions and
# limitations under the License.
-FROM google/dart:2.7
+FROM google/dart:2.10
# Define the default command.
CMD ["bash"]
RUN curl https://bootstrap.pypa.io/get-pip.py | python2.7
RUN pip install --upgrade pip==19.3.1
RUN pip install virtualenv==16.7.9
-RUN pip install futures==2.2.0 enum34==1.0.4 protobuf==3.5.2.post1 six==1.10.0 twisted==17.5.0
+RUN pip install futures==2.2.0 enum34==1.0.4 protobuf==3.5.2.post1 six==1.15.0 twisted==17.5.0
# Define the default command.
CMD ["bash"]
# Builds Go interop server and client in a base image.
set -e
+# Turn on support for Go modules.
+export GO111MODULE=on
+
# Clone just the grpc-go source code without any dependencies.
# We are cloning from a local git repo that contains the right revision
# to test instead of using "go get" to download from Github directly.
git clone --recursive /var/local/jenkins/grpc-go src/google.golang.org/grpc
-# Get all gRPC Go dependencies
-(cd src/google.golang.org/grpc && make deps && make testdeps)
-
# copy service account keys if available
cp -r /var/local/jenkins/service_account $HOME || true
RUN curl https://bootstrap.pypa.io/get-pip.py | python2.7
RUN pip install --upgrade pip==19.3.1
RUN pip install virtualenv==16.7.9
-RUN pip install futures==2.2.0 enum34==1.0.4 protobuf==3.5.2.post1 six==1.10.0 twisted==17.5.0
+RUN pip install futures==2.2.0 enum34==1.0.4 protobuf==3.5.2.post1 six==1.15.0 twisted==17.5.0
# Define the default command.
CMD ["bash"]
# Builds Go interop server and client in a base image.
set -e
+# Turn on support for Go modules.
+export GO111MODULE=on
+
# Clone just the grpc-go source code without any dependencies.
# We are cloning from a local git repo that contains the right revision
# to test instead of using "go get" to download from Github directly.
git clone --recursive /var/local/jenkins/grpc-go src/google.golang.org/grpc
-# Get all gRPC Go dependencies
-(cd src/google.golang.org/grpc && make deps && make testdeps)
-
# copy service account keys if available
cp -r /var/local/jenkins/service_account $HOME || true
+++ /dev/null
-# Copyright 2017 gRPC authors.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-FROM golang:1.7
-
-# Using login shell removes Go from path, so we add it.
-RUN ln -s /usr/local/go/bin/go /usr/local/bin
-
-#====================
-# Python dependencies
-
-# Install dependencies
-
-RUN apt-get update && apt-get install -y \
- python-all-dev \
- python3-all-dev \
- python-setuptools
-
-# Install Python packages from PyPI
-RUN curl https://bootstrap.pypa.io/get-pip.py | python2.7
-RUN pip install --upgrade pip==19.3.1
-RUN pip install virtualenv==16.7.9
-RUN pip install futures==2.2.0 enum34==1.0.4 protobuf==3.5.2.post1 six==1.10.0 twisted==17.5.0
-
-# Define the default command.
-CMD ["bash"]
+++ /dev/null
-#!/bin/bash
-# Copyright 2015 gRPC authors.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-# Builds Go interop server and client in a base image.
-set -e
-
-# Clone just the grpc-go source code without any dependencies.
-# We are cloning from a local git repo that contains the right revision
-# to test instead of using "go get" to download from Github directly.
-git clone --recursive /var/local/jenkins/grpc-go src/google.golang.org/grpc
-
-# Get all gRPC Go dependencies
-(cd src/google.golang.org/grpc && make deps && make testdeps)
-
-# copy service account keys if available
-cp -r /var/local/jenkins/service_account $HOME || true
-
-# Build the interop client and server
-(cd src/google.golang.org/grpc/interop/client && go install)
-(cd src/google.golang.org/grpc/interop/server && go install)
-
RUN curl https://bootstrap.pypa.io/get-pip.py | python2.7
RUN pip install --upgrade pip==19.3.1
RUN pip install virtualenv==16.7.9
-RUN pip install futures==2.2.0 enum34==1.0.4 protobuf==3.5.2.post1 six==1.10.0 twisted==17.5.0
+RUN pip install futures==2.2.0 enum34==1.0.4 protobuf==3.5.2.post1 six==1.15.0 twisted==17.5.0
# Define the default command.
CMD ["bash"]
RUN curl https://bootstrap.pypa.io/get-pip.py | python2.7
RUN pip install --upgrade pip==19.3.1
RUN pip install virtualenv==16.7.9
-RUN pip install futures==2.2.0 enum34==1.0.4 protobuf==3.5.2.post1 six==1.10.0 twisted==17.5.0
+RUN pip install futures==2.2.0 enum34==1.0.4 protobuf==3.5.2.post1 six==1.15.0 twisted==17.5.0
RUN pip install twisted h2==2.6.1 hyper
RUN curl https://bootstrap.pypa.io/get-pip.py | python2.7
RUN pip install --upgrade pip==19.3.1
RUN pip install virtualenv==16.7.9
-RUN pip install futures==2.2.0 enum34==1.0.4 protobuf==3.5.2.post1 six==1.10.0 twisted==17.5.0
+RUN pip install futures==2.2.0 enum34==1.0.4 protobuf==3.5.2.post1 six==1.15.0 twisted==17.5.0
#==================
# Node dependencies
RUN curl https://bootstrap.pypa.io/get-pip.py | python2.7
RUN pip install --upgrade pip==19.3.1
RUN pip install virtualenv==16.7.9
-RUN pip install futures==2.2.0 enum34==1.0.4 protobuf==3.5.2.post1 six==1.10.0 twisted==17.5.0
+RUN pip install futures==2.2.0 enum34==1.0.4 protobuf==3.5.2.post1 six==1.15.0 twisted==17.5.0
#==================
# Ruby dependencies
# Install Python packages from PyPI
RUN pip install --upgrade pip==19.3.1
RUN pip install virtualenv
-RUN pip install futures==2.2.0 enum34==1.0.4 protobuf==3.5.2.post1 six==1.10.0 twisted==17.5.0
+RUN pip install futures==2.2.0 enum34==1.0.4 protobuf==3.5.2.post1 six==1.15.0 twisted==17.5.0
# Define the default command.
CMD ["bash"]
RUN curl https://bootstrap.pypa.io/get-pip.py | python2.7
RUN pip install --upgrade pip==19.3.1
RUN pip install virtualenv==16.7.9
-RUN pip install futures==2.2.0 enum34==1.0.4 protobuf==3.5.2.post1 six==1.10.0 twisted==17.5.0
+RUN pip install futures==2.2.0 enum34==1.0.4 protobuf==3.5.2.post1 six==1.15.0 twisted==17.5.0
#=================
RUN curl https://bootstrap.pypa.io/get-pip.py | python2.7
RUN pip install --upgrade pip==19.3.1
RUN pip install virtualenv==16.7.9
-RUN pip install futures==2.2.0 enum34==1.0.4 protobuf==3.5.2.post1 six==1.10.0 twisted==17.5.0
+RUN pip install futures==2.2.0 enum34==1.0.4 protobuf==3.5.2.post1 six==1.15.0 twisted==17.5.0
# Google Cloud platform API libraries
RUN pip install --upgrade google-api-python-client oauth2client
# Install Python packages from PyPI
RUN pip install --upgrade pip==19.3.1
RUN pip install virtualenv
-RUN pip install futures==2.2.0 enum34==1.0.4 protobuf==3.5.0.post1 six==1.10.0 twisted==17.5.0
+RUN pip install futures==2.2.0 enum34==1.0.4 protobuf==3.5.0.post1 six==1.15.0 twisted==17.5.0
# Google Cloud platform API libraries
RUN pip install --upgrade google-api-python-client
-# Install gflags
-RUN git clone https://github.com/gflags/gflags.git && cd gflags && git checkout v2.2.0
-RUN cd gflags && cmake . && make && make install
-RUN ln -s /usr/local/include/gflags /usr/include/gflags
-
RUN mkdir /var/local/jenkins
RUN curl https://bootstrap.pypa.io/get-pip.py | python2.7
RUN pip install --upgrade pip==19.3.1
RUN pip install virtualenv==16.7.9
-RUN pip install futures==2.2.0 enum34==1.0.4 protobuf==3.5.2.post1 six==1.10.0 twisted==17.5.0
+RUN pip install futures==2.2.0 enum34==1.0.4 protobuf==3.5.2.post1 six==1.15.0 twisted==17.5.0
# Google Cloud platform API libraries
RUN pip install --upgrade google-api-python-client oauth2client
RUN curl https://bootstrap.pypa.io/get-pip.py | python2.7
RUN pip install --upgrade pip==19.3.1
RUN pip install virtualenv==16.7.9
-RUN pip install futures==2.2.0 enum34==1.0.4 protobuf==3.5.2.post1 six==1.10.0 twisted==17.5.0
+RUN pip install futures==2.2.0 enum34==1.0.4 protobuf==3.5.2.post1 six==1.15.0 twisted==17.5.0
# Google Cloud platform API libraries
RUN pip install --upgrade google-api-python-client oauth2client
RUN curl https://bootstrap.pypa.io/get-pip.py | python2.7
RUN pip install --upgrade pip==19.3.1
RUN pip install virtualenv==16.7.9
-RUN pip install futures==2.2.0 enum34==1.0.4 protobuf==3.5.2.post1 six==1.10.0 twisted==17.5.0
+RUN pip install futures==2.2.0 enum34==1.0.4 protobuf==3.5.2.post1 six==1.15.0 twisted==17.5.0
# Google Cloud platform API libraries
RUN pip install --upgrade google-api-python-client oauth2client
RUN curl https://bootstrap.pypa.io/get-pip.py | python2.7
RUN pip install --upgrade pip==19.3.1
RUN pip install virtualenv==16.7.9
-RUN pip install futures==2.2.0 enum34==1.0.4 protobuf==3.5.2.post1 six==1.10.0 twisted==17.5.0
+RUN pip install futures==2.2.0 enum34==1.0.4 protobuf==3.5.2.post1 six==1.15.0 twisted==17.5.0
# Google Cloud platform API libraries
RUN pip install --upgrade google-api-python-client oauth2client
RUN curl https://bootstrap.pypa.io/get-pip.py | python2.7
RUN pip install --upgrade pip==19.3.1
RUN pip install virtualenv==16.7.9
-RUN pip install futures==2.2.0 enum34==1.0.4 protobuf==3.5.2.post1 six==1.10.0 twisted==17.5.0
+RUN pip install futures==2.2.0 enum34==1.0.4 protobuf==3.5.2.post1 six==1.15.0 twisted==17.5.0
# Google Cloud platform API libraries
RUN pip install --upgrade google-api-python-client oauth2client
RUN curl https://bootstrap.pypa.io/get-pip.py | python2.7
RUN pip install --upgrade pip==19.3.1
RUN pip install virtualenv==16.7.9
-RUN pip install futures==2.2.0 enum34==1.0.4 protobuf==3.5.2.post1 six==1.10.0 twisted==17.5.0
+RUN pip install futures==2.2.0 enum34==1.0.4 protobuf==3.5.2.post1 six==1.15.0 twisted==17.5.0
# Google Cloud platform API libraries
RUN pip install --upgrade google-api-python-client oauth2client
RUN curl https://bootstrap.pypa.io/get-pip.py | python2.7
RUN pip install --upgrade pip==19.3.1
RUN pip install virtualenv==16.7.9
-RUN pip install futures==2.2.0 enum34==1.0.4 protobuf==3.5.2.post1 six==1.10.0 twisted==17.5.0
+RUN pip install futures==2.2.0 enum34==1.0.4 protobuf==3.5.2.post1 six==1.15.0 twisted==17.5.0
# Google Cloud platform API libraries
RUN pip install --upgrade google-api-python-client oauth2client
RUN curl https://bootstrap.pypa.io/get-pip.py | python2.7
RUN pip install --upgrade pip==19.3.1
RUN pip install virtualenv==16.7.9
-RUN pip install futures==2.2.0 enum34==1.0.4 protobuf==3.5.2.post1 six==1.10.0 twisted==17.5.0
+RUN pip install futures==2.2.0 enum34==1.0.4 protobuf==3.5.2.post1 six==1.15.0 twisted==17.5.0
RUN curl -sS https://getcomposer.org/installer | php
RUN mv composer.phar /usr/local/bin/composer
RUN curl https://bootstrap.pypa.io/get-pip.py | python2.7
RUN pip install --upgrade pip==19.3.1
RUN pip install virtualenv==16.7.9
-RUN pip install futures==2.2.0 enum34==1.0.4 protobuf==3.5.2.post1 six==1.10.0 twisted==17.5.0
+RUN pip install futures==2.2.0 enum34==1.0.4 protobuf==3.5.2.post1 six==1.15.0 twisted==17.5.0
# Google Cloud platform API libraries
RUN pip install --upgrade google-api-python-client oauth2client
# Install Python packages from PyPI
RUN pip install --upgrade pip==19.3.1
RUN pip install virtualenv
-RUN pip install futures==2.2.0 enum34==1.0.4 protobuf==3.5.0.post1 six==1.10.0
+RUN pip install futures==2.2.0 enum34==1.0.4 protobuf==3.5.0.post1 six==1.15.0
# Google Cloud platform API libraries
RUN pip install --upgrade google-api-python-client oauth2client
RUN curl https://bootstrap.pypa.io/get-pip.py | python2.7
RUN pip install --upgrade pip==19.3.1
RUN pip install virtualenv==16.7.9
-RUN pip install futures==2.2.0 enum34==1.0.4 protobuf==3.5.2.post1 six==1.10.0 twisted==17.5.0
+RUN pip install futures==2.2.0 enum34==1.0.4 protobuf==3.5.2.post1 six==1.15.0 twisted==17.5.0
# Google Cloud platform API libraries
RUN pip install --upgrade google-api-python-client oauth2client
RUN python2 -m pip install simplejson mako virtualenv==16.7.9 lxml
RUN python3 -m pip install simplejson mako virtualenv==16.7.9 lxml
-# Install clang & clang-format
-RUN apt-get install -y clang clang-format
-
-# Install clang-tidy 6.0
-# This is because clang-tidy 7.0 started treating compiler errors as tidy errors
-# and there are a couple of files which are not properly compiled via tidy so it
-# should be using 6.0 version until all compilation errors are addressed.
-RUN apt-get install -y clang-tidy-6.0
-ENV CLANG_TIDY=clang-tidy-6.0
+# Add buster-backports for more recent clang packages
+RUN echo "deb http://deb.debian.org/debian buster-backports main" | tee /etc/apt/sources.list.d/buster-backports.list
+
+# Install clang, clang-format, and clang-tidy
+RUN apt-get update && apt-get install -y clang clang-format-8 clang-tidy-8 jq
+ENV CLANG_FORMAT=clang-format-8
+ENV CLANG_TIDY=clang-tidy-8
#========================
# could be handy for archiving the generated documentation or if some version
# control system is used.
-PROJECT_NUMBER = 1.33.2
+PROJECT_NUMBER = 1.34.0
# Using the PROJECT_BRIEF tag one can provide an optional one line description
# for a project that appears at the top of each page and should give viewer a
include/grpcpp/security/auth_metadata_processor.h \
include/grpcpp/security/credentials.h \
include/grpcpp/security/server_credentials.h \
+include/grpcpp/security/tls_certificate_provider.h \
include/grpcpp/security/tls_credentials_options.h \
include/grpcpp/server.h \
include/grpcpp/server_builder.h \
# could be handy for archiving the generated documentation or if some version
# control system is used.
-PROJECT_NUMBER = 1.33.2
+PROJECT_NUMBER = 1.34.0
# Using the PROJECT_BRIEF tag one can provide an optional one line description
# for a project that appears at the top of each page and should give viewer a
include/grpcpp/security/auth_metadata_processor.h \
include/grpcpp/security/credentials.h \
include/grpcpp/security/server_credentials.h \
+include/grpcpp/security/tls_certificate_provider.h \
include/grpcpp/security/tls_credentials_options.h \
include/grpcpp/server.h \
include/grpcpp/server_builder.h \
src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc \
src/core/ext/filters/client_channel/lb_policy/xds/cds.cc \
src/core/ext/filters/client_channel/lb_policy/xds/eds.cc \
-src/core/ext/filters/client_channel/lb_policy/xds/eds_drop.cc \
src/core/ext/filters/client_channel/lb_policy/xds/xds.h \
+src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc \
src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc \
src/core/ext/filters/client_channel/lb_policy_factory.h \
src/core/ext/filters/client_channel/lb_policy_registry.cc \
src/core/ext/upb-generated/google/api/http.upb.h \
src/core/ext/upb-generated/google/protobuf/any.upb.c \
src/core/ext/upb-generated/google/protobuf/any.upb.h \
-src/core/ext/upb-generated/google/protobuf/descriptor.upb.c \
-src/core/ext/upb-generated/google/protobuf/descriptor.upb.h \
src/core/ext/upb-generated/google/protobuf/duration.upb.c \
src/core/ext/upb-generated/google/protobuf/duration.upb.h \
src/core/ext/upb-generated/google/protobuf/empty.upb.c \
src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.h \
src/core/ext/upb-generated/validate/validate.upb.c \
src/core/ext/upb-generated/validate/validate.upb.h \
+src/core/ext/upbdefs-generated/envoy/annotations/deprecation.upbdefs.c \
+src/core/ext/upbdefs-generated/envoy/annotations/deprecation.upbdefs.h \
+src/core/ext/upbdefs-generated/envoy/annotations/resource.upbdefs.c \
+src/core/ext/upbdefs-generated/envoy/annotations/resource.upbdefs.h \
+src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.c \
+src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.h \
+src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.c \
+src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.h \
+src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c \
+src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.h \
+src/core/ext/upbdefs-generated/envoy/config/cluster/v3/filter.upbdefs.c \
+src/core/ext/upbdefs-generated/envoy/config/cluster/v3/filter.upbdefs.h \
+src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.c \
+src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.h \
+src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.c \
+src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.h \
+src/core/ext/upbdefs-generated/envoy/config/core/v3/backoff.upbdefs.c \
+src/core/ext/upbdefs-generated/envoy/config/core/v3/backoff.upbdefs.h \
+src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.c \
+src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.h \
+src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.c \
+src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.h \
+src/core/ext/upbdefs-generated/envoy/config/core/v3/event_service_config.upbdefs.c \
+src/core/ext/upbdefs-generated/envoy/config/core/v3/event_service_config.upbdefs.h \
+src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.c \
+src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.h \
+src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_service.upbdefs.c \
+src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_service.upbdefs.h \
+src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.c \
+src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.h \
+src/core/ext/upbdefs-generated/envoy/config/core/v3/http_uri.upbdefs.c \
+src/core/ext/upbdefs-generated/envoy/config/core/v3/http_uri.upbdefs.h \
+src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c \
+src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.h \
+src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.c \
+src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.h \
+src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.c \
+src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.h \
+src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.c \
+src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.h \
+src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.c \
+src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.h \
+src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.c \
+src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.h \
+src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/load_report.upbdefs.c \
+src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/load_report.upbdefs.h \
+src/core/ext/upbdefs-generated/envoy/config/listener/v3/api_listener.upbdefs.c \
+src/core/ext/upbdefs-generated/envoy/config/listener/v3/api_listener.upbdefs.h \
+src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.c \
+src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.h \
+src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.c \
+src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.h \
+src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.c \
+src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.h \
+src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.c \
+src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.h \
+src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c \
+src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.h \
+src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.c \
+src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.h \
+src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.c \
+src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.h \
+src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c \
+src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.h \
+src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.c \
+src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.h \
+src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c \
+src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.h \
+src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.c \
+src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.h \
+src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c \
+src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.h \
+src/core/ext/upbdefs-generated/envoy/service/cluster/v3/cds.upbdefs.c \
+src/core/ext/upbdefs-generated/envoy/service/cluster/v3/cds.upbdefs.h \
+src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.c \
+src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.h \
+src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.c \
+src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.h \
+src/core/ext/upbdefs-generated/envoy/service/endpoint/v3/eds.upbdefs.c \
+src/core/ext/upbdefs-generated/envoy/service/endpoint/v3/eds.upbdefs.h \
+src/core/ext/upbdefs-generated/envoy/service/listener/v3/lds.upbdefs.c \
+src/core/ext/upbdefs-generated/envoy/service/listener/v3/lds.upbdefs.h \
+src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.c \
+src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.h \
+src/core/ext/upbdefs-generated/envoy/service/route/v3/rds.upbdefs.c \
+src/core/ext/upbdefs-generated/envoy/service/route/v3/rds.upbdefs.h \
+src/core/ext/upbdefs-generated/envoy/service/route/v3/srds.upbdefs.c \
+src/core/ext/upbdefs-generated/envoy/service/route/v3/srds.upbdefs.h \
+src/core/ext/upbdefs-generated/envoy/type/matcher/v3/metadata.upbdefs.c \
+src/core/ext/upbdefs-generated/envoy/type/matcher/v3/metadata.upbdefs.h \
+src/core/ext/upbdefs-generated/envoy/type/matcher/v3/number.upbdefs.c \
+src/core/ext/upbdefs-generated/envoy/type/matcher/v3/number.upbdefs.h \
+src/core/ext/upbdefs-generated/envoy/type/matcher/v3/path.upbdefs.c \
+src/core/ext/upbdefs-generated/envoy/type/matcher/v3/path.upbdefs.h \
+src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.c \
+src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.h \
+src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.c \
+src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.h \
+src/core/ext/upbdefs-generated/envoy/type/matcher/v3/value.upbdefs.c \
+src/core/ext/upbdefs-generated/envoy/type/matcher/v3/value.upbdefs.h \
+src/core/ext/upbdefs-generated/envoy/type/metadata/v3/metadata.upbdefs.c \
+src/core/ext/upbdefs-generated/envoy/type/metadata/v3/metadata.upbdefs.h \
+src/core/ext/upbdefs-generated/envoy/type/tracing/v3/custom_tag.upbdefs.c \
+src/core/ext/upbdefs-generated/envoy/type/tracing/v3/custom_tag.upbdefs.h \
+src/core/ext/upbdefs-generated/envoy/type/v3/http.upbdefs.c \
+src/core/ext/upbdefs-generated/envoy/type/v3/http.upbdefs.h \
+src/core/ext/upbdefs-generated/envoy/type/v3/percent.upbdefs.c \
+src/core/ext/upbdefs-generated/envoy/type/v3/percent.upbdefs.h \
+src/core/ext/upbdefs-generated/envoy/type/v3/range.upbdefs.c \
+src/core/ext/upbdefs-generated/envoy/type/v3/range.upbdefs.h \
+src/core/ext/upbdefs-generated/envoy/type/v3/semantic_version.upbdefs.c \
+src/core/ext/upbdefs-generated/envoy/type/v3/semantic_version.upbdefs.h \
+src/core/ext/upbdefs-generated/google/api/annotations.upbdefs.c \
+src/core/ext/upbdefs-generated/google/api/annotations.upbdefs.h \
+src/core/ext/upbdefs-generated/google/api/http.upbdefs.c \
+src/core/ext/upbdefs-generated/google/api/http.upbdefs.h \
+src/core/ext/upbdefs-generated/google/protobuf/any.upbdefs.c \
+src/core/ext/upbdefs-generated/google/protobuf/any.upbdefs.h \
+src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.c \
+src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.h \
+src/core/ext/upbdefs-generated/google/protobuf/duration.upbdefs.c \
+src/core/ext/upbdefs-generated/google/protobuf/duration.upbdefs.h \
+src/core/ext/upbdefs-generated/google/protobuf/empty.upbdefs.c \
+src/core/ext/upbdefs-generated/google/protobuf/empty.upbdefs.h \
+src/core/ext/upbdefs-generated/google/protobuf/struct.upbdefs.c \
+src/core/ext/upbdefs-generated/google/protobuf/struct.upbdefs.h \
+src/core/ext/upbdefs-generated/google/protobuf/timestamp.upbdefs.c \
+src/core/ext/upbdefs-generated/google/protobuf/timestamp.upbdefs.h \
+src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.c \
+src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.h \
+src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.c \
+src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.h \
+src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.c \
+src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.h \
+src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.c \
+src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.h \
+src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.c \
+src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.h \
+src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.c \
+src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.h \
+src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.c \
+src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.h \
+src/core/ext/upbdefs-generated/udpa/core/v1/authority.upbdefs.c \
+src/core/ext/upbdefs-generated/udpa/core/v1/authority.upbdefs.h \
+src/core/ext/upbdefs-generated/udpa/core/v1/collection_entry.upbdefs.c \
+src/core/ext/upbdefs-generated/udpa/core/v1/collection_entry.upbdefs.h \
+src/core/ext/upbdefs-generated/udpa/core/v1/context_params.upbdefs.c \
+src/core/ext/upbdefs-generated/udpa/core/v1/context_params.upbdefs.h \
+src/core/ext/upbdefs-generated/udpa/core/v1/resource.upbdefs.c \
+src/core/ext/upbdefs-generated/udpa/core/v1/resource.upbdefs.h \
+src/core/ext/upbdefs-generated/udpa/core/v1/resource_locator.upbdefs.c \
+src/core/ext/upbdefs-generated/udpa/core/v1/resource_locator.upbdefs.h \
+src/core/ext/upbdefs-generated/udpa/core/v1/resource_name.upbdefs.c \
+src/core/ext/upbdefs-generated/udpa/core/v1/resource_name.upbdefs.h \
+src/core/ext/upbdefs-generated/validate/validate.upbdefs.c \
+src/core/ext/upbdefs-generated/validate/validate.upbdefs.h \
src/core/ext/xds/certificate_provider_factory.h \
src/core/ext/xds/certificate_provider_registry.cc \
src/core/ext/xds/certificate_provider_registry.h \
+src/core/ext/xds/certificate_provider_store.cc \
src/core/ext/xds/certificate_provider_store.h \
+src/core/ext/xds/file_watcher_certificate_provider_factory.cc \
+src/core/ext/xds/file_watcher_certificate_provider_factory.h \
src/core/ext/xds/google_mesh_ca_certificate_provider_factory.cc \
src/core/ext/xds/google_mesh_ca_certificate_provider_factory.h \
src/core/ext/xds/xds_api.cc \
src/core/ext/xds/xds_api.h \
src/core/ext/xds/xds_bootstrap.cc \
src/core/ext/xds/xds_bootstrap.h \
+src/core/ext/xds/xds_certificate_provider.cc \
+src/core/ext/xds/xds_certificate_provider.h \
src/core/ext/xds/xds_channel_args.h \
src/core/ext/xds/xds_client.cc \
src/core/ext/xds/xds_client.h \
src/core/lib/gpr/tls_msvc.h \
src/core/lib/gpr/tls_pthread.cc \
src/core/lib/gpr/tls_pthread.h \
+src/core/lib/gpr/tls_stdcpp.h \
src/core/lib/gpr/tmpfile.h \
src/core/lib/gpr/tmpfile_msys.cc \
src/core/lib/gpr/tmpfile_posix.cc \
src/core/lib/gprpp/atomic.h \
src/core/lib/gprpp/debug_location.h \
src/core/lib/gprpp/dual_ref_counted.h \
+src/core/lib/gprpp/examine_stack.cc \
+src/core/lib/gprpp/examine_stack.h \
src/core/lib/gprpp/fork.cc \
src/core/lib/gprpp/fork.h \
src/core/lib/gprpp/global_config.h \
src/core/lib/gprpp/orphanable.h \
src/core/lib/gprpp/ref_counted.h \
src/core/lib/gprpp/ref_counted_ptr.h \
+src/core/lib/gprpp/stat.h \
+src/core/lib/gprpp/stat_posix.cc \
+src/core/lib/gprpp/stat_windows.cc \
src/core/lib/gprpp/sync.h \
src/core/lib/gprpp/thd.h \
src/core/lib/gprpp/thd_posix.cc \
src/core/lib/security/authorization/mock_cel/cel_value.h \
src/core/lib/security/authorization/mock_cel/evaluator_core.h \
src/core/lib/security/authorization/mock_cel/flat_expr_builder.h \
-src/core/lib/security/authorization/mock_cel/statusor.h \
-src/core/lib/security/certificate_provider.h \
src/core/lib/security/context/security_context.cc \
src/core/lib/security/context/security_context.h \
src/core/lib/security/credentials/alts/alts_credentials.cc \
src/core/lib/security/credentials/credentials.cc \
src/core/lib/security/credentials/credentials.h \
src/core/lib/security/credentials/credentials_metadata.cc \
+src/core/lib/security/credentials/external/aws_request_signer.cc \
+src/core/lib/security/credentials/external/aws_request_signer.h \
+src/core/lib/security/credentials/external/external_account_credentials.cc \
+src/core/lib/security/credentials/external/external_account_credentials.h \
+src/core/lib/security/credentials/external/file_external_account_credentials.cc \
+src/core/lib/security/credentials/external/file_external_account_credentials.h \
+src/core/lib/security/credentials/external/url_external_account_credentials.cc \
+src/core/lib/security/credentials/external/url_external_account_credentials.h \
src/core/lib/security/credentials/fake/fake_credentials.cc \
src/core/lib/security/credentials/fake/fake_credentials.h \
src/core/lib/security/credentials/google_default/credentials_generic.cc \
src/core/lib/security/credentials/google_default/google_default_credentials.h \
src/core/lib/security/credentials/iam/iam_credentials.cc \
src/core/lib/security/credentials/iam/iam_credentials.h \
+src/core/lib/security/credentials/insecure/insecure_credentials.cc \
src/core/lib/security/credentials/jwt/json_token.cc \
src/core/lib/security/credentials/jwt/json_token.h \
src/core/lib/security/credentials/jwt/jwt_credentials.cc \
src/core/lib/security/credentials/ssl/ssl_credentials.h \
src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc \
src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h \
+src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc \
+src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h \
src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc \
src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h \
src/core/lib/security/credentials/tls/tls_credentials.cc \
src/core/lib/security/security_connector/alts/alts_security_connector.h \
src/core/lib/security/security_connector/fake/fake_security_connector.cc \
src/core/lib/security/security_connector/fake/fake_security_connector.h \
+src/core/lib/security/security_connector/insecure/insecure_security_connector.cc \
+src/core/lib/security/security_connector/insecure/insecure_security_connector.h \
src/core/lib/security/security_connector/load_system_roots.h \
src/core/lib/security/security_connector/load_system_roots_fallback.cc \
src/core/lib/security/security_connector/load_system_roots_linux.cc \
src/cpp/client/insecure_credentials.cc \
src/cpp/client/secure_credentials.cc \
src/cpp/client/secure_credentials.h \
+src/cpp/client/xds_credentials.cc \
src/cpp/codegen/codegen_init.cc \
src/cpp/common/alarm.cc \
src/cpp/common/auth_property_iterator.cc \
src/cpp/common/secure_auth_context.h \
src/cpp/common/secure_channel_arguments.cc \
src/cpp/common/secure_create_auth_context.cc \
+src/cpp/common/tls_certificate_provider.cc \
src/cpp/common/tls_credentials_options.cc \
src/cpp/common/tls_credentials_options_util.cc \
src/cpp/common/tls_credentials_options_util.h \
# could be handy for archiving the generated documentation or if some version
# control system is used.
-PROJECT_NUMBER = 13.0.0
+PROJECT_NUMBER = 14.0.0
# Using the PROJECT_BRIEF tag one can provide an optional one line description
# for a project that appears at the top of each page and should give viewer a
# could be handy for archiving the generated documentation or if some version
# control system is used.
-PROJECT_NUMBER = 13.0.0
+PROJECT_NUMBER = 14.0.0
# Using the PROJECT_BRIEF tag one can provide an optional one line description
# for a project that appears at the top of each page and should give viewer a
src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc \
src/core/ext/filters/client_channel/lb_policy/xds/cds.cc \
src/core/ext/filters/client_channel/lb_policy/xds/eds.cc \
-src/core/ext/filters/client_channel/lb_policy/xds/eds_drop.cc \
src/core/ext/filters/client_channel/lb_policy/xds/xds.h \
+src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc \
src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc \
src/core/ext/filters/client_channel/lb_policy_factory.h \
src/core/ext/filters/client_channel/lb_policy_registry.cc \
src/core/ext/upb-generated/google/api/http.upb.h \
src/core/ext/upb-generated/google/protobuf/any.upb.c \
src/core/ext/upb-generated/google/protobuf/any.upb.h \
-src/core/ext/upb-generated/google/protobuf/descriptor.upb.c \
-src/core/ext/upb-generated/google/protobuf/descriptor.upb.h \
src/core/ext/upb-generated/google/protobuf/duration.upb.c \
src/core/ext/upb-generated/google/protobuf/duration.upb.h \
src/core/ext/upb-generated/google/protobuf/empty.upb.c \
src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.h \
src/core/ext/upb-generated/validate/validate.upb.c \
src/core/ext/upb-generated/validate/validate.upb.h \
+src/core/ext/upbdefs-generated/envoy/annotations/deprecation.upbdefs.c \
+src/core/ext/upbdefs-generated/envoy/annotations/deprecation.upbdefs.h \
+src/core/ext/upbdefs-generated/envoy/annotations/resource.upbdefs.c \
+src/core/ext/upbdefs-generated/envoy/annotations/resource.upbdefs.h \
+src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.c \
+src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.h \
+src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.c \
+src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.h \
+src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c \
+src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.h \
+src/core/ext/upbdefs-generated/envoy/config/cluster/v3/filter.upbdefs.c \
+src/core/ext/upbdefs-generated/envoy/config/cluster/v3/filter.upbdefs.h \
+src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.c \
+src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.h \
+src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.c \
+src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.h \
+src/core/ext/upbdefs-generated/envoy/config/core/v3/backoff.upbdefs.c \
+src/core/ext/upbdefs-generated/envoy/config/core/v3/backoff.upbdefs.h \
+src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.c \
+src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.h \
+src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.c \
+src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.h \
+src/core/ext/upbdefs-generated/envoy/config/core/v3/event_service_config.upbdefs.c \
+src/core/ext/upbdefs-generated/envoy/config/core/v3/event_service_config.upbdefs.h \
+src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.c \
+src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.h \
+src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_service.upbdefs.c \
+src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_service.upbdefs.h \
+src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.c \
+src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.h \
+src/core/ext/upbdefs-generated/envoy/config/core/v3/http_uri.upbdefs.c \
+src/core/ext/upbdefs-generated/envoy/config/core/v3/http_uri.upbdefs.h \
+src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c \
+src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.h \
+src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.c \
+src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.h \
+src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.c \
+src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.h \
+src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.c \
+src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.h \
+src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.c \
+src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.h \
+src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.c \
+src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.h \
+src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/load_report.upbdefs.c \
+src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/load_report.upbdefs.h \
+src/core/ext/upbdefs-generated/envoy/config/listener/v3/api_listener.upbdefs.c \
+src/core/ext/upbdefs-generated/envoy/config/listener/v3/api_listener.upbdefs.h \
+src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.c \
+src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.h \
+src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.c \
+src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.h \
+src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.c \
+src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.h \
+src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.c \
+src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.h \
+src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c \
+src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.h \
+src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.c \
+src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.h \
+src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.c \
+src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.h \
+src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c \
+src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.h \
+src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.c \
+src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.h \
+src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c \
+src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.h \
+src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.c \
+src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.h \
+src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c \
+src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.h \
+src/core/ext/upbdefs-generated/envoy/service/cluster/v3/cds.upbdefs.c \
+src/core/ext/upbdefs-generated/envoy/service/cluster/v3/cds.upbdefs.h \
+src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.c \
+src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.h \
+src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.c \
+src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.h \
+src/core/ext/upbdefs-generated/envoy/service/endpoint/v3/eds.upbdefs.c \
+src/core/ext/upbdefs-generated/envoy/service/endpoint/v3/eds.upbdefs.h \
+src/core/ext/upbdefs-generated/envoy/service/listener/v3/lds.upbdefs.c \
+src/core/ext/upbdefs-generated/envoy/service/listener/v3/lds.upbdefs.h \
+src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.c \
+src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.h \
+src/core/ext/upbdefs-generated/envoy/service/route/v3/rds.upbdefs.c \
+src/core/ext/upbdefs-generated/envoy/service/route/v3/rds.upbdefs.h \
+src/core/ext/upbdefs-generated/envoy/service/route/v3/srds.upbdefs.c \
+src/core/ext/upbdefs-generated/envoy/service/route/v3/srds.upbdefs.h \
+src/core/ext/upbdefs-generated/envoy/type/matcher/v3/metadata.upbdefs.c \
+src/core/ext/upbdefs-generated/envoy/type/matcher/v3/metadata.upbdefs.h \
+src/core/ext/upbdefs-generated/envoy/type/matcher/v3/number.upbdefs.c \
+src/core/ext/upbdefs-generated/envoy/type/matcher/v3/number.upbdefs.h \
+src/core/ext/upbdefs-generated/envoy/type/matcher/v3/path.upbdefs.c \
+src/core/ext/upbdefs-generated/envoy/type/matcher/v3/path.upbdefs.h \
+src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.c \
+src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.h \
+src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.c \
+src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.h \
+src/core/ext/upbdefs-generated/envoy/type/matcher/v3/value.upbdefs.c \
+src/core/ext/upbdefs-generated/envoy/type/matcher/v3/value.upbdefs.h \
+src/core/ext/upbdefs-generated/envoy/type/metadata/v3/metadata.upbdefs.c \
+src/core/ext/upbdefs-generated/envoy/type/metadata/v3/metadata.upbdefs.h \
+src/core/ext/upbdefs-generated/envoy/type/tracing/v3/custom_tag.upbdefs.c \
+src/core/ext/upbdefs-generated/envoy/type/tracing/v3/custom_tag.upbdefs.h \
+src/core/ext/upbdefs-generated/envoy/type/v3/http.upbdefs.c \
+src/core/ext/upbdefs-generated/envoy/type/v3/http.upbdefs.h \
+src/core/ext/upbdefs-generated/envoy/type/v3/percent.upbdefs.c \
+src/core/ext/upbdefs-generated/envoy/type/v3/percent.upbdefs.h \
+src/core/ext/upbdefs-generated/envoy/type/v3/range.upbdefs.c \
+src/core/ext/upbdefs-generated/envoy/type/v3/range.upbdefs.h \
+src/core/ext/upbdefs-generated/envoy/type/v3/semantic_version.upbdefs.c \
+src/core/ext/upbdefs-generated/envoy/type/v3/semantic_version.upbdefs.h \
+src/core/ext/upbdefs-generated/google/api/annotations.upbdefs.c \
+src/core/ext/upbdefs-generated/google/api/annotations.upbdefs.h \
+src/core/ext/upbdefs-generated/google/api/http.upbdefs.c \
+src/core/ext/upbdefs-generated/google/api/http.upbdefs.h \
+src/core/ext/upbdefs-generated/google/protobuf/any.upbdefs.c \
+src/core/ext/upbdefs-generated/google/protobuf/any.upbdefs.h \
+src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.c \
+src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.h \
+src/core/ext/upbdefs-generated/google/protobuf/duration.upbdefs.c \
+src/core/ext/upbdefs-generated/google/protobuf/duration.upbdefs.h \
+src/core/ext/upbdefs-generated/google/protobuf/empty.upbdefs.c \
+src/core/ext/upbdefs-generated/google/protobuf/empty.upbdefs.h \
+src/core/ext/upbdefs-generated/google/protobuf/struct.upbdefs.c \
+src/core/ext/upbdefs-generated/google/protobuf/struct.upbdefs.h \
+src/core/ext/upbdefs-generated/google/protobuf/timestamp.upbdefs.c \
+src/core/ext/upbdefs-generated/google/protobuf/timestamp.upbdefs.h \
+src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.c \
+src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.h \
+src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.c \
+src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.h \
+src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.c \
+src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.h \
+src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.c \
+src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.h \
+src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.c \
+src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.h \
+src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.c \
+src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.h \
+src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.c \
+src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.h \
+src/core/ext/upbdefs-generated/udpa/core/v1/authority.upbdefs.c \
+src/core/ext/upbdefs-generated/udpa/core/v1/authority.upbdefs.h \
+src/core/ext/upbdefs-generated/udpa/core/v1/collection_entry.upbdefs.c \
+src/core/ext/upbdefs-generated/udpa/core/v1/collection_entry.upbdefs.h \
+src/core/ext/upbdefs-generated/udpa/core/v1/context_params.upbdefs.c \
+src/core/ext/upbdefs-generated/udpa/core/v1/context_params.upbdefs.h \
+src/core/ext/upbdefs-generated/udpa/core/v1/resource.upbdefs.c \
+src/core/ext/upbdefs-generated/udpa/core/v1/resource.upbdefs.h \
+src/core/ext/upbdefs-generated/udpa/core/v1/resource_locator.upbdefs.c \
+src/core/ext/upbdefs-generated/udpa/core/v1/resource_locator.upbdefs.h \
+src/core/ext/upbdefs-generated/udpa/core/v1/resource_name.upbdefs.c \
+src/core/ext/upbdefs-generated/udpa/core/v1/resource_name.upbdefs.h \
+src/core/ext/upbdefs-generated/validate/validate.upbdefs.c \
+src/core/ext/upbdefs-generated/validate/validate.upbdefs.h \
src/core/ext/xds/certificate_provider_factory.h \
src/core/ext/xds/certificate_provider_registry.cc \
src/core/ext/xds/certificate_provider_registry.h \
+src/core/ext/xds/certificate_provider_store.cc \
src/core/ext/xds/certificate_provider_store.h \
+src/core/ext/xds/file_watcher_certificate_provider_factory.cc \
+src/core/ext/xds/file_watcher_certificate_provider_factory.h \
src/core/ext/xds/google_mesh_ca_certificate_provider_factory.cc \
src/core/ext/xds/google_mesh_ca_certificate_provider_factory.h \
src/core/ext/xds/xds_api.cc \
src/core/ext/xds/xds_api.h \
src/core/ext/xds/xds_bootstrap.cc \
src/core/ext/xds/xds_bootstrap.h \
+src/core/ext/xds/xds_certificate_provider.cc \
+src/core/ext/xds/xds_certificate_provider.h \
src/core/ext/xds/xds_channel_args.h \
src/core/ext/xds/xds_client.cc \
src/core/ext/xds/xds_client.h \
src/core/lib/gpr/tls_msvc.h \
src/core/lib/gpr/tls_pthread.cc \
src/core/lib/gpr/tls_pthread.h \
+src/core/lib/gpr/tls_stdcpp.h \
src/core/lib/gpr/tmpfile.h \
src/core/lib/gpr/tmpfile_msys.cc \
src/core/lib/gpr/tmpfile_posix.cc \
src/core/lib/gprpp/atomic.h \
src/core/lib/gprpp/debug_location.h \
src/core/lib/gprpp/dual_ref_counted.h \
+src/core/lib/gprpp/examine_stack.cc \
+src/core/lib/gprpp/examine_stack.h \
src/core/lib/gprpp/fork.cc \
src/core/lib/gprpp/fork.h \
src/core/lib/gprpp/global_config.h \
src/core/lib/gprpp/orphanable.h \
src/core/lib/gprpp/ref_counted.h \
src/core/lib/gprpp/ref_counted_ptr.h \
+src/core/lib/gprpp/stat.h \
+src/core/lib/gprpp/stat_posix.cc \
+src/core/lib/gprpp/stat_windows.cc \
src/core/lib/gprpp/sync.h \
src/core/lib/gprpp/thd.h \
src/core/lib/gprpp/thd_posix.cc \
src/core/lib/security/authorization/mock_cel/cel_value.h \
src/core/lib/security/authorization/mock_cel/evaluator_core.h \
src/core/lib/security/authorization/mock_cel/flat_expr_builder.h \
-src/core/lib/security/authorization/mock_cel/statusor.h \
-src/core/lib/security/certificate_provider.h \
src/core/lib/security/context/security_context.cc \
src/core/lib/security/context/security_context.h \
src/core/lib/security/credentials/alts/alts_credentials.cc \
src/core/lib/security/credentials/credentials.cc \
src/core/lib/security/credentials/credentials.h \
src/core/lib/security/credentials/credentials_metadata.cc \
+src/core/lib/security/credentials/external/aws_request_signer.cc \
+src/core/lib/security/credentials/external/aws_request_signer.h \
+src/core/lib/security/credentials/external/external_account_credentials.cc \
+src/core/lib/security/credentials/external/external_account_credentials.h \
+src/core/lib/security/credentials/external/file_external_account_credentials.cc \
+src/core/lib/security/credentials/external/file_external_account_credentials.h \
+src/core/lib/security/credentials/external/url_external_account_credentials.cc \
+src/core/lib/security/credentials/external/url_external_account_credentials.h \
src/core/lib/security/credentials/fake/fake_credentials.cc \
src/core/lib/security/credentials/fake/fake_credentials.h \
src/core/lib/security/credentials/google_default/credentials_generic.cc \
src/core/lib/security/credentials/google_default/google_default_credentials.h \
src/core/lib/security/credentials/iam/iam_credentials.cc \
src/core/lib/security/credentials/iam/iam_credentials.h \
+src/core/lib/security/credentials/insecure/insecure_credentials.cc \
src/core/lib/security/credentials/jwt/json_token.cc \
src/core/lib/security/credentials/jwt/json_token.h \
src/core/lib/security/credentials/jwt/jwt_credentials.cc \
src/core/lib/security/credentials/ssl/ssl_credentials.h \
src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc \
src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h \
+src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc \
+src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h \
src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc \
src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h \
src/core/lib/security/credentials/tls/tls_credentials.cc \
src/core/lib/security/security_connector/alts/alts_security_connector.h \
src/core/lib/security/security_connector/fake/fake_security_connector.cc \
src/core/lib/security/security_connector/fake/fake_security_connector.h \
+src/core/lib/security/security_connector/insecure/insecure_security_connector.cc \
+src/core/lib/security/security_connector/insecure/insecure_security_connector.h \
src/core/lib/security/security_connector/load_system_roots.h \
src/core/lib/security/security_connector/load_system_roots_fallback.cc \
src/core/lib/security/security_connector/load_system_roots_linux.cc \
# could be handy for archiving the generated documentation or if some version
# control system is used.
-PROJECT_NUMBER = 1.33.2
+PROJECT_NUMBER = 1.34.0
# Using the PROJECT_BRIEF tag one can provide an optional one line description
# for a project that appears at the top of each page and should give viewer a
# could be handy for archiving the generated documentation or if some version
# control system is used.
-PROJECT_NUMBER = 1.33.2
+PROJECT_NUMBER = 1.34.0
# Using the PROJECT_BRIEF tag one can provide an optional one line description
# for a project that appears at the top of each page and should give viewer a
# could be handy for archiving the generated documentation or if some version
# control system is used.
-PROJECT_NUMBER = 1.33.2
+PROJECT_NUMBER = 1.34.0
# Using the PROJECT_BRIEF tag one can provide an optional one line description
# for a project that appears at the top of each page and should give viewer a
ZONE=us-central1-b # this zone allows 32core machines
INSTANCE_NAME="${1:-grpc-kokoro-performance-server1}"
-MACHINE_TYPE=n1-standard-32
+MACHINE_TYPE=e2-standard-32
gcloud compute instances create "$INSTANCE_NAME" \
--project="$CLOUD_PROJECT" \
LATEST_PERF_WORKER_IMAGE=grpc-performance-kokoro-v5 # update if newer image exists
INSTANCE_NAME="${1:-grpc-kokoro-performance-server}"
-MACHINE_TYPE="${2:-n1-standard-32}"
+MACHINE_TYPE="${2:-e2-standard-32}"
gcloud compute instances create "$INSTANCE_NAME" \
--project="$CLOUD_PROJECT" \
INSTANCE_NAME="${USER}-windows-kokoro-debug1"
fi
-MACHINE_TYPE=n1-standard-8
+MACHINE_TYPE=e2-standard-8
TMP_DISK_NAME="$INSTANCE_NAME-temp-disk"
gcloud compute disks create "$TMP_DISK_NAME" \
--zone "$ZONE" \
--machine-type "$MACHINE_TYPE" \
--image-project google.com:kokoro \
- --image kokoro-win7build-v11-prod-debug \
+ --image kokoro-winserver2016-v2m-prod-debug \
--boot-disk-size 500 \
--boot-disk-type pd-ssd \
--tags=allow-ssh \
sudo apt-get install -y google-cloud-sdk
# C++ dependencies
-sudo apt-get install -y libgflags-dev libgtest-dev libc++-dev clang
+sudo apt-get install -y libgtest-dev libc++-dev clang
# Python dependencies
sudo pip install --upgrade pip==19.3.1
# PHP dependencies
sudo apt-get install -y php7.2 php7.2-dev php-pear unzip zlib1g-dev
-sudo wget https://phar.phpunit.de/phpunit-5.7.27.phar && \
- sudo mv phpunit-5.7.27.phar /usr/local/bin/phpunit && \
+sudo wget https://phar.phpunit.de/phpunit-8.5.8.phar && \
+ sudo mv phpunit-8.5.8.phar /usr/local/bin/phpunit && \
sudo chmod +x /usr/local/bin/phpunit
curl -sS https://getcomposer.org/installer | php
sudo mv composer.phar /usr/local/bin/composer
PythonInstallPath = "C:\Python39_32bit"
PythonInstallerHash = "4a2812db8ab9f2e522c96c7728cfcccb"
}
-# Install-Python @Python39x86Config
+Install-Python @Python39x86Config
$Python39x64Config = @{
PythonVersion = "3.9.0"
PythonInstallPath = "C:\Python39"
PythonInstallerHash = "b61a33dc28f13b561452f3089c87eb63"
}
-# Install-Python @Python39x64Config
+Install-Python @Python39x64Config
# - only add stuff that you absolutely need for your builds to work (add comment to explain why its needed)
# Add GCP credentials for BQ access
-pip install --user google-api-python-client oauth2client
+pip install --user google-api-python-client oauth2client six==1.15.0
export GOOGLE_APPLICATION_CREDENTIALS=${KOKORO_GFILE_DIR}/GrpcTesting-d0eeee2db331.json
# If this is a PR using RUN_TESTS_FLAGS var, then add flags to filter tests
if [ "${PREPARE_BUILD_INSTALL_DEPS_RUBY}" == "true" ]
then
brew update
+
+ # The latest gnupg version removes support for macos high sierra which would break ruby installation,
+ # so we need to pin a version before that. Unfortunately Homebrew is one of the most pathetic package
+ # managers out there and there is simply no way to install a specific version of gnupg.
+ # Instead, we force homebrew to use a slightly old version of the homebrew-core
+ # formula repository (before things got broken for us), so the homebrew formulas installed later
+ # will still work with MacOS high-sierra.
+ # Also https://github.com/Homebrew/homebrew-core/blob/07f2f9aab198ce369e24621b7c7224f63ffd27fb/Formula/gnupg.rb
+ # TODO(jtattermusch): migrate to MacOS mojave as soon as possible to avoid this ugly hack.
+ (cd /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core; git checkout 07f2f9aab198ce369e24621b7c7224f63ffd27fb)
+ # disable automatic brew update on "brew install" (which would ruin our explicit checkout)
+ export HOMEBREW_NO_AUTO_UPDATE=1
# special case fix for https://github.com/grpc/grpc/issues/23027
rm -f /usr/local/bin/gpg
rm -f /usr/local/bin/gpgconf
rm -f /usr/local/bin/gpgsm
# end https://github.com/grpc/grpc/issues/23027
brew cleanup
+
set +ex
source $HOME/.rvm/scripts/rvm
set -ex
for RUBY_VERSION in 2.5.0 2.7.0; do
+ # TODO(jtattermusch): find a better way of installing ruby, as the current way installs a huge number
+ # of completely unnecessary brew packages which 1. takes long time 2. is very prone to errors
+ # 3. generates a ton of logs making it super hard to debug when it breaks.
rvm --debug requirements "ruby-${RUBY_VERSION}"
time rvm install "$RUBY_VERSION"
time gem install bundler -v 1.17.3 --no-document
then
# cocoapods
export LANG=en_US.UTF-8
+ time gem install cocoapods --version 1.7.2 --no-document
# pre-fetch cocoapods master repo's most recent commit only
mkdir -p ~/.cocoapods/repos
time git clone --depth 1 https://github.com/CocoaPods/Specs.git ~/.cocoapods/repos/master
- # set xcode version for Obj-C tests
- sudo xcode-select -switch /Applications/Xcode_9.2.app/Contents/Developer/
-
# Needed for ios-binary-size
time pip install --user pyyaml pyjwt cryptography requests
then
# python
time pip install --user virtualenv
- time pip install --user --upgrade Mako six tox setuptools==44.1.1 twisted pyyaml pyjwt cryptography requests
+ time pip install --user --upgrade Mako tox setuptools==44.1.1 twisted pyyaml pyjwt cryptography requests
# make sure md5sum is available (requires coreutils 8.31+)
brew update-reset
export NUGET_XMLDOC_MODE=skip
export DOTNET_SKIP_FIRST_TIME_EXPERIENCE=true
export DOTNET_CLI_TELEMETRY_OPTOUT=true
-
- # Xcode 10+ doesn't support building for i386 architecture
- sudo xcode-select -switch /Applications/Xcode_9.2.app/Contents/Developer/
fi
# PHP tests currently require using an older version of PHPUnit
powershell -File src\csharp\install_dotnet_sdk.ps1 || goto :error
set PATH=%LOCALAPPDATA%\Microsoft\dotnet;%PATH%
-@rem Install Python interpreters
-@rem NOTE(lidiz): Python installer process may live longer than expected, and
-@rem has other side effects. It needs to be installed last to reduce impact.
-powershell -File tools\internal_ci\helper_scripts\install_python_interpreters.ps1 || goto :error
-
@rem Disable some unwanted dotnet options
set NUGET_XMLDOC_MODE=skip
set DOTNET_SKIP_FIRST_TIME_EXPERIENCE=true
set DOTNET_CLI_TELEMETRY_OPTOUT=true
+@rem Only install Python interpreters if we are running Python tests
+If "%PREPARE_BUILD_INSTALL_DEPS_PYTHON%" == "true" (
+ powershell -File tools\internal_ci\helper_scripts\install_python_interpreters.ps1 || goto :error
+)
+
git submodule update --init || goto :error
goto :EOF
cd /var/local/git/grpc
bazel build :all //test/... //examples/...
+
+# TODO(jtattersmusch): Adding a build here for --define=grpc_no_xds is not ideal
+# and we should find a better place for this. Refer
+# https://github.com/grpc/grpc/pull/24536#pullrequestreview-517466531 for more
+# details.
+# Test that builds with --define=grpc_no_xds=true work.
+bazel build //test/cpp/end2end:end2end_test --define=grpc_no_xds=true
+# Test that builds that need xDS do not build with --define=grpc_no_xds=true
+EXIT_CODE=0
+bazel build //test/cpp/end2end:xds_end2end_test --define=grpc_no_xds=true || EXIT_CODE=$?
+if [ $EXIT_CODE -eq 0 ]
+then
+ echo "Building xds_end2end_test succeeded even with --define=grpc_no_xds=true"
+ exit 1
+fi
test \
--invocation_id="${BAZEL_INVOCATION_ID}" \
--workspace_status_command=tools/remote_build/workspace_status_kokoro.sh \
- --google_credentials="${KOKORO_GFILE_DIR}/GrpcTesting-d0eeee2db331.json" \
$@ \
-- //test/... || FAILED="true"
build_file: "grpc/tools/internal_ci/linux/grpc_asan_on_foundry.sh"
timeout_mins: 90
-gfile_resources: "/bigstore/grpc-testing-secrets/gcp_credentials/GrpcTesting-d0eeee2db331.json"
gfile_resources: "/bigstore/grpc-testing-secrets/gcp_credentials/resultstore_api_key"
bazel_setting {
build_file: "grpc/tools/internal_ci/linux/grpc_bazel_on_foundry_dbg.sh"
timeout_mins: 90
-gfile_resources: "/bigstore/grpc-testing-secrets/gcp_credentials/GrpcTesting-d0eeee2db331.json"
gfile_resources: "/bigstore/grpc-testing-secrets/gcp_credentials/resultstore_api_key"
bazel_setting {
build_file: "grpc/tools/internal_ci/linux/grpc_bazel_rbe_incompatible_changes.sh"
timeout_mins: 90
-gfile_resources: "/bigstore/grpc-testing-secrets/gcp_credentials/GrpcTesting-d0eeee2db331.json"
gfile_resources: "/bigstore/grpc-testing-secrets/gcp_credentials/resultstore_api_key"
bazel_setting {
build_file: "grpc/tools/internal_ci/linux/grpc_msan_on_foundry.sh"
timeout_mins: 90
-gfile_resources: "/bigstore/grpc-testing-secrets/gcp_credentials/GrpcTesting-d0eeee2db331.json"
gfile_resources: "/bigstore/grpc-testing-secrets/gcp_credentials/resultstore_api_key"
bazel_setting {
build_file: "grpc/tools/internal_ci/linux/grpc_bazel_on_foundry_opt.sh"
timeout_mins: 90
-gfile_resources: "/bigstore/grpc-testing-secrets/gcp_credentials/GrpcTesting-d0eeee2db331.json"
gfile_resources: "/bigstore/grpc-testing-secrets/gcp_credentials/resultstore_api_key"
bazel_setting {
build_file: "grpc/tools/internal_ci/linux/grpc_tsan_on_foundry.sh"
timeout_mins: 90
-gfile_resources: "/bigstore/grpc-testing-secrets/gcp_credentials/GrpcTesting-d0eeee2db331.json"
gfile_resources: "/bigstore/grpc-testing-secrets/gcp_credentials/resultstore_api_key"
bazel_setting {
build_file: "grpc/tools/internal_ci/linux/grpc_ubsan_on_foundry.sh"
timeout_mins: 90
-gfile_resources: "/bigstore/grpc-testing-secrets/gcp_credentials/GrpcTesting-d0eeee2db331.json"
gfile_resources: "/bigstore/grpc-testing-secrets/gcp_credentials/resultstore_api_key"
bazel_setting {
# Test cases "path_matching" and "header_matching" are not included in "all",
# because not all interop clients in all languages support these new tests.
-GRPC_VERBOSITY=debug GRPC_TRACE=xds_client,xds_resolver,xds_cluster_manager_lb,cds_lb,eds_lb,priority_lb,weighted_target_lb,lrs_lb "$PYTHON" \
+GRPC_VERBOSITY=debug GRPC_TRACE=xds_client,xds_resolver,xds_cluster_manager_lb,cds_lb,eds_lb,priority_lb,xds_cluster_impl_lb,weighted_target_lb "$PYTHON" \
tools/run_tests/run_xds_tests.py \
--test_case="all,path_matching,header_matching" \
--project_id=grpc-testing \
#
# TODO: remove "path_matching" and "header_matching" from --test_case after
# they are added into "all".
-GRPC_VERBOSITY=debug GRPC_TRACE=xds_client,xds_resolver,xds_cluster_manager_lb,cds_lb,eds_lb,priority_lb,weighted_target_lb,lrs_lb "$PYTHON" \
+GRPC_VERBOSITY=debug GRPC_TRACE=xds_client,xds_resolver,xds_cluster_manager_lb,cds_lb,eds_lb,priority_lb,xds_cluster_impl_lb,weighted_target_lb "$PYTHON" \
tools/run_tests/run_xds_tests.py \
--test_case="all,path_matching,header_matching" \
--project_id=grpc-testing \
#
# TODO(jtattermusch): remove "path_matching" and "header_matching" from
# --test_case after they are added into "all".
-GRPC_VERBOSITY=debug GRPC_TRACE=xds_client,xds_resolver,xds_cluster_manager_lb,cds_lb,eds_lb,priority_lb,weighted_target_lb,lrs_lb "$PYTHON" \
+GRPC_VERBOSITY=debug GRPC_TRACE=xds_client,xds_resolver,xds_cluster_manager_lb,cds_lb,eds_lb,priority_lb,xds_cluster_impl_lb,weighted_target_lb "$PYTHON" \
tools/run_tests/run_xds_tests.py \
--test_case="all,path_matching,header_matching" \
--project_id=grpc-testing \
composer install && \
./bin/generate_proto_php.sh)
-GRPC_VERBOSITY=debug GRPC_TRACE=xds_client,xds_resolver,xds_cluster_manager_lb,cds_lb,eds_lb,priority_lb,weighted_target_lb,lrs_lb "$PYTHON" \
+GRPC_VERBOSITY=debug GRPC_TRACE=xds_client,xds_resolver,xds_cluster_manager_lb,cds_lb,eds_lb,priority_lb,xds_cluster_impl_lb,weighted_target_lb "$PYTHON" \
tools/run_tests/run_xds_tests.py \
--test_case="all,path_matching,header_matching" \
--project_id=grpc-testing \
(cd src/ruby && bundle && rake compile)
-GRPC_VERBOSITY=debug GRPC_TRACE=xds_client,xds_resolver,xds_cluster_manager_lb,cds_lb,eds_lb,priority_lb,weighted_target_lb,lrs_lb "$PYTHON" \
+GRPC_VERBOSITY=debug GRPC_TRACE=xds_client,xds_resolver,xds_cluster_manager_lb,cds_lb,eds_lb,priority_lb,xds_cluster_impl_lb,weighted_target_lb "$PYTHON" \
tools/run_tests/run_xds_tests.py \
--test_case="all,path_matching,header_matching" \
--project_id=grpc-testing \
build_file: "grpc/tools/internal_ci/linux/pull_request/grpc_asan_on_foundry.sh"
timeout_mins: 90
-gfile_resources: "/bigstore/grpc-testing-secrets/gcp_credentials/GrpcTesting-d0eeee2db331.json"
gfile_resources: "/bigstore/grpc-testing-secrets/gcp_credentials/resultstore_api_key"
bazel_setting {
build_file: "grpc/tools/internal_ci/linux/pull_request/grpc_bazel_on_foundry_dbg.sh"
timeout_mins: 90
-gfile_resources: "/bigstore/grpc-testing-secrets/gcp_credentials/GrpcTesting-d0eeee2db331.json"
gfile_resources: "/bigstore/grpc-testing-secrets/gcp_credentials/resultstore_api_key"
bazel_setting {
build_file: "grpc/tools/internal_ci/linux/pull_request/grpc_msan_on_foundry.sh"
timeout_mins: 90
-gfile_resources: "/bigstore/grpc-testing-secrets/gcp_credentials/GrpcTesting-d0eeee2db331.json"
gfile_resources: "/bigstore/grpc-testing-secrets/gcp_credentials/resultstore_api_key"
bazel_setting {
build_file: "grpc/tools/internal_ci/linux/pull_request/grpc_bazel_on_foundry_opt.sh"
timeout_mins: 90
-gfile_resources: "/bigstore/grpc-testing-secrets/gcp_credentials/GrpcTesting-d0eeee2db331.json"
gfile_resources: "/bigstore/grpc-testing-secrets/gcp_credentials/resultstore_api_key"
bazel_setting {
build_file: "grpc/tools/internal_ci/linux/pull_request/grpc_tsan_on_foundry.sh"
timeout_mins: 90
-gfile_resources: "/bigstore/grpc-testing-secrets/gcp_credentials/GrpcTesting-d0eeee2db331.json"
gfile_resources: "/bigstore/grpc-testing-secrets/gcp_credentials/resultstore_api_key"
bazel_setting {
build_file: "grpc/tools/internal_ci/linux/pull_request/grpc_ubsan_on_foundry.sh"
timeout_mins: 90
-gfile_resources: "/bigstore/grpc-testing-secrets/gcp_credentials/GrpcTesting-d0eeee2db331.json"
gfile_resources: "/bigstore/grpc-testing-secrets/gcp_credentials/resultstore_api_key"
bazel_setting {
then
# Sleep to let ResultStore finish writing results before querying
sleep 60
- python ./tools/run_tests/python_utils/upload_rbe_results.py
+ PYTHONHTTPSVERIFY=0 python ./tools/run_tests/python_utils/upload_rbe_results.py
fi
if [ "$FAILED" != "" ]
set /p BAZEL_INVOCATION_ID=<%KOKORO_ARTIFACTS_DIR%/bazel_invocation_ids
@rem TODO(jtattermusch): windows RBE should be able to use the same credentials as Linux RBE.
-bazel --bazelrc=tools/remote_build/windows.bazelrc test --invocation_id="%BAZEL_INVOCATION_ID%" %BAZEL_FLAGS% --workspace_status_command=tools/remote_build/workspace_status_kokoro.bat --google_credentials=%KOKORO_GFILE_DIR%/rbe-windows-credentials.json //test/...
+bazel --bazelrc=tools/remote_build/windows.bazelrc test --invocation_id="%BAZEL_INVOCATION_ID%" %BAZEL_FLAGS% --workspace_status_command=tools/remote_build/workspace_status_kokoro.bat //test/...
set BAZEL_EXITCODE=%errorlevel%
if not "%UPLOAD_TEST_RESULTS%"=="" (
# Location of the continuous shell script in repository.
build_file: "grpc/tools/internal_ci/windows/grpc_run_tests_matrix.bat"
-timeout_mins: 60
+timeout_mins: 90
action {
define_artifacts {
regex: "**/*sponge_log.*"
gfile_resources: "/bigstore/grpc-testing-secrets/gcp_credentials/GrpcTesting-d0eeee2db331.json"
gfile_resources: "/bigstore/grpc-testing-secrets/gcp_credentials/resultstore_api_key"
-gfile_resources: "/bigstore/grpc-testing-secrets/gcp_credentials/rbe-windows-credentials.json"
bazel_setting {
# In order for Kokoro to recognize this as a bazel build and publish the bazel resultstore link,
gfile_resources: "/bigstore/grpc-testing-secrets/gcp_credentials/GrpcTesting-d0eeee2db331.json"
gfile_resources: "/bigstore/grpc-testing-secrets/gcp_credentials/resultstore_api_key"
-gfile_resources: "/bigstore/grpc-testing-secrets/gcp_credentials/rbe-windows-credentials.json"
bazel_setting {
# In order for Kokoro to recognize this as a bazel build and publish the bazel resultstore link,
@rem enter repo root
cd /d %~dp0\..\..\..
+set PREPARE_BUILD_INSTALL_DEPS_PYTHON=true
call tools/internal_ci/helper_scripts/prepare_build_windows.bat || exit /b 1
python tools/run_tests/task_runner.py -f artifact windows -j 4
# Location of the continuous shell script in repository.
build_file: "grpc/tools/internal_ci/windows/grpc_build_artifacts.bat"
-timeout_mins: 120
+timeout_mins: 180
action {
define_artifacts {
regex: "**/*sponge_log.*"
call tools/internal_ci/helper_scripts/prepare_build_windows.bat || exit /b 1
-@rem Move artifacts generated by the previous step in the build chain.
-powershell -Command "mv %KOKORO_GFILE_DIR%\github\grpc\artifacts input_artifacts"
-dir input_artifacts
-
-python tools/run_tests/task_runner.py -f package windows -j 4
-set RUNTESTS_EXITCODE=%errorlevel%
+rem NOTHING TO DO HERE
+rem This script used to run "task_runner.py -f package windows", but
+rem currently there are no build_packages tasks that need to be run on windows.
+rem The only build_packages task that ever needed to run on windows was C#, but we switched to
+rem building C# nugets on linux (as dotnet SDK on linux does a good job)
+rem TODO(jtattermusch): remove the infrastructure for running "build_packages" kokoro job on windows.
bash tools/internal_ci/helper_scripts/delete_nonartifacts.sh
@rem enter repo root
cd /d %~dp0\..\..\..
+If Not "%RUN_TESTS_FLAGS%"=="%RUN_TESTS_FLAGS:python=%" (
+ set PREPARE_BUILD_INSTALL_DEPS_PYTHON=true
+)
call tools/internal_ci/helper_scripts/prepare_build_windows.bat || exit /b 1
python tools/run_tests/run_tests_matrix.py %RUN_TESTS_FLAGS%
# Location of the continuous shell script in repository.
build_file: "grpc/tools/internal_ci/windows/grpc_run_tests_matrix.bat"
-timeout_mins: 60
+timeout_mins: 90
action {
define_artifacts {
regex: "**/*sponge_log.*"
env_vars {
key: "RUN_TESTS_FLAGS"
- value: "-f basictests windows python -j 1 --inner_jobs 8 --internal_ci --max_time=3600"
+ value: "-f basictests windows python -j 1 --inner_jobs 8 --internal_ci --max_time=5400"
}
gfile_resources: "/bigstore/grpc-testing-secrets/gcp_credentials/GrpcTesting-d0eeee2db331.json"
gfile_resources: "/bigstore/grpc-testing-secrets/gcp_credentials/resultstore_api_key"
-gfile_resources: "/bigstore/grpc-testing-secrets/gcp_credentials/rbe-windows-credentials.json"
bazel_setting {
# In order for Kokoro to recognize this as a bazel build and publish the bazel resultstore link,
gfile_resources: "/bigstore/grpc-testing-secrets/gcp_credentials/GrpcTesting-d0eeee2db331.json"
gfile_resources: "/bigstore/grpc-testing-secrets/gcp_credentials/resultstore_api_key"
-gfile_resources: "/bigstore/grpc-testing-secrets/gcp_credentials/rbe-windows-credentials.json"
bazel_setting {
# In order for Kokoro to recognize this as a bazel build and publish the bazel resultstore link,
('v1.30.0', ReleaseInfo(testcases_file='cxx__v1.31.1')),
('v1.31.1', ReleaseInfo(testcases_file='cxx__v1.31.1')),
('v1.32.0', ReleaseInfo()),
+ ('v1.33.2', ReleaseInfo()),
]),
'go':
OrderedDict([
('v1.27.1', ReleaseInfo(runtimes=['go1.11'])),
('v1.28.0', ReleaseInfo(runtimes=['go1.11'])),
('v1.29.0', ReleaseInfo(runtimes=['go1.11'])),
+ ('v1.30.0', ReleaseInfo(runtimes=['go1.11'])),
+ ('v1.31.1', ReleaseInfo(runtimes=['go1.11'])),
+ ('v1.32.0', ReleaseInfo(runtimes=['go1.11'])),
+ ('v1.33.1', ReleaseInfo(runtimes=['go1.11'])),
]),
'java':
OrderedDict([
('v1.29.0', ReleaseInfo()),
('v1.30.2', ReleaseInfo()),
('v1.31.1', ReleaseInfo()),
- ('v1.32.1', ReleaseInfo()),
+ ('v1.32.2', ReleaseInfo()),
+ ('v1.33.1', ReleaseInfo()),
]),
'python':
OrderedDict([
('v1.30.0', ReleaseInfo(runtimes=['python'])),
('v1.31.1', ReleaseInfo(runtimes=['python'])),
('v1.32.0', ReleaseInfo(runtimes=['python'])),
+ ('v1.33.2', ReleaseInfo(runtimes=['python'])),
]),
'node':
OrderedDict([
('v1.30.0', ReleaseInfo()),
('v1.31.1', ReleaseInfo()),
('v1.32.0', ReleaseInfo()),
+ ('v1.33.2', ReleaseInfo()),
]),
'php':
OrderedDict([
('v1.30.0', ReleaseInfo()),
('v1.31.1', ReleaseInfo()),
('v1.32.0', ReleaseInfo()),
+ ('v1.33.2', ReleaseInfo()),
]),
'csharp':
OrderedDict([
('v1.30.0', ReleaseInfo()),
('v1.31.1', ReleaseInfo()),
('v1.32.0', ReleaseInfo()),
+ ('v1.33.2', ReleaseInfo()),
]),
}
-#!/usr/bin/env python2.7
+#!/usr/bin/env python3
#
# Copyright 2018 gRPC authors.
#
text += '\n No significant differences in binary sizes\n'
text += '\n'
-print text
+print(text)
check_on_pr.check_on_pr('Binary Size', '```\n%s\n```' % text)
objc_size = 0
protobuf_size = 0
- lines = list(open(filename))
+ lines = open(filename, encoding='utf-8', errors='ignore').readlines()
for line in lines:
line_stripped = line[:-1]
if "# Object files:" == line_stripped:
if len(line_stripped) == 0 or line_stripped[0] == '#':
continue
segs = re.search('^.+?\s+(.+?)\s+(\[.+?\]).*', line_stripped)
+ if not segs:
+ continue
target = table_tag[segs.group(2)]
target_stripped = re.search('^(.*?)(\(.+?\))?$', target).group(1)
size = int(segs.group(1), 16)
"""
-rl_header = """This is the {version} release ([{name}](https://github.com/grpc/grpc/blob/master/doc/g_stands_for.md)) of gRPC Core.
+rl_header = """This is release {version} ([{name}](https://github.com/grpc/grpc/blob/master/doc/g_stands_for.md)) of gRPC Core.
-Please see the notes for the previous releases here: https://github.com/grpc/grpc/releases. Please consult https://grpc.io/ for all information regarding this product.
+For gRPC documentation, see [grpc.io](https://grpc.io/). For previous releases, see [Releases](https://github.com/grpc/grpc/releases).
This release contains refinements, improvements, and bug fixes, with highlights listed below.
def targets():
"""Gets list of supported targets"""
- return ([
- Cls(platform, arch) for Cls in (CSharpExtArtifact, ProtocArtifact)
- for platform in ('linux', 'macos', 'windows') for arch in ('x86', 'x64')
- ] + [
+ return [
+ ProtocArtifact('linux', 'x64'),
+ ProtocArtifact('linux', 'x86'),
+ ProtocArtifact('macos', 'x64'),
+ ProtocArtifact('macos', 'x86'),
+ ProtocArtifact('windows', 'x64'),
+ ProtocArtifact('windows', 'x86'),
+ CSharpExtArtifact('linux', 'x64'),
+ CSharpExtArtifact('macos', 'x64'),
+ CSharpExtArtifact('windows', 'x64'),
+ CSharpExtArtifact('windows', 'x86'),
CSharpExtArtifact('linux', 'android', arch_abi='arm64-v8a'),
CSharpExtArtifact('linux', 'android', arch_abi='armeabi-v7a'),
CSharpExtArtifact('linux', 'android', arch_abi='x86'),
PythonArtifact('windows', 'x86', 'Python36_32bit'),
PythonArtifact('windows', 'x86', 'Python37_32bit'),
PythonArtifact('windows', 'x86', 'Python38_32bit'),
- # TODO(lidiz) uncomment if Python39 installs stably.
- # PythonArtifact('windows', 'x86', 'Python39_32bit'),
+ PythonArtifact('windows', 'x86', 'Python39_32bit'),
PythonArtifact('windows', 'x64', 'Python27'),
PythonArtifact('windows', 'x64', 'Python35'),
PythonArtifact('windows', 'x64', 'Python36'),
PythonArtifact('windows', 'x64', 'Python37'),
PythonArtifact('windows', 'x64', 'Python38'),
- # TODO(lidiz) uncomment if Python39 installs stably.
- # PythonArtifact('windows', 'x64', 'Python39'),
+ PythonArtifact('windows', 'x64', 'Python39'),
RubyArtifact('linux', 'x64'),
RubyArtifact('macos', 'x64'),
PHPArtifact('linux', 'x64')
- ])
+ ]
@rem See the License for the specific language governing permissions and
@rem limitations under the License.
-@rem set path to python & mingw compiler
-set PATH=C:\%1;C:\%1\scripts;C:\msys64\mingw%2\bin;C:\tools\msys64\mingw%2\bin;%PATH%
+@rem set path to python
+set PATH=C:\%1;C:\%1\scripts;%PATH%
+
+if "%1" == "Python27" goto :install_mingw64_with_msvcr90
+if "%1" == "Python27_32bit" goto :install_mingw64_with_msvcr90
+@rem set path to the existed mingw compiler
+set PATH=C:\msys64\mingw%2\bin;C:\tools\msys64\mingw%2\bin;%PATH%
+:end_mingw64_installation
python -m pip install --upgrade six
@rem some artifacts are broken for setuptools 38.5.0. See https://github.com/grpc/grpc/issues/14317
python -m pip install --upgrade cython
python -m pip install -rrequirements.txt --user
+@rem set GRPC_PYTHON_OVERRIDE_CYGWIN_DETECTION_FOR_27=1
set GRPC_PYTHON_BUILD_WITH_CYTHON=1
@rem Allow build_ext to build C/C++ files in parallel
@rem by enabling a monkeypatch. It speeds up the build a lot.
-set GRPC_PYTHON_BUILD_EXT_COMPILER_JOBS=2
+set GRPC_PYTHON_BUILD_EXT_COMPILER_JOBS=4
mkdir -p %ARTIFACTS_OUT%
set ARTIFACT_DIR=%cd%\%ARTIFACTS_OUT%
:error
popd
exit /b 1
+
+:install_mingw64_with_msvcr90
+set MSYS64_DOWNLOAD_URL=https://storage.googleapis.com/grpc-build-helper/msys64.zip
+set MSYS64_PATH=C:\tools\msys64_win7
+set PATH=%MSYS64_PATH%\mingw%2\bin;%PATH%
+@rem Skip the installation if the directory exists
+if exist "%MSYS64_PATH%" goto :end_mingw64_installation
+python -m pip install requests || goto :error
+python tools\run_tests\python_utils\download_and_unzip.py "%MSYS64_DOWNLOAD_URL%" "%MSYS64_PATH%" || goto :error
+goto :end_mingw64_installation
CppDistribTest('windows', 'x86', testcase='cmake_as_externalproject'),
# C#
CSharpDistribTest('linux', 'x64', 'jessie'),
- CSharpDistribTest('linux', 'x86', 'jessie'),
CSharpDistribTest('linux', 'x64', 'stretch'),
CSharpDistribTest('linux', 'x64', 'stretch', use_dotnet_cli=True),
CSharpDistribTest('linux', 'x64', 'centos7'),
CSharpDistribTest('linux', 'x64', 'ubuntu1604'),
CSharpDistribTest('linux', 'x64', 'ubuntu1604', use_dotnet_cli=True),
CSharpDistribTest('linux', 'x64', 'alpine', use_dotnet_cli=True),
- CSharpDistribTest('macos', 'x86'),
+ CSharpDistribTest('linux', 'x64', 'dotnet31', use_dotnet_cli=True),
+ CSharpDistribTest('linux', 'x64', 'dotnet5', use_dotnet_cli=True),
+ CSharpDistribTest('macos', 'x64'),
CSharpDistribTest('windows', 'x86'),
CSharpDistribTest('windows', 'x64'),
# Python
def __init__(self, unity=False):
self.unity = unity
- self.labels = ['package', 'csharp', 'windows']
+ self.labels = ['package', 'csharp', 'linux']
if unity:
- self.name = 'csharp_package_unity_windows'
+ self.name = 'csharp_package_unity_linux'
self.labels += ['unity']
else:
- self.name = 'csharp_package_nuget_windows'
+ self.name = 'csharp_package_nuget_linux'
self.labels += ['nuget']
def pre_build_jobspecs(self):
def build_jobspec(self):
if self.unity:
- # use very high CPU cost to avoid running nuget package build
- # and unity build concurrently
- return create_jobspec(self.name, ['build_unitypackage.bat'],
- cwd='src\\csharp',
- cpu_cost=1e6,
- shell=True)
+ return create_docker_jobspec(
+ self.name, 'tools/dockerfile/test/csharp_stretch_x64',
+ 'src/csharp/build_unitypackage.sh')
else:
- return create_jobspec(self.name, ['build_packages_dotnetcli.bat'],
- cwd='src\\csharp',
- shell=True)
+ return create_docker_jobspec(
+ self.name, 'tools/dockerfile/test/csharp_stretch_x64',
+ 'src/csharp/build_nuget.sh')
def __str__(self):
return self.name
[
{
- "config": "opt"
- },
- {
- "config": "asan-trace-cmp",
+ "config": "asan",
"environ": {
- "ASAN_OPTIONS": "detect_leaks=1:color=always",
+ "ASAN_OPTIONS": "detect_leaks=1:color=always",
"LSAN_OPTIONS": "suppressions=test/core/util/lsan_suppressions.txt:report_objects=1"
}
- },
- {
- "config": "dbg"
- },
+ },
{
- "config": "asan",
+ "config": "asan-noleaks",
"environ": {
- "ASAN_OPTIONS": "detect_leaks=1:color=always",
- "LSAN_OPTIONS": "suppressions=test/core/util/lsan_suppressions.txt:report_objects=1"
+ "ASAN_OPTIONS": "detect_leaks=0:color=always"
}
- },
+ },
{
- "config": "msan",
+ "config": "asan-trace-cmp",
"environ": {
- "MSAN_OPTIONS": "poison_in_dtor=1"
+ "ASAN_OPTIONS": "detect_leaks=1:color=always",
+ "LSAN_OPTIONS": "suppressions=test/core/util/lsan_suppressions.txt:report_objects=1"
}
- },
+ },
{
"config": "basicprof"
- },
- {
- "config": "helgrind",
- "tool_prefix": [
- "valgrind",
- "--tool=helgrind"
- ]
- },
- {
- "config": "asan-noleaks",
- "environ": {
- "ASAN_OPTIONS": "detect_leaks=0:color=always"
- }
- },
+ },
{
- "config": "noexcept"
- },
- {
- "config": "ubsan",
- "environ": {
- "UBSAN_OPTIONS": "halt_on_error=1:print_stacktrace=1:suppressions=test/core/util/ubsan_suppressions.txt"
- }
- },
+ "config": "c++-compat"
+ },
{
- "config": "tsan",
- "environ": {
- "TSAN_OPTIONS": "suppressions=test/core/util/tsan_suppressions.txt:halt_on_error=1:second_deadlock_stack=1"
- }
- },
+ "config": "counters"
+ },
{
"config": "counters_with_memory_counter"
- },
+ },
{
- "config": "stapprof"
- },
+ "config": "dbg"
+ },
{
"config": "gcov"
- },
+ },
{
- "config": "memcheck",
+ "config": "helgrind",
"tool_prefix": [
- "valgrind",
- "--tool=memcheck",
- "--leak-check=full"
+ "valgrind",
+ "--tool=helgrind"
]
- },
+ },
{
"config": "lto"
- },
+ },
{
- "config": "c++-compat"
- },
+ "config": "memcheck",
+ "tool_prefix": [
+ "valgrind",
+ "--tool=memcheck",
+ "--leak-check=full"
+ ]
+ },
+ {
+ "config": "msan",
+ "environ": {
+ "MSAN_OPTIONS": "poison_in_dtor=1"
+ }
+ },
{
"config": "mutrace"
- },
+ },
{
- "config": "counters"
+ "config": "noexcept"
+ },
+ {
+ "config": "opt"
+ },
+ {
+ "config": "stapprof"
+ },
+ {
+ "config": "tsan",
+ "environ": {
+ "TSAN_OPTIONS": "suppressions=test/core/util/tsan_suppressions.txt:halt_on_error=1:second_deadlock_stack=1"
+ }
+ },
+ {
+ "config": "ubsan",
+ "environ": {
+ "UBSAN_OPTIONS": "halt_on_error=1:print_stacktrace=1:suppressions=test/core/util/ubsan_suppressions.txt"
+ }
}
]
[
{
- "backend_configs": [],
- "balancer_configs": [],
- "cause_no_error_no_data_for_balancer_a_record": false,
+ "backend_configs": [],
+ "balancer_configs": [],
+ "cause_no_error_no_data_for_balancer_a_record": false,
"fallback_configs": [
{
"transport_sec": "insecure"
}
- ],
- "name": "no_balancer_because_lb_a_record_returns_nx_domain_insecure",
- "skip_langs": [],
+ ],
+ "name": "no_balancer_because_lb_a_record_returns_nx_domain_insecure",
+ "skip_langs": [],
"transport_sec": "insecure"
- },
+ },
{
- "backend_configs": [],
- "balancer_configs": [],
- "cause_no_error_no_data_for_balancer_a_record": false,
+ "backend_configs": [],
+ "balancer_configs": [],
+ "cause_no_error_no_data_for_balancer_a_record": false,
"fallback_configs": [
{
"transport_sec": "alts"
}
- ],
- "name": "no_balancer_because_lb_a_record_returns_nx_domain_alts",
- "skip_langs": [],
+ ],
+ "name": "no_balancer_because_lb_a_record_returns_nx_domain_alts",
+ "skip_langs": [],
"transport_sec": "alts"
- },
+ },
{
- "backend_configs": [],
- "balancer_configs": [],
- "cause_no_error_no_data_for_balancer_a_record": false,
+ "backend_configs": [],
+ "balancer_configs": [],
+ "cause_no_error_no_data_for_balancer_a_record": false,
"fallback_configs": [
{
"transport_sec": "tls"
}
- ],
- "name": "no_balancer_because_lb_a_record_returns_nx_domain_tls",
- "skip_langs": [],
+ ],
+ "name": "no_balancer_because_lb_a_record_returns_nx_domain_tls",
+ "skip_langs": [],
"transport_sec": "tls"
- },
+ },
{
- "backend_configs": [],
- "balancer_configs": [],
- "cause_no_error_no_data_for_balancer_a_record": false,
+ "backend_configs": [],
+ "balancer_configs": [],
+ "cause_no_error_no_data_for_balancer_a_record": false,
"fallback_configs": [
{
"transport_sec": "tls"
}
- ],
- "name": "no_balancer_because_lb_a_record_returns_nx_domain_google_default_credentials",
- "skip_langs": [],
+ ],
+ "name": "no_balancer_because_lb_a_record_returns_nx_domain_google_default_credentials",
+ "skip_langs": [],
"transport_sec": "google_default_credentials"
- },
+ },
{
- "backend_configs": [],
- "balancer_configs": [],
- "cause_no_error_no_data_for_balancer_a_record": true,
+ "backend_configs": [],
+ "balancer_configs": [],
+ "cause_no_error_no_data_for_balancer_a_record": true,
"fallback_configs": [
{
"transport_sec": "insecure"
}
- ],
- "name": "no_balancer_because_lb_a_record_returns_no_data_insecure",
- "skip_langs": [],
+ ],
+ "name": "no_balancer_because_lb_a_record_returns_no_data_insecure",
+ "skip_langs": [],
"transport_sec": "insecure"
- },
+ },
{
- "backend_configs": [],
- "balancer_configs": [],
- "cause_no_error_no_data_for_balancer_a_record": true,
+ "backend_configs": [],
+ "balancer_configs": [],
+ "cause_no_error_no_data_for_balancer_a_record": true,
"fallback_configs": [
{
"transport_sec": "alts"
}
- ],
- "name": "no_balancer_because_lb_a_record_returns_no_data_alts",
- "skip_langs": [],
+ ],
+ "name": "no_balancer_because_lb_a_record_returns_no_data_alts",
+ "skip_langs": [],
"transport_sec": "alts"
- },
+ },
{
- "backend_configs": [],
- "balancer_configs": [],
- "cause_no_error_no_data_for_balancer_a_record": true,
+ "backend_configs": [],
+ "balancer_configs": [],
+ "cause_no_error_no_data_for_balancer_a_record": true,
"fallback_configs": [
{
"transport_sec": "tls"
}
- ],
- "name": "no_balancer_because_lb_a_record_returns_no_data_tls",
- "skip_langs": [],
+ ],
+ "name": "no_balancer_because_lb_a_record_returns_no_data_tls",
+ "skip_langs": [],
"transport_sec": "tls"
- },
+ },
{
- "backend_configs": [],
- "balancer_configs": [],
- "cause_no_error_no_data_for_balancer_a_record": true,
+ "backend_configs": [],
+ "balancer_configs": [],
+ "cause_no_error_no_data_for_balancer_a_record": true,
"fallback_configs": [
{
"transport_sec": "tls"
}
- ],
- "name": "no_balancer_because_lb_a_record_returns_no_data_google_default_credentials",
- "skip_langs": [],
+ ],
+ "name": "no_balancer_because_lb_a_record_returns_no_data_google_default_credentials",
+ "skip_langs": [],
"transport_sec": "google_default_credentials"
- },
+ },
{
"backend_configs": [
{
"transport_sec": "insecure"
}
- ],
+ ],
"balancer_configs": [
{
- "short_stream": true,
+ "short_stream": true,
"transport_sec": "insecure"
}
- ],
- "cause_no_error_no_data_for_balancer_a_record": false,
- "fallback_configs": [],
- "name": "client_referred_to_backend_insecure_short_stream_True",
+ ],
+ "cause_no_error_no_data_for_balancer_a_record": false,
+ "fallback_configs": [],
+ "name": "client_referred_to_backend_insecure_short_stream_True",
"skip_langs": [
"java"
- ],
+ ],
"transport_sec": "insecure"
- },
+ },
{
"backend_configs": [
{
"transport_sec": "alts"
}
- ],
+ ],
"balancer_configs": [
{
- "short_stream": true,
+ "short_stream": true,
"transport_sec": "alts"
}
- ],
- "cause_no_error_no_data_for_balancer_a_record": false,
- "fallback_configs": [],
- "name": "client_referred_to_backend_alts_short_stream_True",
+ ],
+ "cause_no_error_no_data_for_balancer_a_record": false,
+ "fallback_configs": [],
+ "name": "client_referred_to_backend_alts_short_stream_True",
"skip_langs": [
"java"
- ],
+ ],
"transport_sec": "alts"
- },
+ },
{
"backend_configs": [
{
"transport_sec": "tls"
}
- ],
+ ],
"balancer_configs": [
{
- "short_stream": true,
+ "short_stream": true,
"transport_sec": "tls"
}
- ],
- "cause_no_error_no_data_for_balancer_a_record": false,
- "fallback_configs": [],
- "name": "client_referred_to_backend_tls_short_stream_True",
+ ],
+ "cause_no_error_no_data_for_balancer_a_record": false,
+ "fallback_configs": [],
+ "name": "client_referred_to_backend_tls_short_stream_True",
"skip_langs": [
- "java",
+ "java",
"java"
- ],
+ ],
"transport_sec": "tls"
- },
+ },
{
"backend_configs": [
{
"transport_sec": "alts"
}
- ],
+ ],
"balancer_configs": [
{
- "short_stream": true,
+ "short_stream": true,
"transport_sec": "alts"
}
- ],
- "cause_no_error_no_data_for_balancer_a_record": false,
- "fallback_configs": [],
- "name": "client_referred_to_backend_google_default_credentials_short_stream_True",
+ ],
+ "cause_no_error_no_data_for_balancer_a_record": false,
+ "fallback_configs": [],
+ "name": "client_referred_to_backend_google_default_credentials_short_stream_True",
"skip_langs": [
"java"
- ],
+ ],
"transport_sec": "google_default_credentials"
- },
+ },
{
"backend_configs": [
{
"transport_sec": "insecure"
}
- ],
+ ],
"balancer_configs": [
{
- "short_stream": false,
+ "short_stream": false,
"transport_sec": "insecure"
}
- ],
- "cause_no_error_no_data_for_balancer_a_record": false,
- "fallback_configs": [],
- "name": "client_referred_to_backend_insecure_short_stream_False",
- "skip_langs": [],
+ ],
+ "cause_no_error_no_data_for_balancer_a_record": false,
+ "fallback_configs": [],
+ "name": "client_referred_to_backend_insecure_short_stream_False",
+ "skip_langs": [],
"transport_sec": "insecure"
- },
+ },
{
"backend_configs": [
{
"transport_sec": "alts"
}
- ],
+ ],
"balancer_configs": [
{
- "short_stream": false,
+ "short_stream": false,
"transport_sec": "alts"
}
- ],
- "cause_no_error_no_data_for_balancer_a_record": false,
- "fallback_configs": [],
- "name": "client_referred_to_backend_alts_short_stream_False",
- "skip_langs": [],
+ ],
+ "cause_no_error_no_data_for_balancer_a_record": false,
+ "fallback_configs": [],
+ "name": "client_referred_to_backend_alts_short_stream_False",
+ "skip_langs": [],
"transport_sec": "alts"
- },
+ },
{
"backend_configs": [
{
"transport_sec": "tls"
}
- ],
+ ],
"balancer_configs": [
{
- "short_stream": false,
+ "short_stream": false,
"transport_sec": "tls"
}
- ],
- "cause_no_error_no_data_for_balancer_a_record": false,
- "fallback_configs": [],
- "name": "client_referred_to_backend_tls_short_stream_False",
+ ],
+ "cause_no_error_no_data_for_balancer_a_record": false,
+ "fallback_configs": [],
+ "name": "client_referred_to_backend_tls_short_stream_False",
"skip_langs": [
"java"
- ],
+ ],
"transport_sec": "tls"
- },
+ },
{
"backend_configs": [
{
"transport_sec": "alts"
}
- ],
+ ],
"balancer_configs": [
{
- "short_stream": false,
+ "short_stream": false,
"transport_sec": "alts"
}
- ],
- "cause_no_error_no_data_for_balancer_a_record": false,
- "fallback_configs": [],
- "name": "client_referred_to_backend_google_default_credentials_short_stream_False",
- "skip_langs": [],
+ ],
+ "cause_no_error_no_data_for_balancer_a_record": false,
+ "fallback_configs": [],
+ "name": "client_referred_to_backend_google_default_credentials_short_stream_False",
+ "skip_langs": [],
"transport_sec": "google_default_credentials"
- },
+ },
{
"backend_configs": [
{
"transport_sec": "alts"
}
- ],
+ ],
"balancer_configs": [
{
- "short_stream": true,
+ "short_stream": true,
"transport_sec": "alts"
}
- ],
- "cause_no_error_no_data_for_balancer_a_record": false,
+ ],
+ "cause_no_error_no_data_for_balancer_a_record": false,
"fallback_configs": [
{
"transport_sec": "insecure"
}
- ],
- "name": "client_referred_to_backend_fallback_broken_alts_short_stream_True",
+ ],
+ "name": "client_referred_to_backend_fallback_broken_alts_short_stream_True",
"skip_langs": [
"java"
- ],
+ ],
"transport_sec": "alts"
- },
+ },
{
"backend_configs": [
{
"transport_sec": "tls"
}
- ],
+ ],
"balancer_configs": [
{
- "short_stream": true,
+ "short_stream": true,
"transport_sec": "tls"
}
- ],
- "cause_no_error_no_data_for_balancer_a_record": false,
+ ],
+ "cause_no_error_no_data_for_balancer_a_record": false,
"fallback_configs": [
{
"transport_sec": "insecure"
}
- ],
- "name": "client_referred_to_backend_fallback_broken_tls_short_stream_True",
+ ],
+ "name": "client_referred_to_backend_fallback_broken_tls_short_stream_True",
"skip_langs": [
- "java",
+ "java",
"java"
- ],
+ ],
"transport_sec": "tls"
- },
+ },
{
"backend_configs": [
{
"transport_sec": "alts"
}
- ],
+ ],
"balancer_configs": [
{
- "short_stream": true,
+ "short_stream": true,
"transport_sec": "alts"
}
- ],
- "cause_no_error_no_data_for_balancer_a_record": false,
+ ],
+ "cause_no_error_no_data_for_balancer_a_record": false,
"fallback_configs": [
{
"transport_sec": "insecure"
}
- ],
- "name": "client_referred_to_backend_fallback_broken_google_default_credentials_short_stream_True",
+ ],
+ "name": "client_referred_to_backend_fallback_broken_google_default_credentials_short_stream_True",
"skip_langs": [
"java"
- ],
+ ],
"transport_sec": "google_default_credentials"
- },
+ },
{
"backend_configs": [
{
"transport_sec": "alts"
}
- ],
+ ],
"balancer_configs": [
{
- "short_stream": false,
+ "short_stream": false,
"transport_sec": "alts"
}
- ],
- "cause_no_error_no_data_for_balancer_a_record": false,
+ ],
+ "cause_no_error_no_data_for_balancer_a_record": false,
"fallback_configs": [
{
"transport_sec": "insecure"
}
- ],
- "name": "client_referred_to_backend_fallback_broken_alts_short_stream_False",
- "skip_langs": [],
+ ],
+ "name": "client_referred_to_backend_fallback_broken_alts_short_stream_False",
+ "skip_langs": [],
"transport_sec": "alts"
- },
+ },
{
"backend_configs": [
{
"transport_sec": "tls"
}
- ],
+ ],
"balancer_configs": [
{
- "short_stream": false,
+ "short_stream": false,
"transport_sec": "tls"
}
- ],
- "cause_no_error_no_data_for_balancer_a_record": false,
+ ],
+ "cause_no_error_no_data_for_balancer_a_record": false,
"fallback_configs": [
{
"transport_sec": "insecure"
}
- ],
- "name": "client_referred_to_backend_fallback_broken_tls_short_stream_False",
+ ],
+ "name": "client_referred_to_backend_fallback_broken_tls_short_stream_False",
"skip_langs": [
"java"
- ],
+ ],
"transport_sec": "tls"
- },
+ },
{
"backend_configs": [
{
"transport_sec": "alts"
}
- ],
+ ],
"balancer_configs": [
{
- "short_stream": false,
+ "short_stream": false,
"transport_sec": "alts"
}
- ],
- "cause_no_error_no_data_for_balancer_a_record": false,
+ ],
+ "cause_no_error_no_data_for_balancer_a_record": false,
"fallback_configs": [
{
"transport_sec": "insecure"
}
- ],
- "name": "client_referred_to_backend_fallback_broken_google_default_credentials_short_stream_False",
- "skip_langs": [],
+ ],
+ "name": "client_referred_to_backend_fallback_broken_google_default_credentials_short_stream_False",
+ "skip_langs": [],
"transport_sec": "google_default_credentials"
- },
+ },
{
"backend_configs": [
{
"transport_sec": "insecure"
- },
+ },
{
"transport_sec": "insecure"
- },
+ },
{
"transport_sec": "insecure"
- },
+ },
{
"transport_sec": "insecure"
- },
+ },
{
"transport_sec": "insecure"
}
- ],
+ ],
"balancer_configs": [
{
- "short_stream": true,
+ "short_stream": true,
"transport_sec": "insecure"
}
- ],
- "cause_no_error_no_data_for_balancer_a_record": false,
- "fallback_configs": [],
- "name": "client_referred_to_backend_multiple_backends_insecure_short_stream_True",
+ ],
+ "cause_no_error_no_data_for_balancer_a_record": false,
+ "fallback_configs": [],
+ "name": "client_referred_to_backend_multiple_backends_insecure_short_stream_True",
"skip_langs": [
"java"
- ],
+ ],
"transport_sec": "insecure"
- },
+ },
{
"backend_configs": [
{
"transport_sec": "alts"
- },
+ },
{
"transport_sec": "alts"
- },
+ },
{
"transport_sec": "alts"
- },
+ },
{
"transport_sec": "alts"
- },
+ },
{
"transport_sec": "alts"
}
- ],
+ ],
"balancer_configs": [
{
- "short_stream": true,
+ "short_stream": true,
"transport_sec": "alts"
}
- ],
- "cause_no_error_no_data_for_balancer_a_record": false,
- "fallback_configs": [],
- "name": "client_referred_to_backend_multiple_backends_alts_short_stream_True",
+ ],
+ "cause_no_error_no_data_for_balancer_a_record": false,
+ "fallback_configs": [],
+ "name": "client_referred_to_backend_multiple_backends_alts_short_stream_True",
"skip_langs": [
"java"
- ],
+ ],
"transport_sec": "alts"
- },
+ },
{
"backend_configs": [
{
"transport_sec": "tls"
- },
+ },
{
"transport_sec": "tls"
- },
+ },
{
"transport_sec": "tls"
- },
+ },
{
"transport_sec": "tls"
- },
+ },
{
"transport_sec": "tls"
}
- ],
+ ],
"balancer_configs": [
{
- "short_stream": true,
+ "short_stream": true,
"transport_sec": "tls"
}
- ],
- "cause_no_error_no_data_for_balancer_a_record": false,
- "fallback_configs": [],
- "name": "client_referred_to_backend_multiple_backends_tls_short_stream_True",
+ ],
+ "cause_no_error_no_data_for_balancer_a_record": false,
+ "fallback_configs": [],
+ "name": "client_referred_to_backend_multiple_backends_tls_short_stream_True",
"skip_langs": [
- "java",
+ "java",
"java"
- ],
+ ],
"transport_sec": "tls"
- },
+ },
{
"backend_configs": [
{
"transport_sec": "alts"
- },
+ },
{
"transport_sec": "alts"
- },
+ },
{
"transport_sec": "alts"
- },
+ },
{
"transport_sec": "alts"
- },
+ },
{
"transport_sec": "alts"
}
- ],
+ ],
"balancer_configs": [
{
- "short_stream": true,
+ "short_stream": true,
"transport_sec": "alts"
}
- ],
- "cause_no_error_no_data_for_balancer_a_record": false,
- "fallback_configs": [],
- "name": "client_referred_to_backend_multiple_backends_google_default_credentials_short_stream_True",
+ ],
+ "cause_no_error_no_data_for_balancer_a_record": false,
+ "fallback_configs": [],
+ "name": "client_referred_to_backend_multiple_backends_google_default_credentials_short_stream_True",
"skip_langs": [
"java"
- ],
+ ],
"transport_sec": "google_default_credentials"
- },
+ },
{
"backend_configs": [
{
"transport_sec": "insecure"
- },
+ },
{
"transport_sec": "insecure"
- },
+ },
{
"transport_sec": "insecure"
- },
+ },
{
"transport_sec": "insecure"
- },
+ },
{
"transport_sec": "insecure"
}
- ],
+ ],
"balancer_configs": [
{
- "short_stream": false,
+ "short_stream": false,
"transport_sec": "insecure"
}
- ],
- "cause_no_error_no_data_for_balancer_a_record": false,
- "fallback_configs": [],
- "name": "client_referred_to_backend_multiple_backends_insecure_short_stream_False",
- "skip_langs": [],
+ ],
+ "cause_no_error_no_data_for_balancer_a_record": false,
+ "fallback_configs": [],
+ "name": "client_referred_to_backend_multiple_backends_insecure_short_stream_False",
+ "skip_langs": [],
"transport_sec": "insecure"
- },
+ },
{
"backend_configs": [
{
"transport_sec": "alts"
- },
+ },
{
"transport_sec": "alts"
- },
+ },
{
"transport_sec": "alts"
- },
+ },
{
"transport_sec": "alts"
- },
+ },
{
"transport_sec": "alts"
}
- ],
+ ],
"balancer_configs": [
{
- "short_stream": false,
+ "short_stream": false,
"transport_sec": "alts"
}
- ],
- "cause_no_error_no_data_for_balancer_a_record": false,
- "fallback_configs": [],
- "name": "client_referred_to_backend_multiple_backends_alts_short_stream_False",
- "skip_langs": [],
+ ],
+ "cause_no_error_no_data_for_balancer_a_record": false,
+ "fallback_configs": [],
+ "name": "client_referred_to_backend_multiple_backends_alts_short_stream_False",
+ "skip_langs": [],
"transport_sec": "alts"
- },
+ },
{
"backend_configs": [
{
"transport_sec": "tls"
- },
+ },
{
"transport_sec": "tls"
- },
+ },
{
"transport_sec": "tls"
- },
+ },
{
"transport_sec": "tls"
- },
+ },
{
"transport_sec": "tls"
}
- ],
+ ],
"balancer_configs": [
{
- "short_stream": false,
+ "short_stream": false,
"transport_sec": "tls"
}
- ],
- "cause_no_error_no_data_for_balancer_a_record": false,
- "fallback_configs": [],
- "name": "client_referred_to_backend_multiple_backends_tls_short_stream_False",
+ ],
+ "cause_no_error_no_data_for_balancer_a_record": false,
+ "fallback_configs": [],
+ "name": "client_referred_to_backend_multiple_backends_tls_short_stream_False",
"skip_langs": [
"java"
- ],
+ ],
"transport_sec": "tls"
- },
+ },
{
"backend_configs": [
{
"transport_sec": "alts"
- },
+ },
{
"transport_sec": "alts"
- },
+ },
{
"transport_sec": "alts"
- },
+ },
{
"transport_sec": "alts"
- },
+ },
{
"transport_sec": "alts"
}
- ],
+ ],
"balancer_configs": [
{
- "short_stream": false,
+ "short_stream": false,
"transport_sec": "alts"
}
- ],
- "cause_no_error_no_data_for_balancer_a_record": false,
- "fallback_configs": [],
- "name": "client_referred_to_backend_multiple_backends_google_default_credentials_short_stream_False",
- "skip_langs": [],
+ ],
+ "cause_no_error_no_data_for_balancer_a_record": false,
+ "fallback_configs": [],
+ "name": "client_referred_to_backend_multiple_backends_google_default_credentials_short_stream_False",
+ "skip_langs": [],
"transport_sec": "google_default_credentials"
- },
+ },
{
- "backend_configs": [],
+ "backend_configs": [],
"balancer_configs": [
{
- "short_stream": true,
+ "short_stream": true,
"transport_sec": "insecure"
}
- ],
- "cause_no_error_no_data_for_balancer_a_record": false,
+ ],
+ "cause_no_error_no_data_for_balancer_a_record": false,
"fallback_configs": [
{
"transport_sec": "insecure"
}
- ],
- "name": "client_falls_back_because_no_backends_insecure_short_stream_True",
+ ],
+ "name": "client_falls_back_because_no_backends_insecure_short_stream_True",
"skip_langs": [
- "go",
- "java",
+ "go",
+ "java",
"java"
- ],
+ ],
"transport_sec": "insecure"
- },
+ },
{
- "backend_configs": [],
+ "backend_configs": [],
"balancer_configs": [
{
- "short_stream": true,
+ "short_stream": true,
"transport_sec": "alts"
}
- ],
- "cause_no_error_no_data_for_balancer_a_record": false,
+ ],
+ "cause_no_error_no_data_for_balancer_a_record": false,
"fallback_configs": [
{
"transport_sec": "alts"
}
- ],
- "name": "client_falls_back_because_no_backends_alts_short_stream_True",
+ ],
+ "name": "client_falls_back_because_no_backends_alts_short_stream_True",
"skip_langs": [
- "go",
- "java",
+ "go",
+ "java",
"java"
- ],
+ ],
"transport_sec": "alts"
- },
+ },
{
- "backend_configs": [],
+ "backend_configs": [],
"balancer_configs": [
{
- "short_stream": true,
+ "short_stream": true,
"transport_sec": "tls"
}
- ],
- "cause_no_error_no_data_for_balancer_a_record": false,
+ ],
+ "cause_no_error_no_data_for_balancer_a_record": false,
"fallback_configs": [
{
"transport_sec": "tls"
}
- ],
- "name": "client_falls_back_because_no_backends_tls_short_stream_True",
+ ],
+ "name": "client_falls_back_because_no_backends_tls_short_stream_True",
"skip_langs": [
- "go",
- "java",
- "java",
+ "go",
+ "java",
+ "java",
"java"
- ],
+ ],
"transport_sec": "tls"
- },
+ },
{
- "backend_configs": [],
+ "backend_configs": [],
"balancer_configs": [
{
- "short_stream": true,
+ "short_stream": true,
"transport_sec": "alts"
}
- ],
- "cause_no_error_no_data_for_balancer_a_record": false,
+ ],
+ "cause_no_error_no_data_for_balancer_a_record": false,
"fallback_configs": [
{
"transport_sec": "tls"
}
- ],
- "name": "client_falls_back_because_no_backends_google_default_credentials_short_stream_True",
+ ],
+ "name": "client_falls_back_because_no_backends_google_default_credentials_short_stream_True",
"skip_langs": [
- "go",
- "java",
+ "go",
+ "java",
"java"
- ],
+ ],
"transport_sec": "google_default_credentials"
- },
+ },
{
- "backend_configs": [],
+ "backend_configs": [],
"balancer_configs": [
{
- "short_stream": false,
+ "short_stream": false,
"transport_sec": "insecure"
}
- ],
- "cause_no_error_no_data_for_balancer_a_record": false,
+ ],
+ "cause_no_error_no_data_for_balancer_a_record": false,
"fallback_configs": [
{
"transport_sec": "insecure"
}
- ],
- "name": "client_falls_back_because_no_backends_insecure_short_stream_False",
+ ],
+ "name": "client_falls_back_because_no_backends_insecure_short_stream_False",
"skip_langs": [
- "go",
+ "go",
"java"
- ],
+ ],
"transport_sec": "insecure"
- },
+ },
{
- "backend_configs": [],
+ "backend_configs": [],
"balancer_configs": [
{
- "short_stream": false,
+ "short_stream": false,
"transport_sec": "alts"
}
- ],
- "cause_no_error_no_data_for_balancer_a_record": false,
+ ],
+ "cause_no_error_no_data_for_balancer_a_record": false,
"fallback_configs": [
{
"transport_sec": "alts"
}
- ],
- "name": "client_falls_back_because_no_backends_alts_short_stream_False",
+ ],
+ "name": "client_falls_back_because_no_backends_alts_short_stream_False",
"skip_langs": [
- "go",
+ "go",
"java"
- ],
+ ],
"transport_sec": "alts"
- },
+ },
{
- "backend_configs": [],
+ "backend_configs": [],
"balancer_configs": [
{
- "short_stream": false,
+ "short_stream": false,
"transport_sec": "tls"
}
- ],
- "cause_no_error_no_data_for_balancer_a_record": false,
+ ],
+ "cause_no_error_no_data_for_balancer_a_record": false,
"fallback_configs": [
{
"transport_sec": "tls"
}
- ],
- "name": "client_falls_back_because_no_backends_tls_short_stream_False",
+ ],
+ "name": "client_falls_back_because_no_backends_tls_short_stream_False",
"skip_langs": [
- "go",
- "java",
+ "go",
+ "java",
"java"
- ],
+ ],
"transport_sec": "tls"
- },
+ },
{
- "backend_configs": [],
+ "backend_configs": [],
"balancer_configs": [
{
- "short_stream": false,
+ "short_stream": false,
"transport_sec": "alts"
}
- ],
- "cause_no_error_no_data_for_balancer_a_record": false,
+ ],
+ "cause_no_error_no_data_for_balancer_a_record": false,
"fallback_configs": [
{
"transport_sec": "tls"
}
- ],
- "name": "client_falls_back_because_no_backends_google_default_credentials_short_stream_False",
+ ],
+ "name": "client_falls_back_because_no_backends_google_default_credentials_short_stream_False",
"skip_langs": [
- "go",
+ "go",
"java"
- ],
+ ],
"transport_sec": "google_default_credentials"
- },
+ },
{
- "backend_configs": [],
+ "backend_configs": [],
"balancer_configs": [
{
- "short_stream": false,
+ "short_stream": false,
"transport_sec": "insecure"
}
- ],
- "cause_no_error_no_data_for_balancer_a_record": false,
+ ],
+ "cause_no_error_no_data_for_balancer_a_record": false,
"fallback_configs": [
{
"transport_sec": "alts"
}
- ],
- "name": "client_falls_back_because_balancer_connection_broken_alts",
- "skip_langs": [],
+ ],
+ "name": "client_falls_back_because_balancer_connection_broken_alts",
+ "skip_langs": [],
"transport_sec": "alts"
- },
+ },
{
- "backend_configs": [],
+ "backend_configs": [],
"balancer_configs": [
{
- "short_stream": false,
+ "short_stream": false,
"transport_sec": "insecure"
}
- ],
- "cause_no_error_no_data_for_balancer_a_record": false,
+ ],
+ "cause_no_error_no_data_for_balancer_a_record": false,
"fallback_configs": [
{
"transport_sec": "tls"
}
- ],
- "name": "client_falls_back_because_balancer_connection_broken_tls",
+ ],
+ "name": "client_falls_back_because_balancer_connection_broken_tls",
"skip_langs": [
"java"
- ],
+ ],
"transport_sec": "tls"
- },
+ },
{
- "backend_configs": [],
+ "backend_configs": [],
"balancer_configs": [
{
- "short_stream": false,
+ "short_stream": false,
"transport_sec": "insecure"
}
- ],
- "cause_no_error_no_data_for_balancer_a_record": false,
+ ],
+ "cause_no_error_no_data_for_balancer_a_record": false,
"fallback_configs": [
{
"transport_sec": "tls"
}
- ],
- "name": "client_falls_back_because_balancer_connection_broken_google_default_credentials",
- "skip_langs": [],
+ ],
+ "name": "client_falls_back_because_balancer_connection_broken_google_default_credentials",
+ "skip_langs": [],
"transport_sec": "google_default_credentials"
- },
+ },
{
"backend_configs": [
{
"transport_sec": "insecure"
}
- ],
+ ],
"balancer_configs": [
{
- "short_stream": true,
+ "short_stream": true,
"transport_sec": "insecure"
- },
+ },
{
- "short_stream": true,
+ "short_stream": true,
"transport_sec": "insecure"
- },
+ },
{
- "short_stream": true,
+ "short_stream": true,
"transport_sec": "insecure"
- },
+ },
{
- "short_stream": true,
+ "short_stream": true,
"transport_sec": "insecure"
- },
+ },
{
- "short_stream": true,
+ "short_stream": true,
"transport_sec": "insecure"
}
- ],
- "cause_no_error_no_data_for_balancer_a_record": false,
- "fallback_configs": [],
- "name": "client_referred_to_backend_multiple_balancers_insecure_short_stream_True",
+ ],
+ "cause_no_error_no_data_for_balancer_a_record": false,
+ "fallback_configs": [],
+ "name": "client_referred_to_backend_multiple_balancers_insecure_short_stream_True",
"skip_langs": [
"java"
- ],
+ ],
"transport_sec": "insecure"
- },
+ },
{
"backend_configs": [
{
"transport_sec": "alts"
}
- ],
+ ],
"balancer_configs": [
{
- "short_stream": true,
+ "short_stream": true,
"transport_sec": "alts"
- },
+ },
{
- "short_stream": true,
+ "short_stream": true,
"transport_sec": "alts"
- },
+ },
{
- "short_stream": true,
+ "short_stream": true,
"transport_sec": "alts"
- },
+ },
{
- "short_stream": true,
+ "short_stream": true,
"transport_sec": "alts"
- },
+ },
{
- "short_stream": true,
+ "short_stream": true,
"transport_sec": "alts"
}
- ],
- "cause_no_error_no_data_for_balancer_a_record": false,
- "fallback_configs": [],
- "name": "client_referred_to_backend_multiple_balancers_alts_short_stream_True",
+ ],
+ "cause_no_error_no_data_for_balancer_a_record": false,
+ "fallback_configs": [],
+ "name": "client_referred_to_backend_multiple_balancers_alts_short_stream_True",
"skip_langs": [
"java"
- ],
+ ],
"transport_sec": "alts"
- },
+ },
{
"backend_configs": [
{
"transport_sec": "tls"
}
- ],
+ ],
"balancer_configs": [
{
- "short_stream": true,
+ "short_stream": true,
"transport_sec": "tls"
- },
+ },
{
- "short_stream": true,
+ "short_stream": true,
"transport_sec": "tls"
- },
+ },
{
- "short_stream": true,
+ "short_stream": true,
"transport_sec": "tls"
- },
+ },
{
- "short_stream": true,
+ "short_stream": true,
"transport_sec": "tls"
- },
+ },
{
- "short_stream": true,
+ "short_stream": true,
"transport_sec": "tls"
}
- ],
- "cause_no_error_no_data_for_balancer_a_record": false,
- "fallback_configs": [],
- "name": "client_referred_to_backend_multiple_balancers_tls_short_stream_True",
+ ],
+ "cause_no_error_no_data_for_balancer_a_record": false,
+ "fallback_configs": [],
+ "name": "client_referred_to_backend_multiple_balancers_tls_short_stream_True",
"skip_langs": [
- "java",
+ "java",
"java"
- ],
+ ],
"transport_sec": "tls"
- },
+ },
{
"backend_configs": [
{
"transport_sec": "alts"
}
- ],
+ ],
"balancer_configs": [
{
- "short_stream": true,
+ "short_stream": true,
"transport_sec": "alts"
- },
+ },
{
- "short_stream": true,
+ "short_stream": true,
"transport_sec": "alts"
- },
+ },
{
- "short_stream": true,
+ "short_stream": true,
"transport_sec": "alts"
- },
+ },
{
- "short_stream": true,
+ "short_stream": true,
"transport_sec": "alts"
- },
+ },
{
- "short_stream": true,
+ "short_stream": true,
"transport_sec": "alts"
}
- ],
- "cause_no_error_no_data_for_balancer_a_record": false,
- "fallback_configs": [],
- "name": "client_referred_to_backend_multiple_balancers_google_default_credentials_short_stream_True",
+ ],
+ "cause_no_error_no_data_for_balancer_a_record": false,
+ "fallback_configs": [],
+ "name": "client_referred_to_backend_multiple_balancers_google_default_credentials_short_stream_True",
"skip_langs": [
"java"
- ],
+ ],
"transport_sec": "google_default_credentials"
- },
+ },
{
"backend_configs": [
{
"transport_sec": "insecure"
}
- ],
+ ],
"balancer_configs": [
{
- "short_stream": false,
+ "short_stream": false,
"transport_sec": "insecure"
- },
+ },
{
- "short_stream": false,
+ "short_stream": false,
"transport_sec": "insecure"
- },
+ },
{
- "short_stream": false,
+ "short_stream": false,
"transport_sec": "insecure"
- },
+ },
{
- "short_stream": false,
+ "short_stream": false,
"transport_sec": "insecure"
- },
+ },
{
- "short_stream": false,
+ "short_stream": false,
"transport_sec": "insecure"
}
- ],
- "cause_no_error_no_data_for_balancer_a_record": false,
- "fallback_configs": [],
- "name": "client_referred_to_backend_multiple_balancers_insecure_short_stream_False",
- "skip_langs": [],
+ ],
+ "cause_no_error_no_data_for_balancer_a_record": false,
+ "fallback_configs": [],
+ "name": "client_referred_to_backend_multiple_balancers_insecure_short_stream_False",
+ "skip_langs": [],
"transport_sec": "insecure"
- },
+ },
{
"backend_configs": [
{
"transport_sec": "alts"
}
- ],
+ ],
"balancer_configs": [
{
- "short_stream": false,
+ "short_stream": false,
"transport_sec": "alts"
- },
+ },
{
- "short_stream": false,
+ "short_stream": false,
"transport_sec": "alts"
- },
+ },
{
- "short_stream": false,
+ "short_stream": false,
"transport_sec": "alts"
- },
+ },
{
- "short_stream": false,
+ "short_stream": false,
"transport_sec": "alts"
- },
+ },
{
- "short_stream": false,
+ "short_stream": false,
"transport_sec": "alts"
}
- ],
- "cause_no_error_no_data_for_balancer_a_record": false,
- "fallback_configs": [],
- "name": "client_referred_to_backend_multiple_balancers_alts_short_stream_False",
- "skip_langs": [],
+ ],
+ "cause_no_error_no_data_for_balancer_a_record": false,
+ "fallback_configs": [],
+ "name": "client_referred_to_backend_multiple_balancers_alts_short_stream_False",
+ "skip_langs": [],
"transport_sec": "alts"
- },
+ },
{
"backend_configs": [
{
"transport_sec": "tls"
}
- ],
+ ],
"balancer_configs": [
{
- "short_stream": false,
+ "short_stream": false,
"transport_sec": "tls"
- },
+ },
{
- "short_stream": false,
+ "short_stream": false,
"transport_sec": "tls"
- },
+ },
{
- "short_stream": false,
+ "short_stream": false,
"transport_sec": "tls"
- },
+ },
{
- "short_stream": false,
+ "short_stream": false,
"transport_sec": "tls"
- },
+ },
{
- "short_stream": false,
+ "short_stream": false,
"transport_sec": "tls"
}
- ],
- "cause_no_error_no_data_for_balancer_a_record": false,
- "fallback_configs": [],
- "name": "client_referred_to_backend_multiple_balancers_tls_short_stream_False",
+ ],
+ "cause_no_error_no_data_for_balancer_a_record": false,
+ "fallback_configs": [],
+ "name": "client_referred_to_backend_multiple_balancers_tls_short_stream_False",
"skip_langs": [
"java"
- ],
+ ],
"transport_sec": "tls"
- },
+ },
{
"backend_configs": [
{
"transport_sec": "alts"
}
- ],
+ ],
"balancer_configs": [
{
- "short_stream": false,
+ "short_stream": false,
"transport_sec": "alts"
- },
+ },
{
- "short_stream": false,
+ "short_stream": false,
"transport_sec": "alts"
- },
+ },
{
- "short_stream": false,
+ "short_stream": false,
"transport_sec": "alts"
- },
+ },
{
- "short_stream": false,
+ "short_stream": false,
"transport_sec": "alts"
- },
+ },
{
- "short_stream": false,
+ "short_stream": false,
"transport_sec": "alts"
}
- ],
- "cause_no_error_no_data_for_balancer_a_record": false,
- "fallback_configs": [],
- "name": "client_referred_to_backend_multiple_balancers_google_default_credentials_short_stream_False",
- "skip_langs": [],
+ ],
+ "cause_no_error_no_data_for_balancer_a_record": false,
+ "fallback_configs": [],
+ "name": "client_referred_to_backend_multiple_balancers_google_default_credentials_short_stream_False",
+ "skip_langs": [],
"transport_sec": "google_default_credentials"
}
]
[
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": false,
- "language": "c",
- "name": "algorithm_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": false,
+ "language": "c",
+ "name": "algorithm_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": false
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": false,
- "language": "c",
- "name": "alloc_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": false,
+ "language": "c",
+ "name": "alloc_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": false
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": false,
- "language": "c",
- "name": "alpn_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": false,
+ "language": "c",
+ "name": "alpn_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": true
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": false,
- "language": "c",
- "name": "alts_counter_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": false,
+ "language": "c",
+ "name": "alts_counter_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": true
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": false,
- "language": "c",
- "name": "alts_crypt_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": false,
+ "language": "c",
+ "name": "alts_crypt_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": true
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": false,
- "language": "c",
- "name": "alts_crypter_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": false,
+ "language": "c",
+ "name": "alts_crypter_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": true
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": false,
- "language": "c",
- "name": "alts_frame_protector_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": false,
+ "language": "c",
+ "name": "alts_frame_protector_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": true
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": false,
- "language": "c",
- "name": "alts_grpc_record_protocol_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": false,
+ "language": "c",
+ "name": "alts_grpc_record_protocol_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": true
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": false,
- "language": "c",
- "name": "alts_handshaker_client_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": false,
+ "language": "c",
+ "name": "alts_handshaker_client_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": true
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": false,
- "language": "c",
- "name": "alts_iovec_record_protocol_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": false,
+ "language": "c",
+ "name": "alts_iovec_record_protocol_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": true
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": false,
- "language": "c",
- "name": "alts_security_connector_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": false,
+ "language": "c",
+ "name": "alts_security_connector_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": true
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": false,
- "language": "c",
- "name": "alts_tsi_handshaker_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": false,
+ "language": "c",
+ "name": "alts_tsi_handshaker_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": true
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": false,
- "language": "c",
- "name": "alts_tsi_utils_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": false,
+ "language": "c",
+ "name": "alts_tsi_utils_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": true
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": false,
- "language": "c",
- "name": "alts_zero_copy_grpc_protector_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": false,
+ "language": "c",
+ "name": "alts_zero_copy_grpc_protector_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": true
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": false,
- "language": "c",
- "name": "arena_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": false,
+ "language": "c",
+ "name": "arena_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": false
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": false,
- "language": "c",
- "name": "auth_context_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": false,
+ "language": "c",
+ "name": "auth_context_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": false
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": false,
- "language": "c",
- "name": "avl_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": false,
+ "language": "c",
+ "name": "avl_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": false
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": false,
- "language": "c",
- "name": "b64_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": false,
+ "language": "c",
+ "name": "b64_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": false
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": false,
- "language": "c",
- "name": "bad_server_response_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": false,
+ "language": "c",
+ "name": "bad_server_response_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": true
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
+ "linux",
+ "mac",
"posix"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": false,
- "language": "c",
- "name": "bad_ssl_alpn_test",
- "platforms": [
- "linux",
- "mac",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": false,
+ "language": "c",
+ "name": "bad_ssl_alpn_test",
+ "platforms": [
+ "linux",
+ "mac",
"posix"
- ],
+ ],
"uses_polling": true
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
+ "linux",
+ "mac",
"posix"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": false,
- "language": "c",
- "name": "bad_ssl_cert_test",
- "platforms": [
- "linux",
- "mac",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": false,
+ "language": "c",
+ "name": "bad_ssl_cert_test",
+ "platforms": [
+ "linux",
+ "mac",
"posix"
- ],
+ ],
"uses_polling": true
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": false,
- "language": "c",
- "name": "bin_decoder_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": false,
+ "language": "c",
+ "name": "bin_decoder_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": false
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": false,
- "language": "c",
- "name": "bin_encoder_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": false,
+ "language": "c",
+ "name": "bin_encoder_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": false
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": false,
- "language": "c",
- "name": "buffer_list_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": false,
+ "language": "c",
+ "name": "buffer_list_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": true
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": false,
- "language": "c",
- "name": "channel_args_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": false,
+ "language": "c",
+ "name": "channel_args_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": false
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": false,
- "language": "c",
- "name": "channel_create_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": false,
+ "language": "c",
+ "name": "channel_create_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": true
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": false,
- "language": "c",
- "name": "channel_stack_builder_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": false,
+ "language": "c",
+ "name": "channel_stack_builder_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": true
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": false,
- "language": "c",
- "name": "channel_stack_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": false,
+ "language": "c",
+ "name": "channel_stack_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": false
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": false,
- "language": "c",
- "name": "check_gcp_environment_linux_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": false,
+ "language": "c",
+ "name": "check_gcp_environment_linux_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": true
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": false,
- "language": "c",
- "name": "check_gcp_environment_windows_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": false,
+ "language": "c",
+ "name": "check_gcp_environment_windows_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": true
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
+ "linux",
+ "mac",
"posix"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": false,
- "language": "c",
- "name": "client_ssl_test",
- "platforms": [
- "linux",
- "mac",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": false,
+ "language": "c",
+ "name": "client_ssl_test",
+ "platforms": [
+ "linux",
+ "mac",
"posix"
- ],
+ ],
"uses_polling": true
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": false,
- "language": "c",
- "name": "cmdline_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": false,
+ "language": "c",
+ "name": "cmdline_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": false
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
+ "linux",
+ "mac",
"posix"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": false,
- "language": "c",
- "name": "combiner_test",
- "platforms": [
- "linux",
- "mac",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": false,
+ "language": "c",
+ "name": "combiner_test",
+ "platforms": [
+ "linux",
+ "mac",
"posix"
- ],
+ ],
"uses_polling": true
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": false,
- "language": "c",
- "name": "compression_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": false,
+ "language": "c",
+ "name": "compression_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": false
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": false,
- "language": "c",
- "name": "connection_refused_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": false,
+ "language": "c",
+ "name": "connection_refused_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": true
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": false,
- "language": "c",
- "name": "cpu_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": false,
+ "language": "c",
+ "name": "cpu_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"--resolver=ares"
- ],
- "benchmark": false,
+ ],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": false,
- "language": "c",
- "name": "dns_resolver_connectivity_using_ares_resolver_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": false,
+ "language": "c",
+ "name": "dns_resolver_connectivity_using_ares_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": true
- },
+ },
{
"args": [
"--resolver=native"
- ],
- "benchmark": false,
+ ],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": false,
- "language": "c",
- "name": "dns_resolver_connectivity_using_native_resolver_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": false,
+ "language": "c",
+ "name": "dns_resolver_connectivity_using_native_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": true
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": false,
- "language": "c",
- "name": "dns_resolver_cooldown_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": false,
+ "language": "c",
+ "name": "dns_resolver_cooldown_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": true
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": false,
- "language": "c",
- "name": "dns_resolver_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": false,
+ "language": "c",
+ "name": "dns_resolver_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": true
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
+ "linux",
+ "mac",
"posix"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": false,
- "language": "c",
- "name": "dualstack_socket_test",
- "platforms": [
- "linux",
- "mac",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": false,
+ "language": "c",
+ "name": "dualstack_socket_test",
+ "platforms": [
+ "linux",
+ "mac",
"posix"
- ],
+ ],
"uses_polling": true
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": false,
- "language": "c",
- "name": "endpoint_pair_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": false,
+ "language": "c",
+ "name": "endpoint_pair_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": true
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": false,
- "language": "c",
- "name": "env_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": false,
+ "language": "c",
+ "name": "env_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": false
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": false,
- "language": "c",
- "name": "error_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": false,
+ "language": "c",
+ "name": "error_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": false
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
+ "linux",
+ "mac",
"posix"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": false,
- "language": "c",
- "name": "ev_epollex_linux_test",
- "platforms": [
- "linux",
- "mac",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": false,
+ "language": "c",
+ "name": "ev_epollex_linux_test",
+ "platforms": [
+ "linux",
+ "mac",
"posix"
- ],
+ ],
"uses_polling": true
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": false,
- "language": "c",
- "name": "fake_resolver_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": false,
+ "language": "c",
+ "name": "fake_resolver_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": true
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": false,
- "language": "c",
- "name": "fake_transport_security_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": false,
+ "language": "c",
+ "name": "fake_transport_security_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": true
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
+ "linux",
+ "mac",
"posix"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": false,
- "language": "c",
- "name": "fd_conservation_posix_test",
- "platforms": [
- "linux",
- "mac",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": false,
+ "language": "c",
+ "name": "fd_conservation_posix_test",
+ "platforms": [
+ "linux",
+ "mac",
"posix"
- ],
+ ],
"uses_polling": true
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
+ "linux",
+ "mac",
"posix"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": false,
- "language": "c",
- "name": "fd_posix_test",
- "platforms": [
- "linux",
- "mac",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": false,
+ "language": "c",
+ "name": "fd_posix_test",
+ "platforms": [
+ "linux",
+ "mac",
"posix"
- ],
+ ],
"uses_polling": true
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
+ "linux",
+ "mac",
"posix"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": false,
- "language": "c",
- "name": "fling_stream_test",
- "platforms": [
- "linux",
- "mac",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": false,
+ "language": "c",
+ "name": "fling_stream_test",
+ "platforms": [
+ "linux",
+ "mac",
"posix"
- ],
+ ],
"uses_polling": true
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
+ "linux",
+ "mac",
"posix"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": false,
- "language": "c",
- "name": "fling_test",
- "platforms": [
- "linux",
- "mac",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": false,
+ "language": "c",
+ "name": "fling_test",
+ "platforms": [
+ "linux",
+ "mac",
"posix"
- ],
+ ],
"uses_polling": true
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
+ "linux",
+ "mac",
"posix"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": false,
- "language": "c",
- "name": "fork_test",
- "platforms": [
- "linux",
- "mac",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": false,
+ "language": "c",
+ "name": "fork_test",
+ "platforms": [
+ "linux",
+ "mac",
"posix"
- ],
+ ],
"uses_polling": false
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": false,
- "language": "c",
- "name": "format_request_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": false,
+ "language": "c",
+ "name": "format_request_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": true
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": false,
- "language": "c",
- "name": "frame_handler_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": false,
+ "language": "c",
+ "name": "frame_handler_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": true
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": false,
- "language": "c",
- "name": "goaway_server_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": false,
+ "language": "c",
+ "name": "goaway_server_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": true
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": false,
- "language": "c",
- "name": "grpc_alts_credentials_options_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": false,
+ "language": "c",
+ "name": "grpc_alts_credentials_options_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": true
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": false,
- "language": "c",
- "name": "grpc_byte_buffer_reader_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": false,
+ "language": "c",
+ "name": "grpc_byte_buffer_reader_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": false
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": false,
- "language": "c",
- "name": "grpc_completion_queue_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": false,
+ "language": "c",
+ "name": "grpc_completion_queue_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": true
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": false,
- "language": "c",
- "name": "grpc_ipv6_loopback_available_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": false,
+ "language": "c",
+ "name": "grpc_ipv6_loopback_available_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": true
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
+ "linux",
+ "mac",
"posix"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": false,
- "language": "c",
- "name": "handshake_server_with_readahead_handshaker_test",
- "platforms": [
- "linux",
- "mac",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": false,
+ "language": "c",
+ "name": "handshake_server_with_readahead_handshaker_test",
+ "platforms": [
+ "linux",
+ "mac",
"posix"
- ],
+ ],
"uses_polling": true
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
+ "linux",
+ "mac",
"posix"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": false,
- "language": "c",
- "name": "handshake_verify_peer_options_test",
- "platforms": [
- "linux",
- "mac",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": false,
+ "language": "c",
+ "name": "handshake_verify_peer_options_test",
+ "platforms": [
+ "linux",
+ "mac",
"posix"
- ],
+ ],
"uses_polling": true
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": false,
- "language": "c",
- "name": "histogram_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": false,
+ "language": "c",
+ "name": "histogram_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": false
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": false,
- "language": "c",
- "name": "host_port_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": false,
+ "language": "c",
+ "name": "host_port_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": false
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": false,
- "language": "c",
- "name": "hpack_encoder_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": false,
+ "language": "c",
+ "name": "hpack_encoder_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": false
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": false,
- "language": "c",
- "name": "hpack_parser_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": false,
+ "language": "c",
+ "name": "hpack_parser_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": false
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": false,
- "language": "c",
- "name": "hpack_table_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": false,
+ "language": "c",
+ "name": "hpack_table_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": false
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
+ "linux",
+ "mac",
"posix"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": false,
- "language": "c",
- "name": "httpcli_test",
- "platforms": [
- "linux",
- "mac",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": false,
+ "language": "c",
+ "name": "httpcli_test",
+ "platforms": [
+ "linux",
+ "mac",
"posix"
- ],
+ ],
"uses_polling": true
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
+ "linux",
+ "mac",
"posix"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": false,
- "language": "c",
- "name": "httpscli_test",
- "platforms": [
- "linux",
- "mac",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": false,
+ "language": "c",
+ "name": "httpscli_test",
+ "platforms": [
+ "linux",
+ "mac",
"posix"
- ],
+ ],
"uses_polling": true
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": false,
- "language": "c",
- "name": "inproc_callback_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": false,
+ "language": "c",
+ "name": "inproc_callback_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": false
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": false,
- "language": "c",
- "name": "invalid_call_argument_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": false,
+ "language": "c",
+ "name": "invalid_call_argument_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": true
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": false,
- "language": "c",
- "name": "json_token_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": false,
+ "language": "c",
+ "name": "json_token_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": false
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": false,
- "language": "c",
- "name": "jwt_verifier_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": false,
+ "language": "c",
+ "name": "jwt_verifier_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": false
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": false,
- "language": "c",
- "name": "lame_client_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": false,
+ "language": "c",
+ "name": "lame_client_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": true
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": false,
- "language": "c",
- "name": "load_file_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": false,
+ "language": "c",
+ "name": "load_file_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": false
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": false,
- "language": "c",
- "name": "log_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": false,
+ "language": "c",
+ "name": "log_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": false
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": false,
- "language": "c",
- "name": "manual_constructor_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": false,
+ "language": "c",
+ "name": "manual_constructor_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": false
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": false,
- "language": "c",
- "name": "message_compress_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": false,
+ "language": "c",
+ "name": "message_compress_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": false
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": false,
- "language": "c",
- "name": "metadata_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": false,
+ "language": "c",
+ "name": "metadata_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": true
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": false,
- "language": "c",
- "name": "minimal_stack_is_minimal_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": false,
+ "language": "c",
+ "name": "minimal_stack_is_minimal_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": false
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": false,
- "language": "c",
- "name": "mpmcqueue_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": false,
+ "language": "c",
+ "name": "mpmcqueue_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": false
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
+ "linux",
+ "mac",
"posix"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": false,
- "language": "c",
- "name": "mpscq_test",
- "platforms": [
- "linux",
- "mac",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": false,
+ "language": "c",
+ "name": "mpscq_test",
+ "platforms": [
+ "linux",
+ "mac",
"posix"
- ],
+ ],
"uses_polling": false
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": false,
- "language": "c",
- "name": "multiple_server_queues_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": false,
+ "language": "c",
+ "name": "multiple_server_queues_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": true
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": false,
- "language": "c",
- "name": "murmur_hash_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": false,
+ "language": "c",
+ "name": "murmur_hash_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": false
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": false,
- "language": "c",
- "name": "no_server_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": false,
+ "language": "c",
+ "name": "no_server_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": true
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": false,
- "language": "c",
- "name": "num_external_connectivity_watchers_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": false,
+ "language": "c",
+ "name": "num_external_connectivity_watchers_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": true
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": false,
- "language": "c",
- "name": "parse_address_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": false,
+ "language": "c",
+ "name": "parse_address_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": true
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
+ "linux",
+ "mac",
"posix"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": false,
- "language": "c",
- "name": "parse_address_with_named_scope_id_test",
- "platforms": [
- "linux",
- "mac",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": false,
+ "language": "c",
+ "name": "parse_address_with_named_scope_id_test",
+ "platforms": [
+ "linux",
+ "mac",
"posix"
- ],
+ ],
"uses_polling": false
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": false,
- "language": "c",
- "name": "parser_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": false,
+ "language": "c",
+ "name": "parser_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": false
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": false,
- "language": "c",
- "name": "percent_encoding_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": false,
+ "language": "c",
+ "name": "percent_encoding_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": false
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": false,
- "language": "c",
- "name": "public_headers_must_be_c89",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": false,
+ "language": "c",
+ "name": "public_headers_must_be_c89",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": true
- },
+ },
{
"args": [
"--resolver=ares"
- ],
- "benchmark": false,
+ ],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
+ "linux",
+ "mac",
"posix"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": false,
- "language": "c",
- "name": "resolve_address_using_ares_resolver_posix_test",
- "platforms": [
- "linux",
- "mac",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": false,
+ "language": "c",
+ "name": "resolve_address_using_ares_resolver_posix_test",
+ "platforms": [
+ "linux",
+ "mac",
"posix"
- ],
+ ],
"uses_polling": true
- },
+ },
{
"args": [
"--resolver=ares"
- ],
- "benchmark": false,
+ ],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": false,
- "language": "c",
- "name": "resolve_address_using_ares_resolver_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": false,
+ "language": "c",
+ "name": "resolve_address_using_ares_resolver_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": true
- },
+ },
{
"args": [
"--resolver=native"
- ],
- "benchmark": false,
+ ],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
+ "linux",
+ "mac",
"posix"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": false,
- "language": "c",
- "name": "resolve_address_using_native_resolver_posix_test",
- "platforms": [
- "linux",
- "mac",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": false,
+ "language": "c",
+ "name": "resolve_address_using_native_resolver_posix_test",
+ "platforms": [
+ "linux",
+ "mac",
"posix"
- ],
+ ],
"uses_polling": true
- },
+ },
{
"args": [
"--resolver=native"
- ],
- "benchmark": false,
+ ],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": false,
- "language": "c",
- "name": "resolve_address_using_native_resolver_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": false,
+ "language": "c",
+ "name": "resolve_address_using_native_resolver_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": true
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": false,
- "language": "c",
- "name": "resource_quota_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": false,
+ "language": "c",
+ "name": "resource_quota_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": true
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": false,
- "language": "c",
- "name": "secure_channel_create_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": false,
+ "language": "c",
+ "name": "secure_channel_create_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": true
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": false,
- "language": "c",
- "name": "secure_endpoint_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": false,
+ "language": "c",
+ "name": "secure_endpoint_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": true
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": false,
- "language": "c",
- "name": "security_connector_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": false,
+ "language": "c",
+ "name": "security_connector_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": true
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
+ "linux",
+ "mac",
"posix"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": false,
- "language": "c",
- "name": "server_ssl_test",
- "platforms": [
- "linux",
- "mac",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": false,
+ "language": "c",
+ "name": "server_ssl_test",
+ "platforms": [
+ "linux",
+ "mac",
"posix"
- ],
+ ],
"uses_polling": true
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": false,
- "language": "c",
- "name": "server_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": false,
+ "language": "c",
+ "name": "server_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": true
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": false,
- "language": "c",
- "name": "slice_buffer_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": false,
+ "language": "c",
+ "name": "slice_buffer_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": false
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": false,
- "language": "c",
- "name": "slice_string_helpers_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": false,
+ "language": "c",
+ "name": "slice_string_helpers_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": false
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": false,
- "language": "c",
- "name": "sockaddr_resolver_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": false,
+ "language": "c",
+ "name": "sockaddr_resolver_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": true
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": false,
- "language": "c",
- "name": "sockaddr_utils_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": false,
+ "language": "c",
+ "name": "sockaddr_utils_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": true
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
+ "linux",
+ "mac",
"posix"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": false,
- "language": "c",
- "name": "socket_utils_test",
- "platforms": [
- "linux",
- "mac",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": false,
+ "language": "c",
+ "name": "socket_utils_test",
+ "platforms": [
+ "linux",
+ "mac",
"posix"
- ],
+ ],
"uses_polling": true
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": false,
- "language": "c",
- "name": "spinlock_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": false,
+ "language": "c",
+ "name": "spinlock_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": false
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": false,
- "language": "c",
- "name": "ssl_credentials_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": false,
+ "language": "c",
+ "name": "ssl_credentials_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": true
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
+ "linux",
+ "mac",
"posix"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": false,
- "language": "c",
- "name": "ssl_transport_security_test",
- "platforms": [
- "linux",
- "mac",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": false,
+ "language": "c",
+ "name": "ssl_transport_security_test",
+ "platforms": [
+ "linux",
+ "mac",
"posix"
- ],
+ ],
"uses_polling": true
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": false,
- "language": "c",
- "name": "status_conversion_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": false,
+ "language": "c",
+ "name": "status_conversion_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": false
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": false,
- "language": "c",
- "name": "stream_compression_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": false,
+ "language": "c",
+ "name": "stream_compression_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": false
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": false,
- "language": "c",
- "name": "stream_map_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": false,
+ "language": "c",
+ "name": "stream_map_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": true
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": false,
- "language": "c",
- "name": "stream_owned_slice_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": false,
+ "language": "c",
+ "name": "stream_owned_slice_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": false
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": false,
- "language": "c",
- "name": "string_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": false,
+ "language": "c",
+ "name": "string_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": false
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": false,
- "language": "c",
- "name": "sync_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": false,
+ "language": "c",
+ "name": "sync_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": false
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
+ "linux",
+ "mac",
"posix"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": false,
- "language": "c",
- "name": "tcp_client_posix_test",
- "platforms": [
- "linux",
- "mac",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": false,
+ "language": "c",
+ "name": "tcp_client_posix_test",
+ "platforms": [
+ "linux",
+ "mac",
"posix"
- ],
+ ],
"uses_polling": true
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
+ "linux",
"posix"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": false,
- "language": "c",
- "name": "tcp_posix_test",
- "platforms": [
- "linux",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": false,
+ "language": "c",
+ "name": "tcp_posix_test",
+ "platforms": [
+ "linux",
"posix"
- ],
+ ],
"uses_polling": true
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
+ "linux",
+ "mac",
"posix"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": false,
- "language": "c",
- "name": "tcp_server_posix_test",
- "platforms": [
- "linux",
- "mac",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": false,
+ "language": "c",
+ "name": "tcp_server_posix_test",
+ "platforms": [
+ "linux",
+ "mac",
"posix"
- ],
+ ],
"uses_polling": true
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": false,
- "language": "c",
- "name": "test_core_gpr_time_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": false,
+ "language": "c",
+ "name": "test_core_gpr_time_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": false
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": false,
- "language": "c",
- "name": "test_core_security_credentials_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": false,
+ "language": "c",
+ "name": "test_core_security_credentials_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": true
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": false,
- "language": "c",
- "name": "test_core_slice_slice_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": false,
+ "language": "c",
+ "name": "test_core_slice_slice_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": false
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": false,
- "language": "c",
- "name": "thd_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": false,
+ "language": "c",
+ "name": "thd_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": false
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": false,
- "language": "c",
- "name": "threadpool_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": false,
+ "language": "c",
+ "name": "threadpool_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": false
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": false,
- "language": "c",
- "name": "time_averaged_stats_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": false,
+ "language": "c",
+ "name": "time_averaged_stats_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": false
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": false,
- "language": "c",
- "name": "timeout_encoding_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": false,
+ "language": "c",
+ "name": "timeout_encoding_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": false
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": false,
- "language": "c",
- "name": "timer_heap_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": false,
+ "language": "c",
+ "name": "timer_heap_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": false
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": false,
- "language": "c",
- "name": "timer_list_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": false,
+ "language": "c",
+ "name": "timer_list_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": false
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": false,
- "language": "c",
- "name": "tls_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": false,
+ "language": "c",
+ "name": "tls_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": false
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": false,
- "language": "c",
- "name": "transport_security_common_api_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": false,
+ "language": "c",
+ "name": "transport_security_common_api_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": true
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": false,
- "language": "c",
- "name": "transport_security_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": false,
+ "language": "c",
+ "name": "transport_security_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": true
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
+ "linux",
+ "mac",
"posix"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": false,
- "language": "c",
- "name": "udp_server_test",
- "platforms": [
- "linux",
- "mac",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": false,
+ "language": "c",
+ "name": "udp_server_test",
+ "platforms": [
+ "linux",
+ "mac",
"posix"
- ],
+ ],
"uses_polling": true
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": false,
- "language": "c",
- "name": "uri_parser_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": false,
+ "language": "c",
+ "name": "uri_parser_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": true
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": false,
- "language": "c",
- "name": "useful_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": false,
+ "language": "c",
+ "name": "useful_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": false
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": false,
- "language": "c",
- "name": "varint_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": false,
+ "language": "c",
+ "name": "varint_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": false
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
+ "linux",
+ "mac",
"posix"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": true,
- "language": "c++",
- "name": "address_sorting_test",
- "platforms": [
- "linux",
- "mac",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": true,
+ "language": "c++",
+ "name": "address_sorting_test",
+ "platforms": [
+ "linux",
+ "mac",
"posix"
- ],
+ ],
"uses_polling": true
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
+ "linux",
+ "mac",
"posix"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": true,
- "language": "c++",
- "name": "address_sorting_test_unsecure",
- "platforms": [
- "linux",
- "mac",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": true,
+ "language": "c++",
+ "name": "address_sorting_test_unsecure",
+ "platforms": [
+ "linux",
+ "mac",
"posix"
- ],
+ ],
"uses_polling": true
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
+ "linux",
+ "mac",
"posix"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": true,
- "language": "c++",
- "name": "alarm_test",
- "platforms": [
- "linux",
- "mac",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": true,
+ "language": "c++",
+ "name": "alarm_test",
+ "platforms": [
+ "linux",
+ "mac",
"posix"
- ],
+ ],
"uses_polling": true
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
+ "linux",
"posix"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": true,
- "language": "c++",
- "name": "alts_concurrent_connectivity_test",
- "platforms": [
- "linux",
- "mac",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": true,
+ "language": "c++",
+ "name": "alts_concurrent_connectivity_test",
+ "platforms": [
+ "linux",
"posix"
- ],
+ ],
"uses_polling": true
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": true,
- "language": "c++",
- "name": "alts_util_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": true,
+ "language": "c++",
+ "name": "alts_util_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": true
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": true,
- "language": "c++",
- "name": "async_end2end_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": true,
+ "language": "c++",
+ "name": "async_end2end_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": true
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": true,
- "language": "c++",
- "name": "auth_property_iterator_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": true,
+ "language": "c++",
+ "name": "auth_property_iterator_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": false
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": true,
- "language": "c++",
- "name": "authorization_engine_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": true,
+ "language": "c++",
+ "name": "authorization_engine_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": true
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": true,
- "language": "c++",
- "name": "backoff_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": true,
+ "language": "c++",
+ "name": "aws_request_signer_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
+ "uses_polling": true
+ },
+ {
+ "args": [],
+ "benchmark": false,
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": true,
+ "language": "c++",
+ "name": "backoff_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"uses_polling": false
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": true,
- "language": "c++",
- "name": "bad_streaming_id_bad_client_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": true,
+ "language": "c++",
+ "name": "bad_streaming_id_bad_client_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": true
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": true,
- "language": "c++",
- "name": "badreq_bad_client_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": true,
+ "language": "c++",
+ "name": "badreq_bad_client_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": true
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
+ "linux",
+ "mac",
"posix"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": true,
- "language": "c++",
- "name": "bdp_estimator_test",
- "platforms": [
- "linux",
- "mac",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": true,
+ "language": "c++",
+ "name": "bdp_estimator_test",
+ "platforms": [
+ "linux",
+ "mac",
"posix"
- ],
+ ],
"uses_polling": false
- },
+ },
{
- "args": [],
- "benchmark": true,
+ "args": [],
+ "benchmark": true,
"ci_platforms": [
- "linux",
+ "linux",
"posix"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": false,
- "language": "c++",
- "name": "bm_alarm",
- "platforms": [
- "linux",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": false,
+ "language": "c++",
+ "name": "bm_alarm",
+ "platforms": [
+ "linux",
"posix"
- ],
+ ],
"uses_polling": true
- },
+ },
{
- "args": [],
- "benchmark": true,
+ "args": [],
+ "benchmark": true,
"ci_platforms": [
- "linux",
+ "linux",
"posix"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": false,
- "language": "c++",
- "name": "bm_arena",
- "platforms": [
- "linux",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": false,
+ "language": "c++",
+ "name": "bm_arena",
+ "platforms": [
+ "linux",
"posix"
- ],
+ ],
"uses_polling": false
- },
+ },
{
- "args": [],
- "benchmark": true,
+ "args": [],
+ "benchmark": true,
"ci_platforms": [
- "linux",
+ "linux",
"posix"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": false,
- "language": "c++",
- "name": "bm_byte_buffer",
- "platforms": [
- "linux",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": false,
+ "language": "c++",
+ "name": "bm_byte_buffer",
+ "platforms": [
+ "linux",
"posix"
- ],
+ ],
"uses_polling": false
- },
+ },
{
- "args": [],
- "benchmark": true,
+ "args": [],
+ "benchmark": true,
"ci_platforms": [
- "linux",
+ "linux",
"posix"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": false,
- "language": "c++",
- "name": "bm_call_create",
- "platforms": [
- "linux",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": false,
+ "language": "c++",
+ "name": "bm_call_create",
+ "platforms": [
+ "linux",
"posix"
- ],
+ ],
"uses_polling": false
- },
+ },
{
- "args": [],
- "benchmark": true,
+ "args": [],
+ "benchmark": true,
"ci_platforms": [
- "linux",
+ "linux",
"posix"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": false,
- "language": "c++",
- "name": "bm_callback_streaming_ping_pong",
- "platforms": [
- "linux",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": false,
+ "language": "c++",
+ "name": "bm_callback_streaming_ping_pong",
+ "platforms": [
+ "linux",
"posix"
- ],
+ ],
"uses_polling": true
- },
+ },
{
- "args": [],
- "benchmark": true,
+ "args": [],
+ "benchmark": true,
"ci_platforms": [
- "linux",
+ "linux",
"posix"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": false,
- "language": "c++",
- "name": "bm_callback_unary_ping_pong",
- "platforms": [
- "linux",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": false,
+ "language": "c++",
+ "name": "bm_callback_unary_ping_pong",
+ "platforms": [
+ "linux",
"posix"
- ],
+ ],
"uses_polling": true
- },
+ },
{
- "args": [],
- "benchmark": true,
+ "args": [],
+ "benchmark": true,
"ci_platforms": [
- "linux",
+ "linux",
"posix"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": false,
- "language": "c++",
- "name": "bm_channel",
- "platforms": [
- "linux",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": false,
+ "language": "c++",
+ "name": "bm_channel",
+ "platforms": [
+ "linux",
"posix"
- ],
+ ],
"uses_polling": false
- },
+ },
{
- "args": [],
- "benchmark": true,
+ "args": [],
+ "benchmark": true,
"ci_platforms": [
- "linux",
+ "linux",
"posix"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": false,
- "language": "c++",
- "name": "bm_chttp2_hpack",
- "platforms": [
- "linux",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": false,
+ "language": "c++",
+ "name": "bm_chttp2_hpack",
+ "platforms": [
+ "linux",
"posix"
- ],
+ ],
"uses_polling": false
- },
+ },
{
- "args": [],
- "benchmark": true,
+ "args": [],
+ "benchmark": true,
"ci_platforms": [
- "linux",
+ "linux",
"posix"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": false,
- "language": "c++",
- "name": "bm_chttp2_transport",
- "platforms": [
- "linux",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": false,
+ "language": "c++",
+ "name": "bm_chttp2_transport",
+ "platforms": [
+ "linux",
"posix"
- ],
+ ],
"uses_polling": true
- },
+ },
{
- "args": [],
- "benchmark": true,
+ "args": [],
+ "benchmark": true,
"ci_platforms": [
- "linux",
+ "linux",
"posix"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": false,
- "language": "c++",
- "name": "bm_closure",
- "platforms": [
- "linux",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": false,
+ "language": "c++",
+ "name": "bm_closure",
+ "platforms": [
+ "linux",
"posix"
- ],
+ ],
"uses_polling": true
- },
+ },
{
- "args": [],
- "benchmark": true,
+ "args": [],
+ "benchmark": true,
"ci_platforms": [
- "linux",
+ "linux",
"posix"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": false,
- "language": "c++",
- "name": "bm_cq",
- "platforms": [
- "linux",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": false,
+ "language": "c++",
+ "name": "bm_cq",
+ "platforms": [
+ "linux",
"posix"
- ],
+ ],
"uses_polling": true
- },
+ },
{
- "args": [],
- "benchmark": true,
+ "args": [],
+ "benchmark": true,
"ci_platforms": [
- "linux",
+ "linux",
"posix"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": false,
- "language": "c++",
- "name": "bm_cq_multiple_threads",
- "platforms": [
- "linux",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": false,
+ "language": "c++",
+ "name": "bm_cq_multiple_threads",
+ "platforms": [
+ "linux",
"posix"
- ],
+ ],
"uses_polling": false
- },
+ },
{
- "args": [],
- "benchmark": true,
+ "args": [],
+ "benchmark": true,
"ci_platforms": [
- "linux",
+ "linux",
"posix"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": false,
- "language": "c++",
- "name": "bm_error",
- "platforms": [
- "linux",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": false,
+ "language": "c++",
+ "name": "bm_error",
+ "platforms": [
+ "linux",
"posix"
- ],
+ ],
"uses_polling": false
- },
+ },
{
- "args": [],
- "benchmark": true,
+ "args": [],
+ "benchmark": true,
"ci_platforms": [
- "linux",
+ "linux",
"posix"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": false,
- "language": "c++",
- "name": "bm_fullstack_streaming_ping_pong",
- "platforms": [
- "linux",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": false,
+ "language": "c++",
+ "name": "bm_fullstack_streaming_ping_pong",
+ "platforms": [
+ "linux",
"posix"
- ],
+ ],
"uses_polling": true
- },
+ },
{
- "args": [],
- "benchmark": true,
+ "args": [],
+ "benchmark": true,
"ci_platforms": [
- "linux",
+ "linux",
"posix"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": false,
- "language": "c++",
- "name": "bm_fullstack_streaming_pump",
- "platforms": [
- "linux",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": false,
+ "language": "c++",
+ "name": "bm_fullstack_streaming_pump",
+ "platforms": [
+ "linux",
"posix"
- ],
+ ],
"uses_polling": true
- },
+ },
{
- "args": [],
- "benchmark": true,
+ "args": [],
+ "benchmark": true,
"ci_platforms": [
- "linux",
+ "linux",
"posix"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": false,
- "language": "c++",
- "name": "bm_fullstack_unary_ping_pong",
- "platforms": [
- "linux",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": false,
+ "language": "c++",
+ "name": "bm_fullstack_unary_ping_pong",
+ "platforms": [
+ "linux",
"posix"
- ],
+ ],
"uses_polling": true
- },
+ },
{
- "args": [],
- "benchmark": true,
+ "args": [],
+ "benchmark": true,
"ci_platforms": [
- "linux",
+ "linux",
"posix"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": false,
- "language": "c++",
- "name": "bm_metadata",
- "platforms": [
- "linux",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": false,
+ "language": "c++",
+ "name": "bm_metadata",
+ "platforms": [
+ "linux",
"posix"
- ],
+ ],
"uses_polling": false
- },
+ },
{
- "args": [],
- "benchmark": true,
+ "args": [],
+ "benchmark": true,
"ci_platforms": [
- "linux",
+ "linux",
"posix"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": false,
- "language": "c++",
- "name": "bm_pollset",
- "platforms": [
- "linux",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": false,
+ "language": "c++",
+ "name": "bm_pollset",
+ "platforms": [
+ "linux",
"posix"
- ],
+ ],
"uses_polling": true
- },
+ },
{
- "args": [],
- "benchmark": true,
+ "args": [],
+ "benchmark": true,
"ci_platforms": [
- "linux",
+ "linux",
"posix"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": false,
- "language": "c++",
- "name": "bm_timer",
- "platforms": [
- "linux",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": false,
+ "language": "c++",
+ "name": "bm_timer",
+ "platforms": [
+ "linux",
"posix"
- ],
+ ],
"uses_polling": false
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": true,
- "language": "c++",
- "name": "byte_buffer_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": true,
+ "language": "c++",
+ "name": "byte_buffer_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": false
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": true,
- "language": "c++",
- "name": "byte_stream_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": true,
+ "language": "c++",
+ "name": "byte_stream_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": false
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": true,
- "language": "c++",
- "name": "certificate_provider_registry_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": true,
+ "language": "c++",
+ "name": "certificate_provider_registry_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": true
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": true,
- "language": "c++",
- "name": "channel_arguments_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": true,
+ "language": "c++",
+ "name": "certificate_provider_store_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
+ "uses_polling": true
+ },
+ {
+ "args": [],
+ "benchmark": false,
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": true,
+ "language": "c++",
+ "name": "channel_arguments_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"uses_polling": false
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": true,
- "language": "c++",
- "name": "channel_filter_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": true,
+ "language": "c++",
+ "name": "channel_filter_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": false
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": true,
- "language": "c++",
- "name": "channel_trace_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": true,
+ "language": "c++",
+ "name": "channel_trace_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": true
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": true,
- "language": "c++",
- "name": "channelz_registry_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": true,
+ "language": "c++",
+ "name": "channelz_registry_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": false
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": true,
- "language": "c++",
- "name": "channelz_service_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": true,
+ "language": "c++",
+ "name": "channelz_service_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": true
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": true,
- "language": "c++",
- "name": "channelz_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": true,
+ "language": "c++",
+ "name": "channelz_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": true
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": true,
- "language": "c++",
- "name": "cli_call_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": true,
+ "language": "c++",
+ "name": "cli_call_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": true
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": true,
- "language": "c++",
- "name": "client_callback_end2end_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": true,
+ "language": "c++",
+ "name": "client_callback_end2end_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": true
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": true,
- "language": "c++",
- "name": "client_interceptors_end2end_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": true,
+ "language": "c++",
+ "name": "client_interceptors_end2end_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": true
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": true,
- "language": "c++",
- "name": "codegen_test_full",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": true,
+ "language": "c++",
+ "name": "codegen_test_full",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": false
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": true,
- "language": "c++",
- "name": "codegen_test_minimal",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": true,
+ "language": "c++",
+ "name": "codegen_test_minimal",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": false
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": true,
- "language": "c++",
- "name": "connection_prefix_bad_client_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": true,
+ "language": "c++",
+ "name": "connection_prefix_bad_client_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": true
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": true,
- "language": "c++",
- "name": "connectivity_state_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": true,
+ "language": "c++",
+ "name": "connectivity_state_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": true
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": true,
- "language": "c++",
- "name": "context_list_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": true,
+ "language": "c++",
+ "name": "context_list_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": false
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": true,
- "language": "c++",
- "name": "delegating_channel_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": true,
+ "language": "c++",
+ "name": "delegating_channel_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": true
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": true,
- "language": "c++",
- "name": "destroy_grpclb_channel_with_active_connect_stress_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": true,
+ "language": "c++",
+ "name": "destroy_grpclb_channel_with_active_connect_stress_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": true
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": true,
- "language": "c++",
- "name": "dual_ref_counted_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": true,
+ "language": "c++",
+ "name": "dual_ref_counted_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": true
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": true,
- "language": "c++",
- "name": "duplicate_header_bad_client_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": true,
+ "language": "c++",
+ "name": "duplicate_header_bad_client_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": true
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": true,
- "language": "c++",
- "name": "error_details_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": true,
+ "language": "c++",
+ "name": "error_details_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": true
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": true,
- "language": "c++",
- "name": "evaluate_args_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": true,
+ "language": "c++",
+ "name": "evaluate_args_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": true
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": true,
- "language": "c++",
- "name": "eventmanager_libuv_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": true,
+ "language": "c++",
+ "name": "eventmanager_libuv_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": false
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix"
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": true,
+ "language": "c++",
+ "name": "examine_stack_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix"
+ ],
+ "uses_polling": false
+ },
+ {
+ "args": [],
+ "benchmark": false,
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": true,
+ "language": "c++",
+ "name": "exception_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
+ "uses_polling": true
+ },
+ {
+ "args": [],
+ "benchmark": false,
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": true,
- "language": "c++",
- "name": "exception_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": true,
+ "language": "c++",
+ "name": "file_watcher_certificate_provider_factory_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": true
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": true,
- "language": "c++",
- "name": "filter_end2end_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": true,
+ "language": "c++",
+ "name": "filter_end2end_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": true
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": true,
- "language": "c++",
- "name": "generic_end2end_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": true,
+ "language": "c++",
+ "name": "generic_end2end_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": true
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
+ "linux",
+ "mac",
"posix"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": true,
- "language": "c++",
- "name": "global_config_env_test",
- "platforms": [
- "linux",
- "mac",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": true,
+ "language": "c++",
+ "name": "global_config_env_test",
+ "platforms": [
+ "linux",
+ "mac",
"posix"
- ],
+ ],
"uses_polling": false
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": true,
- "language": "c++",
- "name": "global_config_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": true,
+ "language": "c++",
+ "name": "global_config_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": false
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": true,
- "language": "c++",
- "name": "google_mesh_ca_certificate_provider_factory_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": true,
+ "language": "c++",
+ "name": "google_mesh_ca_certificate_provider_factory_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": true
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": true,
- "language": "c++",
- "name": "grpc_tls_certificate_distributor_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": true,
+ "language": "c++",
+ "name": "grpc_tls_certificate_distributor_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": true
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": true,
- "language": "c++",
- "name": "grpc_tls_credentials_options_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": true,
+ "language": "c++",
+ "name": "grpc_tls_credentials_options_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": true
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
+ "linux",
+ "mac",
"posix"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": true,
- "language": "c++",
- "name": "grpc_tool_test",
- "platforms": [
- "linux",
- "mac",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": true,
+ "language": "c++",
+ "name": "grpc_tool_test",
+ "platforms": [
+ "linux",
+ "mac",
"posix"
- ],
+ ],
"uses_polling": true
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": true,
- "language": "c++",
- "name": "grpclb_api_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": true,
+ "language": "c++",
+ "name": "grpclb_api_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": true
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": true,
- "language": "c++",
- "name": "h2_ssl_session_reuse_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": true,
+ "language": "c++",
+ "name": "h2_ssl_session_reuse_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": true
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": true,
- "language": "c++",
- "name": "head_of_line_blocking_bad_client_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": true,
+ "language": "c++",
+ "name": "head_of_line_blocking_bad_client_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": true
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": true,
- "language": "c++",
- "name": "headers_bad_client_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": true,
+ "language": "c++",
+ "name": "headers_bad_client_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": true
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": true,
- "language": "c++",
- "name": "health_service_end2end_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": true,
+ "language": "c++",
+ "name": "health_service_end2end_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": true
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": true,
- "language": "c++",
- "name": "hybrid_end2end_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": true,
+ "language": "c++",
+ "name": "hybrid_end2end_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": true
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": true,
- "language": "c++",
- "name": "init_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": true,
+ "language": "c++",
+ "name": "init_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": false
- },
+ },
+ {
+ "args": [],
+ "benchmark": false,
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": true,
+ "language": "c++",
+ "name": "initial_settings_frame_bad_client_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
+ "uses_polling": true
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": true,
- "language": "c++",
- "name": "initial_settings_frame_bad_client_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": true,
+ "language": "c++",
+ "name": "insecure_security_connector_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": true
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
+ "linux",
+ "mac",
"posix"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": false,
- "language": "c++",
- "name": "interop_test",
- "platforms": [
- "linux",
- "mac",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": false,
+ "language": "c++",
+ "name": "interop_test",
+ "platforms": [
+ "linux",
+ "mac",
"posix"
- ],
+ ],
"uses_polling": true
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": true,
- "language": "c++",
- "name": "json_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": true,
+ "language": "c++",
+ "name": "json_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": false
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": true,
- "language": "c++",
- "name": "large_metadata_bad_client_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": true,
+ "language": "c++",
+ "name": "large_metadata_bad_client_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": true
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": true,
- "language": "c++",
- "name": "lb_get_cpu_stats_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": true,
+ "language": "c++",
+ "name": "lb_get_cpu_stats_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": true
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": true,
- "language": "c++",
- "name": "lb_load_data_store_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": true,
+ "language": "c++",
+ "name": "lb_load_data_store_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": true
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": true,
- "language": "c++",
- "name": "linux_system_roots_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": true,
+ "language": "c++",
+ "name": "linux_system_roots_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": true
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": true,
- "language": "c++",
- "name": "message_allocator_end2end_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": true,
+ "language": "c++",
+ "name": "message_allocator_end2end_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": true
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": true,
- "language": "c++",
- "name": "mock_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": true,
+ "language": "c++",
+ "name": "mock_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": true
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": true,
- "language": "c++",
- "name": "nonblocking_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": true,
+ "language": "c++",
+ "name": "nonblocking_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": true
- },
+ },
{
- "args": [],
- "benchmark": true,
+ "args": [],
+ "benchmark": true,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": false,
- "language": "c++",
- "name": "noop-benchmark",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": false,
+ "language": "c++",
+ "name": "noop-benchmark",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": true
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": true,
- "language": "c++",
- "name": "orphanable_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": true,
+ "language": "c++",
+ "name": "orphanable_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": true
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": true,
- "language": "c++",
- "name": "out_of_bounds_bad_client_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": true,
+ "language": "c++",
+ "name": "out_of_bounds_bad_client_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": true
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": true,
- "language": "c++",
- "name": "pid_controller_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": true,
+ "language": "c++",
+ "name": "pid_controller_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": true
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": true,
- "language": "c++",
- "name": "port_sharing_end2end_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": true,
+ "language": "c++",
+ "name": "port_sharing_end2end_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": true
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": true,
- "language": "c++",
- "name": "proto_server_reflection_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": true,
+ "language": "c++",
+ "name": "proto_server_reflection_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": true
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": true,
- "language": "c++",
- "name": "proto_utils_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": true,
+ "language": "c++",
+ "name": "proto_utils_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": false
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": true,
- "language": "c++",
- "name": "raw_end2end_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": true,
+ "language": "c++",
+ "name": "raw_end2end_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": true
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": true,
- "language": "c++",
- "name": "ref_counted_ptr_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": true,
+ "language": "c++",
+ "name": "ref_counted_ptr_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": true
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": true,
- "language": "c++",
- "name": "ref_counted_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": true,
+ "language": "c++",
+ "name": "ref_counted_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": true
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
+ "linux",
+ "mac",
"posix"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": true,
- "language": "c++",
- "name": "remove_stream_from_stalled_lists_test",
- "platforms": [
- "linux",
- "mac",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": true,
+ "language": "c++",
+ "name": "remove_stream_from_stalled_lists_test",
+ "platforms": [
+ "linux",
+ "mac",
"posix"
- ],
+ ],
"uses_polling": true
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": true,
- "language": "c++",
- "name": "retry_throttle_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": true,
+ "language": "c++",
+ "name": "retry_throttle_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": false
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": true,
- "language": "c++",
- "name": "secure_auth_context_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": true,
+ "language": "c++",
+ "name": "secure_auth_context_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": true
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": true,
- "language": "c++",
- "name": "server_builder_plugin_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": true,
+ "language": "c++",
+ "name": "server_builder_plugin_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": true
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
+ "linux",
+ "mac",
"posix"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": true,
- "language": "c++",
- "name": "server_builder_test",
- "platforms": [
- "linux",
- "mac",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": true,
+ "language": "c++",
+ "name": "server_builder_test",
+ "platforms": [
+ "linux",
+ "mac",
"posix"
- ],
+ ],
"uses_polling": true
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
+ "linux",
+ "mac",
"posix"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": true,
- "language": "c++",
- "name": "server_builder_with_socket_mutator_test",
- "platforms": [
- "linux",
- "mac",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": true,
+ "language": "c++",
+ "name": "server_builder_with_socket_mutator_test",
+ "platforms": [
+ "linux",
+ "mac",
"posix"
- ],
+ ],
"uses_polling": true
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": true,
- "language": "c++",
- "name": "server_chttp2_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": true,
+ "language": "c++",
+ "name": "server_chttp2_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": true
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": true,
- "language": "c++",
- "name": "server_context_test_spouse_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": true,
+ "language": "c++",
+ "name": "server_context_test_spouse_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": true
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": true,
- "language": "c++",
- "name": "server_early_return_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": true,
+ "language": "c++",
+ "name": "server_early_return_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": true
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": true,
- "language": "c++",
- "name": "server_interceptors_end2end_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": true,
+ "language": "c++",
+ "name": "server_interceptors_end2end_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": true
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": true,
- "language": "c++",
- "name": "server_registered_method_bad_client_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": true,
+ "language": "c++",
+ "name": "server_registered_method_bad_client_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": true
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
+ "linux",
+ "mac",
"posix"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": true,
- "language": "c++",
- "name": "server_request_call_test",
- "platforms": [
- "linux",
- "mac",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": true,
+ "language": "c++",
+ "name": "server_request_call_test",
+ "platforms": [
+ "linux",
+ "mac",
"posix"
- ],
+ ],
"uses_polling": true
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": true,
- "language": "c++",
- "name": "service_config_end2end_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": true,
+ "language": "c++",
+ "name": "service_config_end2end_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": true
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": true,
- "language": "c++",
- "name": "service_config_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": true,
+ "language": "c++",
+ "name": "service_config_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": true
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": true,
- "language": "c++",
- "name": "shutdown_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": true,
+ "language": "c++",
+ "name": "shutdown_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": true
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": true,
- "language": "c++",
- "name": "simple_request_bad_client_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": true,
+ "language": "c++",
+ "name": "simple_request_bad_client_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": true
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix"
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": true,
+ "language": "c++",
+ "name": "stack_tracer_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix"
+ ],
+ "uses_polling": false
+ },
+ {
+ "args": [],
+ "benchmark": false,
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": true,
- "language": "c++",
- "name": "static_metadata_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": true,
+ "language": "c++",
+ "name": "stat_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
+ "uses_polling": false
+ },
+ {
+ "args": [],
+ "benchmark": false,
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": true,
+ "language": "c++",
+ "name": "static_metadata_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"uses_polling": true
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": true,
- "language": "c++",
- "name": "stats_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": true,
+ "language": "c++",
+ "name": "stats_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": false
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": true,
- "language": "c++",
- "name": "status_metadata_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": true,
+ "language": "c++",
+ "name": "status_metadata_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": false
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": true,
- "language": "c++",
- "name": "status_util_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": true,
+ "language": "c++",
+ "name": "status_util_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": false
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
+ "linux",
+ "mac",
"posix"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": true,
- "language": "c++",
- "name": "streaming_throughput_test",
- "platforms": [
- "linux",
- "mac",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": true,
+ "language": "c++",
+ "name": "streaming_throughput_test",
+ "platforms": [
+ "linux",
+ "mac",
"posix"
- ],
+ ],
"uses_polling": true
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": true,
- "language": "c++",
- "name": "string_ref_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": true,
+ "language": "c++",
+ "name": "string_ref_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": false
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": true,
- "language": "c++",
- "name": "test_cpp_client_credentials_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": true,
+ "language": "c++",
+ "name": "test_cpp_client_credentials_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": true
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": true,
- "language": "c++",
- "name": "test_cpp_util_slice_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": true,
+ "language": "c++",
+ "name": "test_cpp_server_credentials_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
+ "uses_polling": true
+ },
+ {
+ "args": [],
+ "benchmark": false,
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": true,
+ "language": "c++",
+ "name": "test_cpp_util_slice_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"uses_polling": false
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": true,
- "language": "c++",
- "name": "test_cpp_util_time_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": true,
+ "language": "c++",
+ "name": "test_cpp_util_time_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": false
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": true,
- "language": "c++",
- "name": "thread_manager_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": true,
+ "language": "c++",
+ "name": "thread_manager_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": true
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
+ "linux",
+ "mac",
"posix"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": true,
- "language": "c++",
- "name": "thread_stress_test",
- "platforms": [
- "linux",
- "mac",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": true,
+ "language": "c++",
+ "name": "thread_stress_test",
+ "platforms": [
+ "linux",
+ "mac",
"posix"
- ],
+ ],
"uses_polling": true
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": true,
- "language": "c++",
- "name": "timer_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": true,
+ "language": "c++",
+ "name": "timer_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": true
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": true,
- "language": "c++",
- "name": "tls_security_connector_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": true,
+ "language": "c++",
+ "name": "tls_security_connector_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": true
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": true,
- "language": "c++",
- "name": "too_many_pings_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": true,
+ "language": "c++",
+ "name": "too_many_pings_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": true
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": true,
- "language": "c++",
- "name": "unknown_frame_bad_client_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": true,
+ "language": "c++",
+ "name": "unknown_frame_bad_client_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": true
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": true,
- "language": "c++",
- "name": "window_overflow_bad_client_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": true,
+ "language": "c++",
+ "name": "window_overflow_bad_client_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": true
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
+ "linux",
+ "mac",
"posix"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": true,
- "language": "c++",
- "name": "work_serializer_test",
- "platforms": [
- "linux",
- "mac",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": true,
+ "language": "c++",
+ "name": "work_serializer_test",
+ "platforms": [
+ "linux",
+ "mac",
"posix"
- ],
+ ],
"uses_polling": true
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
+ "linux",
+ "mac",
"posix"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": true,
- "language": "c++",
- "name": "writes_per_rpc_test",
- "platforms": [
- "linux",
- "mac",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": true,
+ "language": "c++",
+ "name": "writes_per_rpc_test",
+ "platforms": [
+ "linux",
+ "mac",
"posix"
- ],
+ ],
+ "uses_polling": true
+ },
+ {
+ "args": [],
+ "benchmark": false,
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": true,
+ "language": "c++",
+ "name": "xds_bootstrap_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
+ "uses_polling": true
+ },
+ {
+ "args": [],
+ "benchmark": false,
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": true,
+ "language": "c++",
+ "name": "xds_certificate_provider_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
"uses_polling": true
- },
+ },
{
- "args": [],
- "benchmark": false,
+ "args": [],
+ "benchmark": false,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": false,
- "gtest": true,
- "language": "c++",
- "name": "xds_bootstrap_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": true,
+ "language": "c++",
+ "name": "xds_credentials_end2end_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
+ ],
"uses_polling": true
- },
+ },
{
- "args": [],
- "boringssl": true,
+ "args": [],
+ "boringssl": true,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "defaults": "boringssl",
+ ],
+ "cpu_cost": 1.0,
+ "defaults": "boringssl",
"exclude_configs": [
- "asan",
+ "asan",
"ubsan"
- ],
- "flaky": false,
- "gtest": true,
- "language": "c++",
- "name": "boringssl_ssl_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "flaky": false,
+ "gtest": true,
+ "language": "c++",
+ "name": "boringssl_ssl_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
]
- },
+ },
{
- "args": [],
- "boringssl": true,
+ "args": [],
+ "boringssl": true,
"ci_platforms": [
- "linux",
- "mac",
- "posix",
+ "linux",
+ "mac",
+ "posix",
"windows"
- ],
- "cpu_cost": 1.0,
- "defaults": "boringssl",
+ ],
+ "cpu_cost": 1.0,
+ "defaults": "boringssl",
"exclude_configs": [
- "asan",
+ "asan",
"ubsan"
- ],
- "flaky": false,
- "gtest": true,
- "language": "c++",
- "name": "boringssl_crypto_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
+ ],
+ "flaky": false,
+ "gtest": true,
+ "language": "c++",
+ "name": "boringssl_crypto_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
"windows"
]
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/0149b46b88d583e05be0fb1423d10f2a14d36c48"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/047fc351e73f760d329d5a8845944720be9ce773"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/04ef96c66d8222d1a2c07e6b2a6548e6a527042b"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/05a7e16c1d7f92111f43e9c777421879920e79a4"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/063eb46f202fdfe7935c30ca38d7eb81c82db419"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/064773597c295fa871c184fc12d17b6de8aab31b"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/087449740758b114d16790067707934479946bd6"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/0a5d068feb57a2782c6eba57b637abe8668ac82f"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/0b81e6d89bf7df80e87e5ee7c49f7cc1431f77e8"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/11409339cec708a5e353893101bfe76364337d5c"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/147696a264cd6f197adb7c68aff834c30b1b77f8"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/160e5cac38c5c9e919ed6e4fbafee76907d63044"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/173d02167db431040b0540d98f6fc5e8b456587d"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/18a3fe239806b3c7d1af24bcd2bd23aeeb072d5c"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/195abd83b2e9d32b1b5b854fe33da44b6db40880"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/19af2509c7d84334b9ec64de4767a07d5294fd72"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/1b9864b948fcf08b062fd4401ef55b214c259535"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/1edddfa67de854d7faaba41418fda845e9c6a89d"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/20031bb00e6608e1b570aa96e6afb9de06d42167"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/22b4c7ce7db99b0df63c9eae9265de484b695922"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/27416437ad287bd3cc1c5efdecebc39f20df73c1"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/27e8cd785c2b9346f68dba75761b52fbabaf2b72"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/28236f860d3d8e5ea11176746cb4c1c5c4f1f6c0"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/29e15b492c5a409938092a30c003c5c34df7e283"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/2a47864d77749aa042b772895dbdf46f608ccc6d"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/2cca5cb1b135c35f6e5e1ec4c37deb9e12d37dc0"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/2df27b6c42dbaee382a29a87338d64ee87354acb"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/2e9ddd1339d8e599cef658a08965985c4f45e428"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/31a2d12a84a7a56ace831a9668d6ab4847390679"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/33cb9ec0ce3538ed6079b5fcb127649a5d05955b"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/348d9ae6eebb2e1644addf7f07231d108cf6f3b8"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/359f76f3c802292e92b0640de2bfe051e780a3b6"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/35a479988e965a6e3e75138b64b0bd1f45073e2f"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/362b00d713686ff70cb0199f3d7d0058e5a1a27a"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/3849c1625071791ceae709b9c6c705b28d099d67"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/39ef03c66ee2d4bcfb6c8da50486dcd40f02fb12"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/3a3ca061863499ebc171a4f910fa1b49523baad4"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/3a890f3fd01b048ac9db65a9a9b4f4443268b91a"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/3b9554038a425bd1fae057ba41f9366bb467e946"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/3ce0ae4aa226f205a3a4e66bbb253419d9d754bf"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/3dccc5523986c37e27684659bba8a1037e7a92e8"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/3e0908c15b1cede4541d25f388b1345e8641e221"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/3fcb181ff6a8c8e2ba38ed34cf78f7482eb55cb7"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/41c9b5f720eb8f8fa04c840375a881781a849b43"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/4257a018f08f13a3a9adc848ef808e1be50bc4cf"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/42dfc5c4d13261b7259e65cd692df9c9d607194e"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/43144664aedb585d45d42aa5249ddbfe81afe470"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/43e5ad495a47593b17dbcbd3e70c2e25a417bb6e"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/446614e45b7bef49118b17e031c48faf167ebe3e"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/46492477fa84ca88e85df914801af0b09b0939f6"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/47157f83b166b57e0052c98a65c6db864fa6cb9b"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/473fc9b6d768a925527d3ad805ca363d490dc741"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/483c0b4015100eee00f6b23d1100d8c4953dd3b1"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/48be2dc4cdc5462407b319caa855d976cda88153"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/4e84eb54a0e438052b0c2e83653135042d9eb59a"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/50839d5c8bf33f0970986dcc4b73b024f11a95b7"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/523d964986d8ad966ae07e540a608681098813f9"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/5410b8190c95dacd36d6e6ec75b7538a630e08de"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/549b2891ac79f504a7c9ea00f6d7527c34ce04e6"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/55321649e7b7f1b5664ae20724e683c930643fc4"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/55cc52f25865baee3e6e52c3110a9723caa2b3cb"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/56c22410e3295ad03aa31552ab888f581756cc17"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/5724a705b62a7548ba2df1abe4ef0c970c4e1bd2"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/576a148c107d56861d1611641a6f7c7921061c5c"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/5a6b8263e8939f851cf5b1e347a33d97253b7b3d"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/5ba93c9db0cff93f52b521d7420e43f6eda2784f"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/5bd02a339fd7705449388580c75bfcc597aba954"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/5bd6fb6fc4163bf3a9db6ddaf509dce8df8a5000"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/5d06fc38005503af3d084721c60e574fb9d2f370"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/5ddc10489ff3269bdaa3051b70fb7af455ee1104"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/5ea9d515f0d10b04f1356b9463139bfe121a6e4a"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/61c449793347cf2e1ed0c38d54d23c63dfaabeb8"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/6287389c373e9788dcc04f9747b4be1fd1ef3028"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/64d4de4d5aafab7ec388a7fe83066c1a4d1d9d68"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/651c37806d2ac579dcfc97643c3c1ea74dbb8774"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/6551d02d20573cfa2944ec1f12b0c01f264a1326"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/65f029414ee10e45ff4b9f305f7b472364cea538"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/68b75a17fe2db060df3e61a597650ba99079abbf"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/69e80594dbc5c4c648e39883a650b1760f20ab63"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/6cb47d0e640b4c41e32f13c0d64ee46eae1b80b5"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/6da5fe063432cb9094c7c083efdbbe5ba4246d18"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/6dd140da774d85f272fb587dc1b2a85d881a7c21"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/6ddab273597d73be49e2307d68e00fa18bba4765"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/6eaf85d84fbf47ea0619d0dba8d366f4e3ff0be6"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/6f751cc09af8113f6ecd491b1830bd8454c4738d"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/70d9eb29a70d483d07e2faca6b00098af78d1fff"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/7192effa1058382b379fb7b87f1acad5ac554d05"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/730e85d6a62e70cb6721009b903782ade4ff73a2"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/74002471a854059cb29de7cad8f9fb7adc3c5ec2"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/747f2330cd1fc4a06d54b376a9a6528d0364f0ac"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/749d5d7a9e0b1545b297117e834462af32b3e230"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/77de0b1de120ac702ca45868b1008a48626daf12"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/792c67398bce19a4eeda32653c994436e79456e5"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/7a3022b248c8960289e4c80c7cc8df409499e5da"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/7a9372081294a6fbd3fecdd91b99589c98d4948e"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/7bbe4ba828947550f4ad089d5989cb695ecbdb1b"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/7f1ad514a96f0c3d5ca5d6f7880b929a65eeae96"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/7f2b075f0b6707c38db851747e2578343eeab286"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/81ebc64bfde3fad37af5a58ef7f1c5c3c54c4b5d"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/82fae081afaea13831404024d39658344d56e1c6"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/83ba41cea1adab707f7f213af5e2ed734bdddc25"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/841a3f66c94e5acd836a44cd5a8514d4ad45d83e"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/841ef94ee0f1b0b45983d95b75aba25421d73f2c"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/843b0aad4a9707c5dcc92d12d876b78675cfcb65"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/8483e3d92eda8df504b1d1d0d012f4bcd778cd33"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/876830fdff4e59038fa2173b700faef5bffe61de"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/87ca3342fdce0c1f678a3f1b62428032ef51442d"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/87d044027cdb7d35fadb56532f497764246946a6"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/88ce75ba18bdb7e93a81197d850f4e792f6a8155"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/89dc55e8e20e811e78c952c8bd2c16f55fe72f57"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/8a215a58908f44bdced595ceb01a81977f1d72f0"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/8ac7459e918304ca40b1cf29a3ac0f555eada678"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/8b93e50a911f3ea0e0b0377ba4636574f2ee9a5e"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/8c9ec0ffd803505772693833d56e7a02110645b3"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/8e4b361a530dc6825afcfb4106bd482c3fd010fa"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/8f6690d97bcda890f2a5b2930a2b7a4d7b56c6e7"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/917636de2c14dce2580d4308249a94d61d62c305"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/91f11008defda918951bda868cc68c6373fb0e6a"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/92e01a34047b660a798086d55a3d8d7100a01939"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/963fafadb4de09dee0e6a852bd61b1740039a465"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/97bf33ec97b93fcc2449431915911a55b906e3b6"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/99e31e12b02b02479d10b2c08426906bd93a0840"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/9a75ce693e7259d4d3bb9203dfc0a65f8bbaa466"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/9ac0d956f9743e026baad7319ba2a75d9f1a534f"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/9ae56d4451dd3e1b66ddc250d84dbf6d8cae0dbd"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/9b9a3a1e4023c9b172060249752a482a3437ef2a"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/9c81164e10bf612c352dca3ecabf57743b451d42"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/9d8b420b5d32deb0140ab91eeebba58ca6163722"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/9de687bf1e2cfac54c3b2e2eb85b53014a460ff7"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/9f3cda19a186bd11bfac361b464f92daa129a33b"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/a14fc6a608121f8abf0fe25cf466720f00f25653"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/a39906074669a6b76a35b0adf2bf36ad751f3b35"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/a454ca483b4a66b83826d061be2859dd79ff0d6c"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/a52df5607370ff0f56d821000f3d5e386a01d489"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/a56eaf47f7c7263e53efdc55ec39063dbb4ae71c"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/a79249fb8f7d53f0a280359d2d9df31594adbdfc"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/aa98a46f25004f7436aadb36ff8b7f07ed7bfce1"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/adc83b19e793491b1c6ea0fd8b46cd9f32e592fc"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/afd8e19f7bfd6c963f1856be59b75627864821dc"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/b3966239b8568442baecbeb0f8a1aa29dcdfd7ed"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/b430d41ef65493b3e917182c23ce90df983e01ab"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/b44e715e0cfe05f0c92a9e000ac3c36aae17df9d"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/b4cf4ef7b3f64eff76cf99091fddc04411774708"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/b53d84468ea93620a9824ca65acf1179f431e763"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/b6ac4831cc5baabee9c8ab9af9ca3923f91097a0"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/b7f4a484866a8050dbc63bc905c9803c6964eda5"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/b8f21e59f90431c982d5ec3fb54ae4605f102252"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/bad10b6581cdead8e7cb96e4f544dcf0ea650fbc"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/bb01bed86b43257be9f527388e1183f52438c473"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/bb7497b00f0d999ef39dbf81c6bd0441e32723b6"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/bf01b72e635deda1b4a8468f1cc36f01a54e1338"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/bf8b4530d8d246dd74ac53a13471bba17941dff7"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/c08bc84ab6a512b901bb730beb05c8394e4f1c5d"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/c244b635d94e6f5d6b344887434be3e001a04b41"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/c281efe9620da999a637ff6e9b3279ec613fb992"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/c30a212824ee71e215f475f453de17c65a200101"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/c449427f35b7ecdf5641073629f7723df52c4cb0"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/c60240cd3b02eb71e2bf5ebd59afa3a5dc9b5e4d"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/c60cdf9c3fb9060838f445b3bc3852b6f81e1e4c"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/c72d0501bacadb45242c553ba292591302f12a6a"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/c739e7b5ad999edbdeffdab672dbc30deb3959a0"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/c7d73b12a7108d82f8dac6d8a6a34f838601aca6"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/ca781e1add632433293e847ae9e71649c217ee5f"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/cc48e916f40e8d69c2d07cfda42c7d3b7fe3447a"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/cca1aff4c08ee4ccbcb6f80e1cd1480a0a093cfd"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/cf6ae8bf1d08d25e235b7bee0839984bbc04edf6"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/cfc52fa086292c699efd7bf41d2fae3deb449536"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/cfe13ef3c6c713a059f231f0001ecec97e2a932d"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/d14026ac6421bca7161024f4e735cb80a1068d01"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/d2fb6e8f7867fc1e2ebe723da2b5246dc9cc6b14"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/d4db7d51bdaa4781cf12c3b59914bad414d2a41e"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/d533da0e7f8c1e39bb025b4d7a89613142a6f54e"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/d5cf489d01a1b847a7aac5dddabff23fdc218e1e"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/d686f8561a249c7c15c78f76a5fceb884286e070"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/d92424daad9d96a40e5ab177e3824c36ef51dc0f"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/db242a11ed88b2b26af46770dd1927d9f35301fb"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/db32eb04db13d58f65f46d262608bd088987c063"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/db39a953317951759e40734de6607a0b4457728e"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/dc5e8f3102456bed90d17303bc4cff1a7e076d5d"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/dd9542bbed8e5dc58da2789edbfb9c38d578d3b4"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/de2ebb1ed324385de500a1a3308846239857c3c7"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/de8ba9158254c1cd84b53df1e4cdf1757b1392f1"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/e1dd260746f50024822a8b729b89545d26decfb8"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/e29add81b20dc570fdc885782689f6dccb1c5fad"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/e2e99af62843cd3b29d50daeb118e58830784da9"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/e46611c5daf99662e1576147c1623409752a1f39"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/e5a1ba11af830e9d2db201c5164f75747a85fe9b"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/e6026ee0badf216b326443a5f708446b2f2e579f"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/e6c7d2c0038fa1f03fc6590a726abc98f4c641f3"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/eafdef6a630bed71bd0e4f3d4a16b5fa0c920651"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/ece985b9b82e27281514d460709d7edf8203ded7"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/edb8f4259f756c2c4bc731f05beaa36f992cf079"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/edce7778c2e1adb81dda3d057a6536759a7cb293"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/ee4040c0dd406dd616c49ed2c37b40478dabfe0f"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/ee69f2b380663d051a70f30fcfce9f79f5341e5a"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/efc6743e47274058771bb6eda1fefa017bde4a95"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/f0038e54162000694d882b1acb80930c807b41d2"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/f1deb9e388c877337dabe92f31b01e2a019a10f4"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/f3a09373e4d3c7310d372089e6deb15d6b22c198"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/f3db7ef6495fa1ac5bb4db293fb38dd59122bb7c"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/f434bb4ceecc573e085d4c3ef453ef01e93d9c89"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/f55bceaad42ddf9d2b37fdfca68255d29a696109"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/f62ca5321428a5d23f3c804fb51eb4e65bc58716"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/f7c6a558b8d0af64db2b139371a7af7068b01b92"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/faa1781e1444bba5b8c677bc5e2a38d023a1ec65"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/fceba33ada1dda05fccedfefd331c9a201f1a2e5"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/fd668bef6fdaf7f3ffd58d8c60ce550476652e60"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/fdf06b928e37e7c4ae59a568b5723ad98bbed6e5"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/fe2fc5d499aeb2762387ef2e3ce939280813dec0"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/alts_credentials_corpus/ff548d368b090409a138e5cc4afc7f43b4a3fbbd"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "alts_credentials_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "alts_credentials_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/001946397b463a3562c5951f6325069d8a3a2ded"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/0083d5addbeca55271ed7ef93c8016bf7ca76903"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/00c8446b230bebbae2b473552b174a06b446337a"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/01b05a9eaa95950f697627264bbd5006060f68e5"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/01c9569f5835a576fc50ea03141662c7ef1aa088"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/025215e11687c7d2e0055e5b2b902d08e0436f78"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/02ba99615d1d69eb328adce99670f659959c1bc1"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/03abf728ac1d833c2d4a9ff7e0c912b949edc04c"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/03beeae554ed6952e94a0bf32cdbe9f97eb3ba43"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/0458afa7b507195f5d2cb51e887324d6361eb0c4"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/04bef86965e816c0cd330896ecd981dd3b14275c"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/050b79c8bf73ec690aca18072cdf95810c2efe8f"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/05b4eaa1e1a759aa6b23521c06d915174e8fec88"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/05cfa5deaead322efce84b710758a24440cef16e"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/07048654244e377ddf246e8cc18f71443035cd2b"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/078232947d7ff25557e836b4e9e907214e99b320"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/07b0bed3226eefac4a84000ec584e4ce06ebf1bf"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/07c4d3b37e850941d04ee067fcd356cf9bb4e0d7"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/07cec5c8d9c856a910c6fb57da2ae954f44beed0"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/08a8a647b6a8f47ae10852322d14832fc15021f1"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/0949f4ac376808482be6ab2dcb18a2ecb08d9a52"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/0b6fa6330bce65dfe7f758bcbfca2a2844dd07a6"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/0c0169947924a15b1b5fbe8f9013fd94d1931a36"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/0c27c9999302b39bf2256a90b0cdb767fb2b6fe3"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/0c30868720d5e1a19ff23c53740749c37a43540d"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/0c5e0660ddf5f14af8f3fbcc754a967506994c9b"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/0c6f2e0a2232788cb20c4f52ffa18d7ab8f0b938"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/0d36da88698737ec1ca7b55b30fe2b2036de7e19"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/0d407f099f8418de3dd94bd2146c858a8c6575ad"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/0d4d486aa9fd6e9c10cc9ca8967e922cadddb2fe"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/0d8c547f1d261ba07c2648bae009636c17709600"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/0d9ba07b57eb0e076b187c4455f662db085e730b"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/0dd33527db106a3e84172e8f2189734b00ced4ed"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/0e354d89d02c6c5cbba2f140dab7b609bf00793e"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/0e3a18f0f08dcb9dd174627bc997f74a5c7a1390"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/0f6b989cec08ef9da603dc83704d85900bd22f1f"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/0f7480eb0099b7706b221f610d2613b401d6d3eb"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/0f83cbec19c834f534f353f4fce20c0cd88231f5"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/0f98d7d56e9a99b97e5dc7eb122ef22e9684077b"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/0fd8859246740606c498755ab00d6147abcfec00"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/100bb8f2e6a0b41da13f4edb5c15d4a04e564840"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/101305ccd08c7a8bd0c2913c37d3dd0d39d4bb64"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/10b25b0726cb6d820165699e5a453691c7a9c343"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/10f5d1937cb068fee7f85e2654be2bfe77498bb9"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/110074f658208166d52897c9266fc46cbaa8af36"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/1160214cdb23e8fc187078a8d6796656c1ade925"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/118ffddb43ccf9dae8bdb4702232d1dc39b021f7"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/1231c6d007d9e43d169122348363e20d9f25ee93"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/1306c4c6ea714d4db0e4d814c944d8d40335e0fa"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/13a9b61e431c20734c19bb36d85883b6a501284e"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/1402bbcac6fa24eeb0475250e33f704096e2fb45"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/143e0d4f546bbb984a7c3ac1c60a37dcf85ea58d"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/1526ac4266e152b029b7c283255fe4fb6507f726"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/1576c915ee38f5bd19f285ed0ed47e36026518f2"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/15c8bfec99ff18b11211d464c824fc139cc791fd"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/1602788cf33d0354d6d48ead549e5137cd211979"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/1698ec182fad9d973b84615da3a683ecdf2d0b3b"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/169f579e66b4b8ff423891a40380e648e8d45247"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/16c85fba7b4510ac26c0fb91886d8bd166a7e780"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/175f16901997fdee41ac9ec88f7e018d46d774e7"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/17b1758fc7cd69a00d140f113b1ac894023ff20b"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/18185cbf9e9cfc1fd28d27ed0d651d7cee6a2c06"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/1859e2ee759e20fe195f67615a1576ce2b7d5bbd"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/1875a4acdcffe505ca92ea8af8d9d6b174736e80"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/18850965807039500c7f5450a907e86825cf823d"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/18926cdc608599e8df6b0f4df99d4ad856ef4373"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/1965cd58fc41578a837231c69075994da2e871d9"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/19876f91bd6e71eb4caf6748425ac645f3e73c5d"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/19e984af62c36fe982284c87421d8ee46173e9f0"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/1a9017db5ad8a9dc6cfe72305da1683a87a73452"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/1aee32faadffa3c2ec508e8fd30006423665488f"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/1ba08b63181066ffab948eb301a6a2363a81872d"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/1bd90335afc9e0a1e6a9296e3cc27c03c1201886"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/1be157b0fc79f0e7e1e05dfa3cbbe1ad71528bc2"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/1c222dae4e2cde1fca9f9bf6226200f70d625342"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/1ca51ab2fefef4f549c4a8e7f4910c6b5a4b4b1d"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/1cbcaad71950c62d41bab50f9c242d014cc0d904"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/1d19042e6db2a90c52fcc3cb0aa76f2fd335014e"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/1d458954e8174bbb5dd4d0053df47d6b7adf290a"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/1dc86d0febe4adc5353230cea24b5f7cce829283"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/1dfbb6d67ad8d2513a1841ca6f82faacc3783b61"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/1e64080289ea4168304417f3fbd86b01d7d6f431"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/1e84d42fcf18bbf81ef6e8a16a0c57abbf8d292a"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/1f040e756f76357979f317e0c6541f72fd93df06"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/1fe7d16ffc2084d5d3c5f23d16902ae8810a5393"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/1ffc4952225dda41de59603e487ff7fd3026b958"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/20216d27af2b3dcc83d944e5f7a489ed2eff98fd"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/204093594b568ada9c7857a971f2a4b42123ee1c"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/20539e464ced1a0a63d74bae731ca0a75db05967"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/205cf2b6994f10b783aa0a06938a5e47cb581126"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/207e12d6a84dc8fa020b3a60b3f75932ca4f8fa5"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/2086f83879663d7fd7fbd9a5b96ab6b5a555858e"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/20ea73876cc9cd5b3d3efa1bda21deb5eac2d61e"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/20ee437b7f456ebb19d98d94d9feb1d5e9174c65"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/20f43d29547f865e9832fd567c2a5a5899512c4d"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/2166c7093c424a2136c4cb8b10d0b124047320d4"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/2185f411bdb1edc610f16ffc86836ae366193e03"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/2197f63b9ae90f5374726d0c5b252e729014a9cd"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/21a6a133f3d1e06c077032ba56a7df4161f62efe"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/224fa2e83fd8ecaa9059ad37a55238f74b8e0829"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/22661803bd1c7198df4be6e08924ef6a48af9cd4"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/22741b8aa6129655a8130305da40ae1d1500b844"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/230527b90b0179139c961aca426187893191fdf2"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/23066692f06a4802954b513a98546b3ac9b9ab85"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/23e8c1377addaf67019ea36a084e0b68ca7a33db"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/2467fa0f8a9f4bd121f544892f0782498b2df533"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/246dcf347eba7f4d4e04d97dabc002f0acf2164e"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/252de25a5237c830ad8c5e4732c176e03785042b"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/25761748660a64111a8daa46f72ea1f336c2046a"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/2585dc7b6c095e978b56e0249fe9b5c61a4840af"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/25949b623930511f9d43fea4aa56a4389a28e11a"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/25d2969baf8bd256e15b2ab72707682b2d18b40a"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/26110f21dcb0fde99942e631366ebbd9d895860d"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/2663ce44ca5832381cbbdf7b252e39d6df021a93"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/269afce3bfff993c05c2a3b28c6cf3dfb3f461d7"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/26b8a9d27cef1ce4c3c5aefa2dee50001aab4b13"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/26f250ae38865f030176a8801ce992536351a326"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/2717067bbc0e9bfc1d90d15cddf6154800a25ec6"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/27bb1ffec59d4475dd9076b408b2cc4e4e17d229"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/27f37037525aac7a41ffbadd6ce52e5a1851a2b7"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/2825cfc19c9371f4fe70851283c68d49470d4d55"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/2862adc802092f1a422416a1666a5142f71d5d7f"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/28680d04887f96a1167dd913573ec8daa2a39625"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/289cdf83f89f70a13e9078259f764a339617c827"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/28ee8cae75efa07da9649933a9482d00643b5395"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/28f54e558b181e294e101447c7a79d976fe36fcb"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/29303c16f3afa18c2c0b84e77e587535a705a74c"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/299034b9e0cc8d91c049c489dca6d1a2b8b08959"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/29952a15459cce9c647255ab5d7486df0507eff4"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/299faa82b90ef12421d160148dfb6cd0077b57c0"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/29be7d33920998bae7329d77d4c81989eae91647"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/2a8260b23460f90f770cedcafa14868d24db201e"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/2b230a7b55b17f2f8e89c4be73a662d781f7fb3c"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/2b5eb5aac77af905877bd98ec2c4d746b247abb6"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/2b71439e9ebf611a92386b9f21ad44bde7926184"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/2c1c3047f9ca95e64cb158c09eac2ba17455e918"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/2c1ecf05c5dde692ed16502294e9570ac3b02600"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/2c342f8715556398d49bcf3343b5a249d968e19e"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/2c452818a10ddef09b90c89a53db14b9b56b21f3"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/2c6e69067c68c145dc5d3a60b86d8081fdf95d0d"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/2c79128c697b53256c56b9c57c7259866e0e2347"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/2cc43573f271ecd332551c1fb34ebc8645eaefe8"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/2d83097b3cbd2245b085e749fe923fb590790e0c"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/2dce4a1fc4bb00bfcd43d549a3785913c9280369"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/2deb1aeb93c2abca4177b1fe886eb354c83fe8af"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/2e888bda20346a2e19379e72ff04aa063897bf0c"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/2e9860242d55a74cec244bb5c5445eb2797a3157"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/2f288409c5f3cf2a10b3e1970a9c3d037dabe080"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/2f5f6d281a3d0473a04a17cbcbc6fd06cb73fd8b"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/2feb41037f5dd34e9f3465a2fbf1a6d355c8ce9d"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/300998021c7f743ff49d9cc192343ffd43eb47f2"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/301e10bb6d9f60d91efde4e0c48893203a5b8b88"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/302a11eb9b9687464b88c9a670da371f6a6c57e7"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/3104e3fcf2fe43d5a748772a04ae32a1c828e6d9"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/310b2aff5e2ec78b6004630bed39d49f8d13bb21"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/3128887b8e02f1873ed6b36766a870543269ea00"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/31545e9fe4c6aa43329dc0d4a735842574fcaaed"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/31d12a2b1378120d15b4097371d792daa95de0a9"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/320dc10f64b59b0eb0ae140912eded1ef9276556"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/3233f2ab3b6c9431289ef7dc4f40676d0128bcad"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/330dd22142ff48078b189f4533ccc56878d88f92"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/3336748264594689041e4080b51bc56f716d0689"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/333d0554d91872e693d118d6988132d95b7920ae"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/337d579ab5eb157d7d58e9287d447976062cbd8d"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/33c32a80db0ec311ee8744991c5b19345bfd8fe9"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/35fbd748458e3fd6068957d46a9fbb2b0113d2b3"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/3608078afee69879bcdbc2278e6f314469426bde"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/361c6f4374443671f039fd9659577e4460178020"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/3656614c7b0dc11d4dd7e1826f77fa96a88c420f"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/368c75135a7341a96627d0dcfc4b2081003d8979"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/370b2c16cc353621091eda4964d4c4329205ffc3"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/370f893353f792c99754ece93baed2105decd71e"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/375c2462d6ae891222686f9519294811fa5de010"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/379b177d55b1eb86ddb66dc3a037fd8283ee07c0"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/37c4aa3ff3947065ea7850574a82a29af35c1a39"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/3a01c85934363bd2067f76d0d40c491f9f846c8a"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/3a3eb65d51f30f4cd16cc6f8436a5b00702a5712"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/3ae87e3150628c422ada13002b08f2d9c5a9d78e"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/3afbc4c35885b79c6e6628afce93ce852d7767de"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/3b3b4f9a985ec49f6c54bae798208625e5adb777"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/3bb052abecc1b916cc869b9aad29c9dd55a95068"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/3c01b1f89d50fa37fcb3457cd3dd6502fe84e25b"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/3c5fa483ebfabe6e684831ce7c413176bc998c33"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/3c6444b64ace5cd6c145614ad4412382271a6120"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/3c7b516e302ad3503a933b5dcfb8c58acaea07a0"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/3d4d961511c1de95a81b129f2fe96390209de2e7"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/3da7577acd806e1d92d48211b22fd9db352fd834"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/3dec1981e8677ec6ad2517feba29869d53f8d884"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/3e8f531043a07df2280bca73fe4a7987d82ce67e"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/3fc7331ba0cf4e65fd120c9925ec0134fe683b22"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/3fcc2da89f438b247cb5b4b41e15aceccfa75b36"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/400e6759ebf559748bde92047368f7c612457edd"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/4040224f3df361afe45bce682d56d26f13829413"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/4045d25f065bb1d70a8b9c3751f7453d4b0625b9"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/407cedf992b14edac6e19f7d440ab73c88e72465"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/40948412b61caddaf558a73661caa8c1d2f858a4"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/4097094277bc09981f428280fc0cc0f590f20ded"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/411966ea7d9164fc432eeab55a55248ad808bb01"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/415dde26637ed3c0e803111c532a1a9ea9c49092"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/41aad2f11a7ab418213352e84de872d9997db8d2"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/41b499e86caed7b48c59aaaf51360c3c71029400"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/42554ddbe59429d30d718282ca606ed8b5a90eb3"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/42c395ab373346fb283ace021bdc1f6428f92f80"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/42ead79c94eccdf8a8c3d8036be73e14fa260dd5"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/43202ad9b1a689d919ab9ae91c2d0223394867bf"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/438789ebe8a5d676f6f03ef8329c3d77579aeba4"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/44153f8b7af5a3b27625a46af89e1712daa3ae8a"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/4492f9d9339873fc83bf248e392b0dcbe28c0f6f"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/44b6be630161765a3de5872629602ca14789c3bd"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/44d64196fb2e8d9506734a81304f6ef17b9bc29d"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/44f0973ec77d6fb9eac931e84fa7ec6fdadccca6"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/450f9f56c80c8b71e37302a254ba7c3f7298dfd7"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/451e69ab65e0fe0a5731622ed21ab2b5380df677"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/46dcb1c399e5a514267fbbd5a50939f34e0ad6be"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/4740e1ad2320dc991596716087180e2965a38863"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/47e8aee44c2c7bd870f15b50fc085c5a8030edfc"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/48521eae3d7e3f60237d1ed792a3c0f141919a19"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/489e9830136adcc53f4b191199c33504685b3737"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/48a3f2938fe5c8e383cbb028a36a943a64800f03"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/49112bf1277d93601eb6526fe9ee9d45864d759e"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/49c5568cb0de363bc9f9298f1eacaace6c8a268a"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/4a11af9ef42aeb36691185520be281c4760ad27b"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/4a4553c2e939cd50981bc38e8ddb1f2109ddb3a4"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/4b2ce115b15082ed951f4dc0b432da6a9d37bf85"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/4b585eb75ebca2187c0aa5a6abe4c8125aa80127"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/4b611a3748757e2fa89fcd2fb22d34444fbf5b42"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/4bed84590a55b06d7eb30d8faa4b00a881ba9b2c"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/4e05d6cf1c3f0c04f6ee92d09a53ee0fe35c085a"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/4e21c4b5c454df51c102f09ea1ba78c42133ee16"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/4eaff3c3515a1ca019d46b9be0b7318eaffb63d1"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/4ec113a0126fc5746fa3f955727d009040e8377f"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/4f5b9d5c707a35084918c272efd1295d301ca0b5"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/4f8b5b7489cca36225acec0f9aa7f5c556d79d8d"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/4fc34239f220392581520aa8cebc659daa65a7a6"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/50ece7ea16659b4e1a2284cea963fab662c19e6b"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/514c9cd7b6519b596900d924ff2caa173d688f4b"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/51c6c5297acebf9d21a8a7d6261d0a17c2adfb56"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/52939682304314f04897deddfbc9c7afa8ee50a9"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/52c00bde7f4af95a86deb0a6717d1faf2828a939"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/5323af7bd1b45a816c8f8e5c689f5a44fbb14a01"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/534c900ade27c8f7fccb1f3b7e7703f77f13a8f5"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/5360327e8bc8969f31b364df3081b51a1e03900c"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/5369926a559827d08bccf264876d592c7cae660d"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/53ef530f65b0cff2e338a51b469c224f53b628d7"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/542c958c84d1e319b9ba23c52de2c4bca08a8dc7"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/54555ceac4403855f4cf20367f7be05714c46c51"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/5482dc4af170def9c183315efaa48f9c186926a1"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/54d1bf3559344653a4f758f7360c46307cdad159"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/54e67ed1036f3f5b315e0e3c02948c30eba900fd"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/55ca8f6d9928c239a7abb32554463e6e1e1ee084"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/560c1057487e6b0d2d457748c3ad8434423eb263"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/564f203f678fb333c7b1f8f4df79237589ce346d"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/569d50f1d1307e63a549a8a8fa677c2a77acc0ac"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/56b0ac0636c57838f63415082b3ae2ec7a93f017"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/570ca8d2555dde94aa3b3121e8f5256e83eabe5e"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/578ef036a0278e79f7b935293be37bc8c0467269"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/57e7cb796ac65d2e3ea2255b162da4b9873c83f4"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/57ee6efc38f4c544a3ea3e5e73987e825bdf2980"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/5821752bf8923fdaebc8484662624d8acd382716"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/58a067ec6eda7191a5a910d8120633271d3af074"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/58bcbd601894835bb3312d2a0bc56f2e0f65984c"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/58d6dffb65a1fe1bc4e3fa970a15459587a32f77"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/58f6d7756d89ac2eaebb50c6d1d0b9f5fa0ce357"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/591d46b83d2e6babc0ce3c753c4606a10c46d7ce"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/591ef436ef8cc982b48fd827a4555b57cd9780e5"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/593792bfb0489b02828c93278cf869e6fc8bc230"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/598d346f284bcff26d1de997c4ba5c4794c90b68"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/59d28886db21f371ac9d999b68b116bcf425d971"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/59d78f6397f0483d139f5bd0a9f264156f34acc4"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/5a2447fdfdbf123f4592c1284007b7d50a01750b"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/5a52d683c9342dd301b0e699db36175aad715e1d"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/5a8cbd42a033b7899383d48c3929e517dafbb995"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/5b7ff7c113c2bcf125271d22c937f758a0cd2ee4"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/5c14b48da74ab06b3cc20c4fe355e24f7dd7852a"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/5ca233a53e3e425cc12e04b466a49789291eaa00"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/5dc7b2086a39f56d8b9135f524d34a01fcabafd8"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/5de72e607205dc17a45df703ec4e9b63c36821ec"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/5e1659e7cd840ab3f958273ebffdd215f2c81da6"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/5e25cf639ba8ea37543d944f5efa94824c6272ff"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/5f247d7b6753f7a8798cf952f49f303c532e017c"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/5f3fc3d381f07c2593cd70d9889182fe67ded2cf"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/605e474e9d9436488dfe084d348908e4dfab81a3"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/6066fc9e28b4ce704230f0e8cf21e7c3195aa2a3"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/607dac8012f188cb035b189fc3637028137023e0"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/60ece7fac04e244655a6091a7fc6eb76f07c7192"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/611343a6b8879b393ba2f38ed41c7f5355355920"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/616e55354ba3517ce6762d6cd56600f97915e646"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/622d46854c2d38b5fe632649d58a69b7da0803c0"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/629dd62ac0c44a5bb49a5b4b5e4d3f15852a0991"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/62c843359941660da3fc9eea62a5732aaa3be283"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/6353376941f932ad6ea7620be8673c27ec106aba"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/636a19b8f50c4efccccea83ab78a933d999e41fa"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/63a1cb41d219394c9bab947202921506f3574ad0"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/64696e93ead18265cdac3fb37dae29ad3be6d764"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/64af31c3b16ccf2e182998ef7739bc3d33781d8f"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/64c0e0b4d9c2d25fdcb1e2bdcb999487fc096dad"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/64cad305e1858eae27cd723778fb9f4b7052eaa5"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/64d27dc9f984c49d421a5b0cb0391992d5aac1a4"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/650f74738d3961af2d1fe85ad8fc8212ea13cbbf"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/653ec14661c40ea25bdbab4a7cb9371c669d10d9"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/65c7a3ead9676f7669f0e93c432af714c232e5d1"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/65cc92868683dcf3c5d1bd1a73db9473d6594bcf"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/65dff388749da6a44926b491cdc555f61d708171"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/66145518601b1405361df12570f6e0b2b9a2e5b3"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/662d81374a2c96f867ccd88a4295190827c45453"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/667ce3f1c874125b7106bd5520e60e865442a712"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/669256f857011c32f5757ec19b2e5b9a372f6c23"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/6749752b02f7d14fff9ac35f6b68dd62f5b49fcd"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/676adbb1e5b3f4f9e3cba51d3d4ef963ba4ea7e3"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/67e72cea2b7042f08e8dfba5191d27bb390e4d00"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/67f160446ded73c408f4e5a0665731b642b6edd4"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/6856c7cb02d2ba74a60fd47140f042701dda63b3"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/685fbddd9ea612b25e325a50bd659997b4d77da1"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/690158fb146f7f3b3ea820979307a8d8e6f38314"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/69542ed81b00a5ec8daaf4e8d509201eecd502c5"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/69be4179b28e408a0574935e893c6986bbca0de9"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/69e14b73af03e8f2d998cfcf16215f65bf589efb"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/69e52eef5dd0c51012b5c974cf70f4074ba814a9"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/6b1698d096095d4035ce67a8680b52eada00cce2"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/6bfd3679f4e30aaaa1808e96c980edcfa9cac1c0"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/6ca3910d5f4f7967311853724b072750716dcb48"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/6d054bad0bd3c522d23221d71e3987a0e6875150"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/6d1509889d26c2ea16f5d12d5f6490dba7f1565a"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/6e2796549e29e5066f780a5e926fd6e3bb362450"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/6e71553967212dfea2c9995f3641e582d8c2105b"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/6f30de3096eb71f697885fdd9cbddd9ee6ce46c4"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/70b8a3a8621ae1ede2b8a4a263060fc2e277bf2e"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/71106770243ccca03f5025aadb298ee3a825824b"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/717695057d76b81c344ed8c23cc024195caa9405"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/7353a7b2ea9f61325728b2f118416549e89dd79b"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/739228a1400cd69c47f110002c34dbe1661e8c41"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/7465a4955a064e8f1bb777d4b0de5b3df8469831"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/748c538708f0a2f586d7ff5f662643b8f9137a01"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/74e6831be67485fb59b8e226fb8a48d88faf57d6"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/74f8cfb3d1b8422927edac90107aa280a8a2a19c"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/753efc088d6023ca113a12acc54015a22f7daf9f"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/759a1e2e34cad14321a5e5790b1e6a783312fea1"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/77cff7548cafe87410e4a0dde3ba6892b25594d3"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/77ea9180617391d8503427a1c060538182f7729f"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/7885df741c88ca4b539798d9985c445f41cc2929"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/78abacff5d3a1e826a30f278ad52237661018a67"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/7a7e42cad11ed5ac39966d23efd04777265fc50f"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/7a9a12b15c798b88f1a599779f52d14edf9f4ef5"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/7af3156d286a32a6a6fede46d93ec12ded1ac138"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/7af41e5391204f4596cb1461792e2e23f9390b7b"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/7b8922ed2aef31167d305571a4ebbf7c182c502a"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/7beeb19272131701f3a0d1dd633f1b1969899366"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/7c2e48b0d08aaeb95b5ca26036384aa2cec9de77"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/7c73c0671308e37a8075a20863e70e180ef8b6ea"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/7e0e459a0794d4f91954eb6e0b6a09685fa71c78"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/7e18989175bba8d9aea34413d6f328549e1c6825"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/7f1530d4b702e68d043f89d9e63d314319dcd803"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/8021c689f0078c5c59419c9959f5c58472245bc7"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/807b8c4ca068cff4bc0fc8e854c1215a2fe65960"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/80bd4827db81a1da28fae8c150f5e2d46651c598"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/813d2c34c0df8d4a918e68e58cf0ae3703d0d46f"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/822cae715352b8551c840be2c7e2f98df455c9c4"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/824152f7bd022996b41327002f6971cd9900b265"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/829a1dc2bcb22a230df8aa20540def0e16864983"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/82c0e02a867a5fdfb805e01ebf1a008220311e27"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/83019387566fd48738546cdae398f750cccdc437"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/831248cea079b629bf0ef6d9d02c159d6f8ed41b"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/834527ef0bc1572c584938ca7fe5336961754708"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/8382c249fc9c7a248833d89de554e63807c475f7"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/83baac5cfbec61ec277114aae4384a11a576b8f7"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/83baaee9b46770d9eef0e161a6e52cda76e3b043"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/842cea88bccc41d7e2625dae8ff7268ee79e9f57"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/850c639595eae3cc9c2cfef473e28fd4e8174dc8"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/857ce08213a5106c746767352c6863d7bd134208"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/85a7e47ef707d3b31cad924ed6c697c3678ab569"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/86eb156ff8ddd7edc535840d412342ada6f3b184"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/871a2e4d73a7fbb50f71558517a2f704b7fdb868"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/8795e24f23db36e4f9ab609c9faff601b984eb6f"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/87967bf3b1412ff60c5bec8815f4b031aec26b4c"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/87c8549a5e524609c29e6a6ae32a3a301b72c286"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/87e97b460042d045629263ad10ff3de7b000f0a1"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/89cf42c02d7135afa6c81d8a0c2bc4c3df557769"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/8b0cf53ac17015fe066002cb3814933df9ee96be"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/8b5c4543923da5e468aca1de1ab880aed2ac4451"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/8b7b914723bfc23ec650cb91d209141641fba09f"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/8b8b9fcdfff1f891b1694614b7309cb4a2098f4b"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/8b8f6d58dff9ab0c37183ec93c9a600d5ba5d9e6"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/8ba00963037c9ff548b7a702497441799075f14b"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/8bacacba71bfa5c74fd74cb6577a49a7aec9cf1f"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/8c527bdf0f304a31866f71cdb298511041ecd320"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/8d352ea63259e26e1bb61f5a8f78254be4e3e7b1"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/8d9784f85e9662734e180ca8bec2164425ae8a87"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/8dfc4e78007040009f37109f9ca928c31b3ebb49"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/8e3f138d163022d6e105ab595788f4cfdd9b9db3"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/8ea624983d766ed45780378a3eec24eb2faeb229"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/8ecf066a6728b30e1153ad875562165db07b0d0a"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/8eeb8cf054ebd546ca0555ef1cd4ac6a08628917"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/8f05b8da748cc04e64b688c4b435fe64699bd481"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/8f980dd25f1c77e3536131c2c620aa32e8c13180"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/8fd4873d307af2d217f5d2bf02b495ba681fad74"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/8fd758e2603f1e3772cfcd295ff0f951988d7648"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/9018925b5e791ae4b3ae9c84b8a4d47d86671c2d"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/90a9c3390752b94ca19a58cb2fe6267bc818f718"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/911e2ea20b6c10431e48f70d9933987815926a9d"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/9125277ed9ec5d59e51f3e1a8d97d25ef88a5d4f"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/914464d372dcccf31ed5331293d84121e17616bb"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/91916df7c8f04d8c2b6b8f4aeaeee6972ce0de74"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/92cce6dc5c31acd62347b15d89d52ab94b507e0f"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/92ea0d3200665e1836ac12bed0837425cb9f43de"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/9329b80d0125cc994d7ad36540c7a8265d76983c"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/934a41b5027d1c5cca27ebda57560c38cb9e09ea"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/9354652806d96b09c8e7082b1b7d22e7c3fb9f0b"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/9398ac1c2b4015792661266a9c84b6d7a68c3155"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/93ac93b7deabdfb4f86eb37a1e9f6669957d14a6"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/94108ac8420347598c7cee743b2a158b1270fb8f"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/94cb0b9e26e4a800f3d413f3617111bde2438009"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/954ea72fdbeaf5b46d18c6d5bb77fc1a0f97569d"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/9552c3f6304af40224b800f3a3a5df3887a530f6"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/96e5126447131d3d59cc6547f6b91d3433ce37c8"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/970fccda0b34b59ade44d52e1212699b4d2419a8"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/97c4b73f72b248b4ebf4bf30892d0db828a85297"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/98c0c0a3c8c05aec3082755a4635e65baecf4752"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/98da5edafac67704810f093b38c86e4c77b75349"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/98dddd3f679af150e9933bd864ae20e20b7aa25a"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/99099024a3f3e389f57cb7b697eb34485846f316"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/9912de197918ac0e305f0c0107f863823e8ae818"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/998a54dc94ab6e7d6a6066415fb0dd9b52356171"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/999d0995c2f09beda8783eac95d7643a11d5c89a"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/9a21cda420d50994a8ed56e147f8316b75514db1"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/9a3f9531b10e8e0874699ce3e35031a35feee5d5"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/9a43f48d4f6219618f8cc9e876880fe81109ad72"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/9a4da2a37a26c114e1226bfbe1cf80ec5ca99a66"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/9abf980e8909aeb31936553ca22ccfd8680c4dab"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/9ad011d38bed7470e7f60780faf64d8f008b9b04"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/9b1355c6e2c43ce83001bbead09a79852e04feef"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/9b4d4ce0457f5300d6b4b309762acfdbc41e3965"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/9bd059ff0a90e86ada1ba7e5b90ae04637ae9e90"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/9c4eac3dd734a74673c76e6b21fd9c18cdfa831c"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/9d2dd744ba59c1e8ec091e23938e46d1bb5ee519"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/9d362d2aaeee243a5b54621d8187c4b16f87c9f5"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/9d43a08a964c82abba4a47246b1955d9e3609f6e"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/9d6947df24c9ebcbec72c568d9708d7b1ecae63c"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/9dfdce1b090a559a14f9a5852f78547413b1d1ed"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/9e2ab07030bd35a4c31df32c79aca5e76c1d04f8"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/9eaf2ad607a943141c29f334b2c66c2e59e99980"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/9f0ab521c728be21e93112b2730c52bc1d6c0021"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/9f2316ddcea948c947fbbf35ae87b767b8c1dc55"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/9f8e14ee5b4a2095f917084b60b5fda33f21d9fd"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/9f9ed47f98b4905f1f6ef2b552a66905bdf79b1b"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/9fee3212240d4bccfdab3696dbbc579b06d39982"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/a09ef34c93fe0ffc13045f67b7ecec683fb72e98"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/a210d629c305b89a34b7ff3c41ae4566cd22186b"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/a25b31398669b585ccab97bceadc31994de7ead7"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/a29a547671badd3154789e1a02bdb87332fcd6a4"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/a30fc2605f4e74f7003f902ea4a4c994e3ce9bfd"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/a33e1b28074a41fc5c2611a67161ae5638a47dd5"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/a39ac9e92b41d1889096ed415b4c2eb1aba6ed50"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/a3cd54d43d3b3bdfcf224d636dc11ce1b5ee4d30"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/a4874327383ca168f9d9d59cffe327f61e9a6610"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/a4e4a0473ac1f2b8de86efdf00fcb382a343126d"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/a502dbaf3c842bd86e9ae513e8782eb23c70ad7a"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/a5592f15d5424ab7e16a18e77027ab91c846d90a"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/a5c2fdae1a1c0487d00db0eec6e3429b12244b1f"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/a5cf80b996b2ba8c9580f8ecd22720c48de41044"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/a60ae4e21a913e84405814f18555f0c179c24167"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/a649093880c2a2f143f861893eaff5d30be95eb7"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/a6603e797695274d10bce000f66ca0a715f7d8c0"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/a6d4b6043d86c376e9b166d5ca395f3e099ae229"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/a6f0d1ed80393ec0a884718b44fe2dc9f852d38a"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/a706f2067bfbda7837eaad68972d60547e2957c3"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/a814c5743d492b96d2b402f9e819bf8406262224"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/a8249ebfe91327806446f14a6b2e7d9c8440257f"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/a8e306820fb76566b522c23ec68bdce0ad0536f2"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/a8e67676784506d2e6eab3a0dfa25e53a80b40a0"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/a97dbb159ef9bc6e39c9c25e04315752e871e739"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/a9d71e1ff2912d8874e38fc61cbd9a8ef28af4a9"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/aa878edb0100e876e00e310ae221b220fdb5e028"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/aaada46c7f3bff58c2dd6f4a8394135ed5f253ee"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/ab27fb527771c7d86f74afb6864e95402328ec0e"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/ab8d6e1ecbd80c6223b8623a386c61023502a57c"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/ab90bebd4c017827a6d5de61511445df81169eb6"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/abd52da5882855a63632a6917df3639538928cd3"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/ac38a6572f8420b4df37d9e39088d1905fced71d"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/ac727124e46a249419f088c8665324a11b357b84"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/adb9bf315315338bcad85929917b9def2aa098cb"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/ade2d2f0e120a9527487e9b92458ee6844800e4e"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/ae448bfe17f9a3a6eff074d4caa9f7261c94d2d5"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/ae8c538d4ad7f2996ac724bad7a075e1aea32556"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/ae8cdc02275a1436bc131bee52a17ee797e2e6c9"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/aef36c49d7dec0dcf8cdc224d9e9221fa2cb1db0"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/af8b24ffaecdfaf96c0cd7c76f31dc9e1b4d0935"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/afcce9e02e0696a2af073855a386f589cc12c94d"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/b00a32e8bfb75e75f31410dfe3592da6248275c6"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/b09f98e13e5b67a4dd7f74eff00bb247b9967844"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/b0af44b49dd7c2b2e02ed4fbc7658975338e352d"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/b10353c265bef989d8909055fd6cd52e49eef3e6"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/b24a0dd1bc0bfabb832f0d1c8410c018c4ddaf4e"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/b24c25c6d4b57a5f3d64a0adb205bf4f150c9138"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/b26a3a83d0b319ce13a9ae164e90fa6da1b05a57"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/b283eb8884c98dd50523995ce221aa1ecb3ca182"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/b2a79b262ee3966c5ce7c7b42dcffd55d7d0956b"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/b2aa4861b5104e8bb8bb173f4b023a2172a7b9a2"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/b306bbbf43b343ce3ea91f3ecf08501411c57e9d"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/b3376cb338d9ff88fdef2f8670a09e973f28f6c6"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/b33eb7e1bde4c69671dbbf9489b4d4b87c5d23fd"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/b387e46c23912785e6c353ab49b8ea4a92c2c2e5"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/b39bfaf6a3072d8a50984dcc54967e9246f8d3e5"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/b3cfcd55b0331ab0c931b8c61d4df41464587f10"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/b3f33b78433af7f607bc99b569b0cef95a1a6ca0"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/b46e762671a5e28c7061da3baee6fc41dcc0122b"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/b6d86bedf3cf19441114e463458a454709e627b4"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/b755933ad6e318ee9e0c430ff69be7a515d44def"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/b758f5c019696f33c50895168219c0e6cb04e11d"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/b7b664a39372dd6142b8ef7906857e4ab3f1fc84"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/b7c31bb5f6acc65b88e31400dcae71f7be392c86"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/b93fd0a15287dd035eac86e547e3ce42183bdb28"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/ba25be123c630bd3e4aeb9bda6304dd1a7e51365"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/ba3566735888b53712c6b2e6d52ff5f2197afd6a"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/ba942f8fb244b60561a067129c242c4bc4fdd5e1"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/baa28a5baedb645f4430940a4b4b1142f4b03e0f"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/baf7839388e10ff0c410a58797482cb83693b309"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/bbc03bf6274a79528d43e200e8f1aaa770a155d6"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/bc9e17fed43c5d0668a87e8d6354c344c5b4d00b"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/bcc7340f8876a7dff381ca676efc39d30eed9f48"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/bd0bef14e73aa1073eb5acb6e4cc901c976335f5"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/bd275178fd473028a5cedf7d5780b27e809882ee"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/be1208404991b11ef9e246d2f3537ffd65a57824"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/be3237e72b3d8d56eec0520145dd7d1a5064eede"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/be8cc5bab95e0ea7af538ca11175d710da6207d9"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/be988fc0c00a8422020dea3dc72451b09e25e1ad"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/beabbe93f1e9b2e56f729af30559ec03a00f53fa"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/c0deaead93c9b3f2fc211fb7f0711ac192715a40"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/c24143cf5f6f77f002e0ab82e3060906e2e7d062"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/c2f666569d0c6fbec701fc6772433afa22a1dad0"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/c3afa705dab02fea4d892134e7c01c3af270cb6e"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/c3de41124a14ea562360aabc9e12666851bff2fe"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/c4c53b4727e9e1f040c5d7870639dd3daa184ddb"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/c4e60ae7c05b12a90dd7c43fbc85ae4be7540f18"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/c5d0c169d326d79fc4ee8521b282dbcbf33c1d5c"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/c5dc5f5ba9c2a2af7e91e200a8e82ea2c44f3a56"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/c5dfb4a82f91d07041d4b0ca6cc34cfa1e9c7199"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/c685689a9d5b259afe237d857b7c6551dc95c176"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/c77087b4651f4c62a780d77a3b4c233490244e8a"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/c77ee0b6cb21ab7b7cf222c7f6563b3b1b1b6eed"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/c784ad2e205ba49b5bb1302746723dbc57320981"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/c7b17d6ae5f3b155532a5a9bf0239c098c35eec1"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/c84da54dacf04445b50448a70fb0ecdd08e9234a"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/c8b79e05649da58817a10ee6160a00d80b4a217c"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/c8cb20176e427d2e108187924f570ef1df6d440c"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/c916ea9c6901c1e77af764773bd2843baa2ebdc6"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/c97ebf43d8a5ce5cdb8e93a5d0362239c284ab4d"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/c9b92995f282262c51aa7106608eee6cade3245b"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/c9e2cf8be8a4dc2294020026c62840ef1fb4853b"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/ca0db313bf949ba3f87a5254646a7a7dc8a7f89d"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/caaf9a7751c0eccc34f0fc00a048012ab5ed2f37"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/cae3827ca308a477c16852cf8a435881a4058719"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/cb49955601d171fd14c9ac21137b221392c7dab1"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/cbaabef34763f2fd922e67ff5f2ea283347e9823"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/cbe59c62c6d36c7307c438159327e320cd2fcf57"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/cc4197d2381a75b674fe4944b8c690fe69a0b3b1"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/ccc36ee2c6a0daad65a4d929599fda5cd38b8fd1"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/cceb4c620c02337138e489383db0d4f4e2c7a722"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/cd4be18b1ae872c40580edc4fe8cbdf1fe2a3881"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/cd76ed6aff7e074b0cfdcc6305ec4e453d8304bb"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/cdb000a2d87e073efc9491c59707289f6bc18fd9"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/cdd1a4e358ee2396ece54b32c1f0a8d0a2e3f3dc"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/ce1c326f3b0147841550ce3b5126390764bae8e8"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/ce990633c0f2b2a2ddb66144ed942d4bc9bcd8fb"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/ceb297908903ba0fc24982ad4e6010e79dfbdd5e"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/cedd54df6d34491dbf7843c2621d6818418aca02"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/cf75632ee185df2cbbbe148e2e1ad5410f11d361"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/cf922d44bf08d223d3ebcd37a7e77d3e43555d08"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/cfa40fccc5ea4304e83ca26f4e567765c2c08627"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/clusterfuzz-testcase-minimized-grpc_client_fuzzer-5765697914404864"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/crash-12b69708d452b3cefe2da4a708a1030a661d37fc"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/crash-133500314833c9037b34a4c34ad779dd78a0fa8d"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/crash-14ed70cd9ea7987cdd0c8f6e39398ee7c60ee2ff"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/crash-17d5b79ce495f7d3f2e33d95588457281a5e8965"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/crash-3bd02c98286bfa7be8e13c5500ddb587bba74fbb"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/crash-3e52af52deb0ed5d6ef06487d7e475e8fb616972"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/crash-53e93a1906d8442d058500e7107929cdd3e84ff8"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/crash-570c79624a2e4d36be107745d2b25e74464553af"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/crash-8e546795782dffa5d5f5e94c9510aac178fcee39"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/crash-d5af12c391b7bf0ce63ee3dc656ee4410fe496eb"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/crash-d92bb454bbbd415175df541661e3696453ce3e43"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/crash-e470e9fd09a5c9ef303813a40361c897650289fd"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/crash-ff53a3d713e83ae945b8dd1782e21f5b51aa649a"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/d10f52ffae7857c5989e16960942179856f308f6"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/d17e9507af1855fcf9eca78e2d25c8fb2c40a34c"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/d194592e6f471dd487ca2625e6c3da7802ea372f"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/d1b1863b478e1ea71eafac9e03256080c8f0d1c5"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/d1cabc19ce0f9fbe365d96db68eda9f86e005eef"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/d21ca2b01baa21a666257d1a1e0275587eeb565d"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/d24d1b9d754391fd0b11b0456a2e8c6050cadee6"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/d250e525e8ff2ae4a9bddb2e478a90a1242155f0"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/d257c41db22b60cd937de16b9d90a44b9fa8e426"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/d2b5fa141432c1894be8b8242c27c248fd55cddd"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/d2df8e95436cf98ef2189191a75a3d9c78b1be6c"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/d2f71a800612876010558ce804c9a72ad0a1b9fc"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/d3141a71cdaa7a0915c8c55abf2c940b0fd00172"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/d3386702918881101368cdba2c4967e86ff3a7b9"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/d363f288f48fba8fde401978b7e764295735645e"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/d36e015b1e14ecb9559d67bb09c2851699f0aa35"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/d3d7a110638c6814e7bc8b388d25891349de14e4"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/d46c3dcede830286dd9f4a1ba02a20a0b1430664"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/d49450b97f489f0dea74a9f83c71abeba1066d3c"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/d4a72650e8218ec551fef6560ddd136d52828a4e"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/d4a744ef6dcef5cf08d5289e167b26270d39e9f2"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/d5a85ad91cfde27a96960b2e783d2ee43c50dcb9"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/d60440ebffe00597bedf89a47b7cac3346823a20"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/d60469c0b5b385f20d55aa5cca55bc2c801f3b95"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/d637cc9387087de633b9db535d19f64795c43be1"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/d70b2046ee62676b525490b70812c2157e5a3585"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/d727b7edb460c549d7b12b90f581048c9f4747e5"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/d86820c738718311fc75191b5a35cbe7029aaf18"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/d88bb0b7ff687af84f33e6af22d3516fcdac5534"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/d89026894e6c5f8b5c88dec12950f56c4b6924ba"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/d895ece988ad4712b87de8aa9bc273eee315e8b8"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/d90c312791129dee8c5f85cb3308323d0c39b70d"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/d91281daad9b821294db204dfc244b2d0d5496e4"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/da2ec14db88e6f93bb19ba2f0a7306408de37cf9"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/da322a6b88da87babb52d1527fe54cb4ac214b32"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/da424090e1b94c5d0e91e26f3f3dd6c4af18fcd5"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/da4d300d0a8e6f803ec053e3e7689c4b91eaef90"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/da538941f1613c627523cb1be71eb220d1ca2579"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/da8d4c7f02dbeaa543c159b3a4e527059978a429"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/daa680dc94232de7a6949ca6610eddcdbf13152c"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/data_frame.bin"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/db3a30a6d8e605dd587e51b214c42f68bc43cf19"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/dbe415d09cd20abd88c858b8c9b2a9e552fbd8d8"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/dc45008d5a94beeb4aba87c4b26ac6f87df1490e"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/dc4a248fa4c903ce3a571dd18aea575019445740"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/dc7ebba06558484af10b5aafd01ec4fd59276b12"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/dc815fd6d5e817898238481472f359bc50b510c4"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/dcb06a6e34cbed15515e5b3581ca666f704777bd"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/dccd1fd6d3394f5f68c87950ed7356a2e9ef0f6f"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/dd5ac34f5b220970447b2733848de78570c47883"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/dd662353bad317cee7d16191a39e094bfa4898f2"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/ddb283529bf32a85a79a57ac2f2f2d5f18631d92"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/de06dde2c760a56f63bafe6ff102663bf2d9339b"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/de9b9a35e1e7040e842b597b8d2fe4cd602e67f1"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/df20bbbb854cb997a73285ef30d227aa12d90e4e"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/df684493457bc8d87dec2ca0825f7b43978fecfd"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/e0375839ce86fa191b85662247d9b0598ec35a5d"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/e0aa94f5a63cea106ff86739ff2bd85115fd3df0"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/e0d1ee5e2e169dcae87f790f5c27e84a3453cedb"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/e13b774309bbdec8e9d3b1d3f6dbf7d6851e30ac"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/e18cab69ad5cc17c88f8b56ca9929ca8af3eed30"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/e1bd70aa5c802cd4462ff4833c09ed432ce4c9fa"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/e1f2e203d39ab2509d4a67f7a44265b1e6364334"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/e262f378a3d27bc519d472ce3650bdffcd48a055"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/e309e21c69e4b96ab37f675f4e87a52453512ef8"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/e30c4ef6423bd4d872792fbd6954ff8e47d31a97"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/e3422e8f5d63a9ef180aab552353955c7aba90b0"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/e3d12a2385b75443fe38d989e77c252e1f3cdb6d"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/e40b0fa5d814be8f2081ca2c8e0a4090d4893831"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/e442f9fd63bc5345de1c14803d4ca4bb6f1152cf"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/e4c0e27cfd3690b8255a8214d6dd055385d1d24e"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/e4dc0a111e77dc495c5db07df5e2917adb674697"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/e4f55281c481484bd9edc28fd10df0c2e0f7d546"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/e5319a8570a762bbdd67135b49579097324e369a"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/e5a7c086208248a15ee6fa5195fc4ce22469de15"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/e5ac3394971400b6636d029aec7ec665a94ecf29"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/e5e276acd665ccb47f868fe3bc36e647bbb840bd"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/e61f728210ce72ed8b2c066bd1b1ecf9e6824b77"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/e6a08259a7d47601eab5c0249cb6547024e002c7"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/e6b3c920b47e00055226d49b9f715c5d4353e3e5"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/e6c52f2f31db7595d1ecde2939a7390777f15182"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/e6f5cc0702a5f38b9e7339849e1dd2e4001e547d"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/e7c26599fb2e2b031346ff1ba09294fd758f7abe"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/e8323c817d18f0c920d3cf53be41a9bc0fd64b76"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/e969affd8af10a1b87dc63afd3b29cce3e58fbb2"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/e9f7f7f258c72222397a960652c01d2a37e2afe3"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/ea46b684f1e67a27c231f2d536c41da631189b9c"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/eb591d069d89f44150c17082e83c48c66c8e7fe3"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/eb969b9ab1b0d6b5d197795223ba7a091ebd8460"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/ebb0786acc21c6185356eae9a62490a03fddd1f2"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/ec180175f0edea0a6c3eea2ae719b006bc029ff8"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/ed6358fbe6721c9ac01a6f4cab4d2df377eb1f11"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/edee7f771a04e8ced659e7a5ddd6139e75055a7f"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/ee436743977b8e31feec22a91b1ce23dee96665e"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/ef1984d6146670122c7a7246374bca460e7284e5"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/ef2ae7dd190fdf0bd4cc2ae53c5cf1ea7db877fc"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/efdf3f43fb29720dde23c3335cce7be48b761fb7"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/eff9ad9144a2953fadc019fe72eb1cc3447c33fb"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/empty"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/error_refcount"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/f03120d1a8376638e071735bf4746454b6ede389"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/f09410ab7bc19ee1ff206f94e8eec2931faef15f"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/f09cd3e3a16658174717668e51e7382e491df1da"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/f11abb090bae8cdac1f7d9a2e344f2def0e50066"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/f1a5f3011be9748fb83e392e334e46c629a04379"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/f1b9b6803e41beabb1a762d511fc148116e09e78"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/f24f925945aaf5e8b5ee470935e5aa7f847e7a72"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/f2a6bb4e0137541e2b140b976764377d07d822d6"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/f391771de2dfbf761a3eb70af7aa5f0af4446116"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/f41f9319bda14ef21b925c46945b30728503dfaf"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/f4499e3d4bf60ae3ae929c485a13ea4dc2713369"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/f4ae2a2b692bfa83cdde75d007813426e14daef7"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/f4da422d640232e22f2613ebdacff33cecd61aea"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/f5a629c8fd5720236b66a875e96ea22e29c45965"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/f5b1eab444efb2664a295d4e6d087eb209c0c480"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/f6627c55881fe4f0c8e6999980fb226836e6f5ce"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/f66305230042fa83fcd1b98c469d90ffef3ff6da"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/f69aa5666fd60c1b6814198f12d049abb0e9f148"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/f6af3f46aacee395877d7f7909f8e412a6538efb"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/f74143e8160754e40eb4d21a182c970210707979"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/f7812b2aca4d12ffbdac67bcacc41b34524de6cb"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/f7aeceaf0b6d971038a677994b5d080fa0e18011"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/f803c87a92662898e2c8c847787b56d2c31f63b3"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/f81814b5f0191729c62ee5717775e1bb532efe7e"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/f8467d9574de94b9bb904f75a6a7e2405c36f105"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/f84f5d6188cf099465f0b70337b87ad8aa8efb78"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/f8981798dab237ea34051d18b5e903f2300a0653"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/f89ad475ff51a5a9fe18603df833453bed320f36"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/f8fb1348ec3ceeb75c2a03df6a2ead0de6f4127a"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/f91f76fa45a23adfed48a10ec9512cf16bfb6636"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/f9583b3a39c1aecbba6e81d71e7fe9b9519c8b08"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/f96843fdf2d6fdd661c26201d96ae7bec72c6c3d"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/f9940356ee9b212849fbdf0d818b17af1a4f3c6c"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/f9c875c00b7327df5bf21c3e051b55b0d2ed3cc8"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/fb340fff42a4d7ebf6b82adb9345655ffeeb05d9"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/fc3ef8b3cb43e4d2721b252e7fb578d83ed6605f"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/fcc557c9844892675be823fac8788eb694a3a118"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/fcefef90833e6ba74d3e74756105e1f32d985162"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/fda07f0de15cac77ccc54ec221d81cdade189bfd"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/fdb553b8d82e68270a7345b048772bf8367b1224"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/fe1390762579b5c335bbdea73e251b95b979c3c9"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/fea99272cd661a5fde2707e350d67a683a7c21a2"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/fecccfc70b1cf1a524b9f28a9ba2c153c8e14d0e"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/fef80aa34c31700ac8e53bede4a97131176ceef0"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/ffd52d31f9c59a346aa195a683f077dda5ecef6b"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/hdr_frame.bin"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/server_hanging_response_1_header"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/server_hanging_response_2_header2"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/settings_frame_1.bin"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/slow-unit-2b505c78b53599040622864c18644b32c345884f"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/slow-unit-53cf4d25741d5f6e7ad9147b286ff0b40cb500a9"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/slow-unit-82794c7583f365eece6a10ce776d59874490a2e7"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/slow-unit-96939ec880829d76392ba9de2c6ac5b3ff78d20a"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/slow-unit-bf008b5bfe748d33669c905f9b84be60856e57c8"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/slow-unit-d446c0fd59ce5bd844a954f0c4f7e40a891135d9"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/slow-unit-ff38df2c9451c2fd00fd746c53adef87a495da9d"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/timeout-6b847dcc217d2c51134ddf8939e3fe5153153ba5"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/timeout-76a0fb5e7896bbc694a45e713f9729248455aec5"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/client_fuzzer_corpus/timeout-e4cc5c1a9ab8c5f3f7ae3ca97e395beb682d65b0"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "client_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "client_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/0141fcddc9807ee093313b2256f1306fbbdc6cda"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/0255050a9ccb25f46d6c1bf6a5a8a4c0c7635599"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/0320a995a8c76c64c8a0e0297f632b76d9bc92d6"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/042091aeac4cc255506b96fa11c7354e699fde76"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/051268ade45dbed0aab896d7d9f4d10ba89d3b09"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/0696e7bf7837d98de01c915d3c9d80e5d21b30d2"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/06995c2f3f01c7ec50547415dc324c64030b7a3e"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/06f7ce769fe07804fc842462d4be8c1aa2ba82c2"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/0781b055c85ab8fbd0a3d0080a32e394af8761c4"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/080e1f19e6061c5bcac31add2095f87f6ce46129"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/0828169ba82152a8907f1001e3d98804397d4610"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/08ffc4a4160e9fe6f322c28870a89a41fd9c37d7"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/090a7a758898a6e7c9108b7e8a1cb9cda383e707"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/0940663729501b750a18542e1041cc26385c6148"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/0a10bd140c6c5fb109a0816ca061739688a6db9a"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/0a4d3fda02cdcb7adad1daa80d65780c9c8d1464"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/0ad812832efa33e086874fbf3496664d3f1b4dbe"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/0c9996d4fef87bacd7a001e99a515b3ba3d5788f"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/0d6210208831fe55951af56cdeee3d54a91a5361"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/0d784965b2262df7ed7a1eb57b92a718cc76bde8"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/0dc9e41eedf35ccedf4e2b0d230ead7c4d72fdb2"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/0dd470c8939ed535de6b36f7b7bfb68aeace493e"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/0e61e471fa6d3405daef4276ee00cf5fc189f378"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/0e9196f951874edbb5ed098739ea5c8b6c0751c2"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/11442d93a554b9e7f9ab02782bbf9443bf6e1ddc"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/11833b795d04eda5a3af56ef7b3c3a26a8ee3444"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/141272316382b0f3e9ec841c735b84e7aa517c3e"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/15ae43369798e48c396dfe7d53a21878b96e66c8"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/166bf1843c229d34a2880d234dd166c27bdc11fd"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/179e8ac763b4051a953a38b6b3b1f1e1f6cc6c9e"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/17faf0ba8a491a835d35977a9007b90ab7d30d2a"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/188f6cf2470e95b228341de305ef839b27f01a5c"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/1ab3e52adace335d02e2b5130eb4f7c918add7fd"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/1b5150514364e2c17f5a4edac1b7af99b936f55a"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/1e8befb98cbaba059d6771abd1680e19484e7723"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/1e9b962969c359bc2ff766704c8ca8e25f5eccfc"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/1f80af104acf41b912bf4a48fb938267e3718719"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/1fcc4afd6f48e83d61ea74970df3ca9dcd8ec291"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/213a734ccdb813b18ad9f2dd99b7f9967ee1460b"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/2151945f43991c27e123c45dc72b93752a47e65f"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/21545d998c27a5a1572a89a552937752432b1c14"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/23c7443fa1ab713e7c34ec50222b1b8cceaedc65"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/2445bb2c6779712dc9e14c01fecb7103f8732858"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/244b0a20500e31d3c538418800db816b07f4d210"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/2461b9fa6b5bc4b6424dec5b9a18d4ec7c309112"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/24ec2f3e17d3850564788f3fed17a5c586c44658"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/2537b8d6b902b8dfc6e17f194cf7d05ddecf74cf"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/253ad01acea4b7038edc3f2a8c4a0c0f5c4dcd05"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/256d0bbdbed22f5867a6f503bf082011e61ee12b"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/26f0e88adbd8f8cdf778131a35b33ecf8711fa49"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/2e5dd8fb9d2a31fad9d681eda697d085b647b57c"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/2fdfd2abf30c636ec8c841f1ac26594e25664f0f"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/311dac5092e36134d3490f98aa4207425e0ee941"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/320fe6224a5b691c0425e34b6b14e8c6fe9f9620"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/3255f1c7441a7150dc3c33022bfbe8c956c7b7b1"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/33bc9db104eb72891fb096f34cbac191b3f9918d"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/342ff1db70a7616b4ef76c03a42802c6702c18cb"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/344c011df992ccfc0ec682c14a1cb2d7959998c7"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/35775efb9d0d68fa07987b9a84934389b528e436"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/3650168db6fe115fb1e73eed4b76cd224d977d01"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/38228bf98cdb50fd3fa830ba5a9d4c7399063dff"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/38717bee901151b22a10beb12c6623ccc844d3c2"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/3a4bb427a85bdc5bf66ac71db073c99e0dc9f881"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/3ab48621d9b8f075369099a8ec7517bd23fd6e70"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/3aec8d9311130dfbb6584fe6e619579c21992b5f"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/3b14837f22905dcb04f93aed2aa69bf95924fb9d"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/3be63c163805927e04fd7f84d96122c48240e601"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/3bf2e349747c0f539181e0d4084a5fe506811a9e"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/3c5af4d73e94d0e8ad5666b6acb340f929031e95"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/3d2b25346a9671d83bd082d170a45eed739bae6b"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/3de7b860c3fba2bc55707fd6875dce276f2f249b"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/3e2004ff9f40e398e0f41138a25a8b66e3d843d9"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/3f8983e457033cc85997c356935ba9c21460e86b"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/4105669086d83a20f8d991088553ba08202478cd"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/4180619316eef7912d1cf52ffe85897242e1ae88"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/420291d7139d9246de747739fd98102434a742dd"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/4256437fc5897c0cd5d755816e4e68c7be326849"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/42b25a5413c536478a3e63da5adef4250babf2f4"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/42bef44ae751a45c671d9da5b1231d2ac747a48d"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/438c3c9045c3cf7910aceec34f77b47a70ca4abd"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/43af96b4f65ed0ace7236427f2f8833c4835989e"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/44c6119bb91a452d6128ce0ea0d62938800779ea"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/46d595331689ae01d77aff387747a98ff3480096"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/471a307b81dc37459087d41532741c5c9d7ba836"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/48900b4a5557530922ce45c15ad0d3b0a337520d"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/48bcce2c6487b18706ef0c609ca39c456215bac8"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/49027bbd3f3f3cafa315843c8fe8280f86985273"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/499376c5e291da2f9c25999abf4960fab5a92ec8"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/4a3b7ce0cdf217963a0b692769e5d6f4befe73b8"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/4a3fdb96bc8c80f1992f0f72f963f84856cbade8"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/4aae80e05793d7adb42a7e6e8a5283b677318777"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/4c7a034d3a3b4f29d99caf021a0e9bbb89706c2e"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/4ce8a43fb17a075627160812ad26c25210d8a82d"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/5032a75a98cd14d4dab75c1c5e2cd981abb19dcf"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/50b3f4b6aed97f442496d27f3b4315a18ba76d5f"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/51064b88a98658d48a0da7f1545c2d1293ad9538"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/51752f12d59fadaaa0dc72e6370612b84ee1555b"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/51eff6fcbfe1a51ceb3f5f2140c01eea89b4313d"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/51f65f681cf3a1218d83ad58642c06deaea86210"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/521809903d36db80b1ccd707f354361f2bf05075"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/5278e3581c069624157fd9176eddf52c0e58df67"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/52fe8f0e1fa270ea16f66c93f2ffab265ce059e8"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/53de87ae94acdc8e58a369459c12a3240f1294fe"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/54a2b3993c3483745f6314c870a038a8e58f97a7"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/55d60c2e5040a38be8ca41de63e137e3fef892a4"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/5653c44a5b520bdf2bdc599b7966f1d7c44950b3"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/5838b5a683229ebb6e6277e2810863e642b8afc2"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/588d225784891ac88e30ac6eb5651d63fac34083"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/58d51c21a20b6549567a0ab8fee29d162dd3fc5a"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/58f1036d8ff855841ec25b3c33e85a8fec0d94b7"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/5a99df42fb7bbafa2d55714ee235b1c46776b2ad"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/5b42793550699b2c015bed677cfcddc052f73513"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/5b8ca72ba00231c38b19f582127e6a146eba4282"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/5baa13dc95da05e7ba02bbe9583ea24517a29a1a"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/5bab61eb53176449e25c2c82f172b82cb13ffb9d"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/5c6f6b6f7f3e7b435f060abb73c20d2b773a7f56"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/5c9fd9cc7100feaeead1e0e45201945a6e76fd85"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/5ff49c9edc7361797a951585f3e180222c8dd95d"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/6129954942e26c2a9ec071b6659675745613cf3c"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/61fa69b6b51b0ed91914fe48779173f8d26a1d54"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/6362ac61cfb6e964aff78f3cd648475dfd5fd4e9"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/644deba51c79b6ebd470bd4367452941045d112a"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/64beae98e2276749b133e6368c9e0f19a79eba96"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/64d7add9192301fd878854dc96f9fa9053f03992"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/65566df65e8f55428b6672cc351df414fa8f936c"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/65bb703af35d5afb824cd68c41d7a1aeb3848d35"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/66c537bf59cb3667c037b3517be3d31245c9da8a"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/66f576baeb0c9435a56eb7375dadc5b5d630ed87"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/67b4cec5183659aeae0f5bc71b3adf0542a11828"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/68c94721eda2f62481bff9f1d183df70498d0c5b"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/68ee8169a65d58edb9fc1c752ea81dfec383203c"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/6b203d49bbba6ee74def0d35c2266e06ad3c45d9"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/6d580f28d785c0bf87ac351a31a89289449feadb"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/6f231dec759eb2105e09263d53e171de19a92c74"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/70ff6621a09e4f641538cb1b27e8b382b2f56a94"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/71981b55f27a1eb6274eda247048fa2c597f5004"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/71c2b0bebf7f0e916e4ab7eb36d47ccca2b9101c"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/74610e278a5b90aa12ce1beaf222c4306b02ed43"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/748ee9817eba56ec9938601a0e380c74bad4563f"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/7727e3eeb2a48c46bf5a678c300ff8a38b8ffe3a"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/78176d80c1d74c4b1b820d386ae483ac4d1d92b7"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/789abb571563a6795220046f76b7cf0ade90743c"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/78f5ff40e5554aa9c31b45f79a7ae9699f93e7fd"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/7a28fc2e9c72d51d29e87eed63ed405c9779b5e1"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/7a42083be21dce7f96edef1f3b3b2fea0bcaeb3f"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/7a51275b11ecb1efec9251390531681c8d6f2481"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/7b9682cd7a3984698f6eac034c59c0f91b4fb83d"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/7ba7239a29d6183960e3986abc8f19cfb548b905"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/7d3b3d5f23d0ede9f7e5dbd1115db58c8a54a213"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/7ff3b6239b04479a9caf67f45b2d0c619f712815"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/8035c81c95dedfc27c3649064f98f49e3e72c21f"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/804e1052842ce4d44b9c775ade2b18fcb8ce7bcf"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/80514b85933ea9bdd3462595f949c5af24409b87"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/8057c32b8bd28a5ec2105d62f2abe8cf69c9f5fc"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/806a3bd4e078d91adeacedfd3e47ef8ae229244a"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/8090444f98218e65ff9594789ff22bbea3c0497c"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/80e516692955d5f224706f268e247858858e16d8"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/810a1372fa97380265f5529c5043ae96f007f5bb"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/8127597d3c146b2a89579e44daef9d03a0f941ec"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/82ed571f8922caa572d13b4cc9b5c5fabafaade9"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/8328e86178800f87a3bf6f80749984f45b0cd0e8"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/84441efd7d8bdb0ce2fac28f218d3d5d4d77f1d4"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/84cbf70f45a64d5a01d1c96367b6d6160134f1ad"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/85eb0f4502a51e646dab4ae08eabd90613cdf8e1"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/86080f33e4eae21b37863c253ce61eaa13021a97"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/862e3ccf601ee0f7fbd8b23e6811fd50485a118f"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/86bae059b18af8ae263e5ae0022b67da0cfc0fbe"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/870f9cc4bd89c6c04c6a51ceae1efa8634627cd6"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/8762a523cdb78d2344d553fa52a229bd63c44e51"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/894211571f9153c3c2ea4102541dac69be8aaa9c"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/894e9b7832c52acb04bfa994ef53c7105d8db206"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/8b0e12978b8e2eecf62346e438e47d0993845693"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/8b3fa0bd4f289eff6a04a5205e04baaeafbdf637"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/8d1deedd1e463f8c95129a6f839c380a7c83ab04"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/8d1e029bd72381e382c87e61b4c5a9741d80d644"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/8dd1983889b6632228d4897c365a1e6124d101e1"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/8dfc2183691385432f92957cff0b2538e5a0ebfa"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/8eb9b86b4f0aa79b8ef84b44e1fb03094e7bb426"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/8ec540c36da3814e93da765bf2ff0825b59c1bd0"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/8f1bec32f4b8e64062f5405a096543e61d771076"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/8f3e48c49d0794909f6e8e61e5a4312edf484c33"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/8fbbf3c0eaa25b64d0a97a8ee08006539e649199"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/907d0021d42d0fdc867fd02d3609cdce13c8a055"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/919511c217a3427c22cad4a71aae31a6cd47b193"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/9267c81c3283da8193c198de05e05fa30631a453"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/92e80997a4237d76f10b70dae2870b7255c97435"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/935322db76f5d4c74c2dc68fc4631915b8e24323"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/939f2627ef6263d0176566de267ff3eb910e6a60"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/94adea6a0d9a44bee6f5e88adcee57be9e9e3597"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/94dcbe0d3352bd9b230096b8dce9c6d8d63f9d51"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/95dad738f60e3e5eb0f1cdafd91ad461f4418e8f"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/960c0a21c9e5c1a61b93b34da3189b0de1c264df"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/96903512b1f1dec08206123f024b62d0e31cd4dc"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/96a89c005e8d9992e34cc149b0be096ad0051446"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/97db8a66dd513eea47a5a25115508f4e59984854"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/98f2cb84ad89550cf56ee54e11f1448ae7287247"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/993497422a59b7f9f0f6db8c867339b5c9e4c978"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/999821e3750a7f2c9db663d2d100b4404c225040"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/99b2ed83be40cab431d1940e8de2dc3ebfe9352f"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/99e888b7372b29256dbefd476855ff73584cc00f"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/9b18087deb3cfafa1b964aa65d8ee980bc61404e"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/9b3c745ea3e313909a228a07b49aae110b02ae4a"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/9be1ce0ba77758928ff5e9c45139b1624cbe9c2d"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/9c703141efd69eb8f32a58133c8035fb585e0f4c"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/9c7f77981677499f0426a0ffb5cb79d5fe55dcb2"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/9ca59e6cadaa5be9af30dfe5620d1bcd70f442e5"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/9d139835d91474e8d8361d65698a31b8b38c4f7b"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/9e2179564a99e96e179c96f28802a0a2759b581c"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/9e56bb3b68d2e2617cb2d2f0f3941f7fc832e462"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/9f318b2c2ff9cf4615bd06ba13bdd086b4ad08c6"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/9f8d90b1480989fc46ea2f1c66cf687638994587"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/a09db5715f0bc3879a0e18e4db5a6b5640b254a3"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/a0c59a090818bca29d76ccf9843f7e2faf330ddf"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/a1cf10478e5e01a0d951c743a3dd45aa5fc409f2"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/a22c0f03f8c005a4612a9dcbcd6a643334c35d2f"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/a3154b8ed26b3461f2b091c732da00b63ce8bed3"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/a84a1ed1a24e753a27adfd3ba806f06fc44f899f"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/a871e7ce66afd4f57702cd1299de06cd08995561"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/a8dc736ea964586b7dcbf2bc065ec4675d1daba3"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/a91a835836c72217824f0b63491d9b623130502a"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/ab97c1f6033dc7d96f69b9e1461fd594c16f4ebf"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/ac8a8c23acd8c290a11dc7828f7f397957fa6400"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/ac94b2788f5252f9e2e8502c7c75e04bef4c0b76"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/ad03b4f58470c43db6593a35be48989486d754f9"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/af417c83e831a96fda1bdde99a1af6509ef2df3d"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/affd292cd2ce3306b4651cc7ec0ec0524cbbae3d"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/b0587e6e319f4b56d877e7ed46bc7da9b1e7249c"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/b166aa66b5b3ad178bc38aee5768226c8adc082f"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/b1ade0571262c6e5f1d72f6d25ebb513d2055bc9"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/b244c690157ff21d073940ef8c77d1898f37cf8e"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/b523091ee4f17d20f51f9b5cf82293465cf61780"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/b7d4d49ac2c530eb8444a449feb689ee50fd210d"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/b855c161121bfa29c6fb22d3c0236fae4af6984e"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/bc4263a92952d56168b354f723eaa43a33cd0b35"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/bcaa71abf23b2e5130e0cc464755fe769bf4aaa7"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/bcf4684ce097faa7e9d99b6e93cc2de24f57aee3"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/bdca6504d2ee7925f62e176355bb481344772075"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/beb208fd8675ba7de2ecb12998d2d628d579ca7c"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/bf0c98689ab81fc32787023300caf9a4175583dc"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/bf479e97b39b697e715663de6a1e78dd58d64122"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/bf826c96be94d1b42eea0666f7239cc5f699a375"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/c17650d19ae4a48abb36739c83d8979453f5705f"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/c1e5307d88feda2c3b15fc221cba92bcf41622bf"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/c249f408c552a0408eab3fe1d1cbeca95cd537c1"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/c26b460aebc9082c519539069f7e060042989696"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/c2eae71daad0d3561ab4d09b8b85372b8d790bc1"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/c37fda8d02e99132a1de99f959596c784ab8a53c"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/c4836760377a7091fb20f4afa9c712875792b9a7"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/c48caad597176404f776d532d4baf9faf7655ee2"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/c4eff0f59986fc5ab09d5bd95f394292f2882659"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/c5fc2086d167c8c3a7d9ec778db69c5fa14a59fe"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/c600877ce547166eb1b9d83afbe128d98767f8a3"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/c6a98fdaf6de78e59e1a149a43f3e42222d650b7"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/c8d22f7fb4f37f2d8cc7953fa2d599d38d899aec"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/c90951c19b24bac84296e3ec32cdeafe99e99cfb"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/c95ff2a172626efb50e94aa6781feba609820076"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/ca6c557afb9c571de62e9b65ca6469a6133760da"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/cb2d0fb23f66c968af2e80d59f71d4c1aed96fbd"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/cc60a642cc2037ad3c459a57381b8f65d8d7aa35"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/ccd3b8aa26c52f6d9c607c26ebdf621142aff745"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/ccdfd1354997eb117bd76b75440a7e4ff20bf564"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/cd7a7b8f08c189e95ae3e2ea44b9015000e823f3"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/ce05678d812a5f8ae8e115938410116ce9169456"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/ce6b642b81373f05baa2a6fe6e9d5d1387046285"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/cf84d06e4dddb997a79a41f9b6122bf620bbdb4b"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/cfbcc3e8cd65aa8b654688145ade34b8789468a6"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/clusterfuzz-testcase-5298216461402112"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/clusterfuzz-testcase-minimized-4857057310146560"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/crash-5ac3e1ea7764cfb6383629574262f82dc7b3cada"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/d000502f32ca5620d7745f39ff6be3b547e26a6d"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/d131f83ee73450ff45565d0c638be7d8beeb30d9"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/d1c7ae01a81a122c2fd7c5d8debcae7566e9ee2f"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/d2817b89d7aaa7fa880c077b1a67168ec2f4f0f7"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/d3ccd7039dd34baef465c4b78baa7a30312a8f07"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/d4cfaf3b59b22b654d7af80ee6715ce5015bfdc0"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/d5670827c8e8d4c95ac0f738c0790c19916c0336"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/d59d7e94863f1ed89cacfbaabf7bc59946036c8f"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/d6d8b478e6d13945f7a6f7d27f424ff57ca12f7f"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/d76d0c7f24ae3cc3f530d5306b8dcc15290c7ff2"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/d8b15e9e555ad9900ba4be8cc9f87bef75725b24"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/d9748abd540810c2449c3dd39a0ebb62754e520f"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/da9fc821f0c1e00728b139b36269bc3d21c0a8cc"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/dcd1bd94ad97b4e67fd7e12ff1bf7c039eb17f66"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/dd3ba9b139e13324fc76cd62af84b00ca8b87205"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/de0a9dce0ea4e4bfdcb13f788ae728bf979fed25"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/deb6f9a930d9b31586ede19fd8fd3caae0e5b1f2"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/dee95e0280b70681eddfb68e3b418126c5661e18"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/df01203edfa2dfe9e108ddde786ae48235624fef"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/df0adbe2523508e9afb42a58d98c2657710d6033"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/e05fcba1b22f658c8bd6f3c330b2b3c9faebf977"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/e145caa75d73e3d819a9cb4b6217f1f53112f3f8"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/e1d86c0094657386197d191855b5645ac1dd5936"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/e25adf8de44f5978d00b7e8c52aee89c5cd1fe93"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/e29f05162e3d96d5549f96aa4a54c868535b2847"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/e3a970ac8636d29da3ded328b876ed3550cb3209"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/e3cfdc862187b4ec28bd4fb2ced5094bb5b09909"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/e4ce52007d001806fc9368b62c124dfc56e8471c"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/e52173f0bc3325629046e85e2dc41acc6ba7d1c3"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/e6589006e3bda4c57247ad66fcd73ac00ee2cbe2"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/e67c79d0ed89ab2d5e8d81127df22876e636ac44"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/e6fab7572fb2a1c6e107b6f83cffd103a233d021"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/e790f5d312957dbfd20abdefe4b1735779ff9689"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/e8809017a4cf6c1e80a93f661166ead961f26bb4"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/e9733e973c33b38c2087b7f1deb36688b3b14259"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/ea8134769855d574f6673bf0301eb2e24632c6eb"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/eb489536e4e5589a93a17cd36669475b8f2a5e1b"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/eb48ebd4d01e5623dd16ae61938b3333fab3ce78"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/eb6ca7624384239c7f7e0d83edb7cc334b7926d7"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/ec9457ad41ed745ea9377ffdb16ad09f981daa7f"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/edff5256a2d60d0e51caef25dc1d6f1643dad6d5"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/ee4d9c5d22512da42726f47213ff56404d1d81d1"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/eef2f30b5e2ecd98ebefb12d57aba8b4ad52d904"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/ef23911de1a27d03d2d4983ca1527e17d6a7092b"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/ef5b7fc62a2daecf1e8f928b1fa3ebd028413a41"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/ef718258ca1870198e91a2fbc1eaa90b620673fb"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/efb46deb37a78f41dd760f6b7203b20956eb114e"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/efdd6824bd2456e3e408e0e84369c4fa3aa14f41"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/efec040a5de1969df5e37e4bc50a0a8f0de341d8"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/f1e30464c24dc1d7cec7ec1dd2adec8512232b43"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/f27a617b936814476770a3b31a5afb80d0f3b423"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/f3f0d99ac2962f8fddb25c65fb4c8c6eb63518a9"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/f4628084cf46f139babb886a782b4ab5977d5d2e"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/f4753e8881e4b3c71f2728149be7d04cc648f6a6"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/f4b48c4f3f310ed767755267210f212dd62bd715"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/f4d6ff635ae4fda497221da4bfa3e593df59a44e"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/f52f4d51aaaed0f9c3a20936cf5efd25d0692f67"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/f7cf30724ab740918eee6e4a6b6658ae3d7706e8"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/f823828ffd2a60efee36f1de52cb0f024ac5b4bb"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/f8760761bd5ab7b47376bfbc5a44e16b2d5ca800"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/fb15042c268625089ef6c8aa3d8a6f12d1d02c74"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/fc3dd4292d6884a770199596f5e9cbc1e869e5fb"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/fcc06696e641a7743bfd2f3b7ecd88e7b727e00a"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/fd34ec90fe8f9218fd25c3eac151aec998cff6d8"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/fdf548cde981fab4fb17bd63a124b75eddc5c836"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/fe47fb18b064e26479c3c3140082bd01065e897a"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/ff2097734bd7bb8451aece13c9336c4624735170"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/ff2c949863eb4e14d9e835c51591304403d91b6c"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/transport/chttp2/hpack_parser_corpus/ff7d6ff060e63355701b2e655c802902338497de"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "hpack_parser_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/http/request_corpus/0299ca2580e4398d170c4a336e0c33eb2cd9d427"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "http_request_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "http_request_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/http/request_corpus/05e613853d64a9669ea3cf41b0de777dc24931ba"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "http_request_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "http_request_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/http/request_corpus/069352518a1d1baa05f317c677d275cefda2ac97"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "http_request_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "http_request_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/http/request_corpus/0925527c9358b1e10ec0f0387cd99f35204d9a34"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "http_request_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "http_request_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/http/request_corpus/0c5b7c2569410b526605e308309a7f36574e530d"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "http_request_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "http_request_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/http/request_corpus/0ef3d0a84360bb5ad66274f1226f5cb273ecdbcf"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "http_request_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "http_request_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/http/request_corpus/1e1273f90187fdf5df3625764245610f86af6aa4"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "http_request_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "http_request_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/http/request_corpus/1fbc57d118f3733287e9a9d808bb8947b3260e55"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "http_request_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "http_request_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/http/request_corpus/24756c396bc72894fd720092bb6f9c03e66b469f"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "http_request_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "http_request_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/http/request_corpus/276def41311933421ae7a9ee42e906c85b6a4d3f"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "http_request_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "http_request_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/http/request_corpus/29daa75432381937fd005cb25e314e328de6e9f9"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "http_request_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "http_request_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/http/request_corpus/2a75204bc492084ad853682f8de3fb137d5907bc"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "http_request_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "http_request_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/http/request_corpus/2d34ba249b755a880525cf53c665633a5e359305"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "http_request_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "http_request_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/http/request_corpus/33f4ea0c7ea27c37d8f95cfa64d282370efdafd2"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "http_request_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "http_request_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/http/request_corpus/35554617ea6418bd43161fe9a2c337ed82d7ec5b"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "http_request_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "http_request_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/http/request_corpus/35f0c561297cfc840ddaeebb9fc61091f4eadece"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "http_request_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "http_request_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/http/request_corpus/3787bcc22ef645e665cc5f722b8a633af86de9cf"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "http_request_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "http_request_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/http/request_corpus/3953688866ccb3b4f371f1a858570d6afdb6452d"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "http_request_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "http_request_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/http/request_corpus/39b19c41ba537f37511eff7727733715db432e76"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "http_request_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "http_request_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/http/request_corpus/3e3c4756d5e40b5aa250954cbac86b826e70a7ac"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "http_request_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "http_request_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/http/request_corpus/3f03265921120c6ffa61b944e213e062a5538d4b"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "http_request_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "http_request_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/http/request_corpus/3fb034e66ee5494a67acae1b4e6ff64ba92a2046"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "http_request_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "http_request_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/http/request_corpus/466059ed07a0d55d6ad5e522c7d367cbf278eaf9"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "http_request_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "http_request_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/http/request_corpus/487725eb38511c79a9340bf4560a1411061fa6fa"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "http_request_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "http_request_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/http/request_corpus/48b9b205cae8ac21512a3f26f49fd53e21ee13c5"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "http_request_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "http_request_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/http/request_corpus/4b1f1f79a0bfa3f942479dd5f8edb59a7c257c55"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "http_request_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "http_request_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/http/request_corpus/5028c56a5116a186b7343ff59567b47347a0796d"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "http_request_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "http_request_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/http/request_corpus/533f62b3f495ce704babf3ee8d840f196a714dff"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "http_request_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "http_request_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/http/request_corpus/5892cbb284771fc9761caae37b19cd6e27dbc104"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "http_request_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "http_request_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/http/request_corpus/5aeab6e4f7c2a1c09d4ac0dbdb3beac4893607ee"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "http_request_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "http_request_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/http/request_corpus/5b6292bdf009b0daecbc90b85cca30a88c36eec5"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "http_request_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "http_request_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/http/request_corpus/5c1659b77678b41faa4fa13df7772dae3238d1c0"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "http_request_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "http_request_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/http/request_corpus/5c81f61621e29ec9c6a64ac3af9b3b216141618e"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "http_request_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "http_request_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/http/request_corpus/657368df512ca6294b9df16adf935a3f374a8be2"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "http_request_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "http_request_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/http/request_corpus/7fc4520094902ce2c760d70eaad5b674d2817337"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "http_request_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "http_request_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/http/request_corpus/81f59a12b458ec3604035cb962165c604d1355e6"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "http_request_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "http_request_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/http/request_corpus/8f41c50e88ee8c17ecad3d41d63d38fb12aca0b9"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "http_request_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "http_request_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/http/request_corpus/97c16de7fe3c390a2e6c09ff5c28f17d5c67542c"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "http_request_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "http_request_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/http/request_corpus/97e4499d450c95660de86747f527e670f2012548"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "http_request_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "http_request_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/http/request_corpus/9a996857196e0998a1278994a9bab3d35526e7f1"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "http_request_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "http_request_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/http/request_corpus/9b7e00049ec356ecd84b1747e4e1941140139ae8"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "http_request_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "http_request_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/http/request_corpus/9f0c38ec455cc363369b3674a2d32bc21c206de1"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "http_request_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "http_request_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/http/request_corpus/a1dc7bc235e46eb21d91084d7b52d5ff9f45df85"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "http_request_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "http_request_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/http/request_corpus/aa3bbb876eafa8ad8ca4ff2eabc6dd94341d2441"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "http_request_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "http_request_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/http/request_corpus/ae8ba95d7dbe99926a8f5bfd80347fd6a4b616a0"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "http_request_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "http_request_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/http/request_corpus/b04fea5c041c707db0ad9c09a81672557b52cc47"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "http_request_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "http_request_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/http/request_corpus/c4acff8aa2ff886f35439f72625d05002990c940"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "http_request_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "http_request_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/http/request_corpus/c55ce9995b002e88a102ae2891a71e8bacb346c8"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "http_request_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "http_request_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/http/request_corpus/ca5a0c00b8969310acb73d15ad0d0c602f1bd0c2"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "http_request_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "http_request_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/http/request_corpus/cce734f1b263de6994f7950e0df7bf0c81449f70"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "http_request_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "http_request_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/http/request_corpus/d39c8ee11a697634a09b309460c0bbd967e7effa"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "http_request_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "http_request_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/http/request_corpus/d4c3e4cf5d035596433c30eaabbd2b2925f4b453"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "http_request_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "http_request_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/http/request_corpus/d51f7fcc089f269c7afecaaca51966bab5fde629"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "http_request_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "http_request_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/http/request_corpus/d936dad71c129cf659097dc3db64550c4dd467f4"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "http_request_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "http_request_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/http/request_corpus/e275b0466a8fb8d9e0e15856e343ddc7112ae66b"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "http_request_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "http_request_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/http/request_corpus/e5c364b205855a2991ce07482aebb2a3a6147089"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "http_request_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "http_request_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/http/request_corpus/ee2077e08c3cfccd9bd82adb574ac4fc7d429afb"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "http_request_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "http_request_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/http/request_corpus/fc5d4b9117ba9e87388174aee4f4970bdfe8d066"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "http_request_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "http_request_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/http/request_corpus/fdeb2c7daa9e7704f67e141106384e6dd0042c0b"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "http_request_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "http_request_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/http/request_corpus/request1.txt"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "http_request_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "http_request_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/http/request_corpus/request2.txt"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "http_request_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "http_request_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/http/request_corpus/request3.txt"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "http_request_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "http_request_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/http/request_corpus/request4.txt"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "http_request_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "http_request_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/http/request_corpus/request5.txt"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "http_request_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "http_request_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/http/request_corpus/response1.txt"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "http_request_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "http_request_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/http/request_corpus/response2.txt"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "http_request_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "http_request_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/http/request_corpus/response3.txt"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "http_request_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "http_request_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/http/request_corpus/response4.txt"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "http_request_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "http_request_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/http/request_corpus/response5.txt"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "http_request_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "http_request_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/http/request_corpus/response6.txt"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "http_request_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "http_request_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/http/request_corpus/toolong.txt"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "http_request_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "http_request_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/http/response_corpus/0299ca2580e4398d170c4a336e0c33eb2cd9d427"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "http_response_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "http_response_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/http/response_corpus/05e613853d64a9669ea3cf41b0de777dc24931ba"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "http_response_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "http_response_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/http/response_corpus/069352518a1d1baa05f317c677d275cefda2ac97"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "http_response_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "http_response_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/http/response_corpus/0925527c9358b1e10ec0f0387cd99f35204d9a34"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "http_response_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "http_response_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/http/response_corpus/0c5b7c2569410b526605e308309a7f36574e530d"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "http_response_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "http_response_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/http/response_corpus/0ef3d0a84360bb5ad66274f1226f5cb273ecdbcf"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "http_response_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "http_response_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/http/response_corpus/1e1273f90187fdf5df3625764245610f86af6aa4"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "http_response_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "http_response_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/http/response_corpus/1fbc57d118f3733287e9a9d808bb8947b3260e55"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "http_response_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "http_response_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/http/response_corpus/24756c396bc72894fd720092bb6f9c03e66b469f"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "http_response_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "http_response_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/http/response_corpus/276def41311933421ae7a9ee42e906c85b6a4d3f"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "http_response_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "http_response_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/http/response_corpus/29daa75432381937fd005cb25e314e328de6e9f9"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "http_response_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "http_response_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/http/response_corpus/2a75204bc492084ad853682f8de3fb137d5907bc"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "http_response_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "http_response_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/http/response_corpus/2d34ba249b755a880525cf53c665633a5e359305"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "http_response_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "http_response_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/http/response_corpus/33f4ea0c7ea27c37d8f95cfa64d282370efdafd2"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "http_response_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "http_response_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/http/response_corpus/35554617ea6418bd43161fe9a2c337ed82d7ec5b"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "http_response_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "http_response_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/http/response_corpus/35f0c561297cfc840ddaeebb9fc61091f4eadece"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "http_response_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "http_response_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/http/response_corpus/3787bcc22ef645e665cc5f722b8a633af86de9cf"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "http_response_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "http_response_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/http/response_corpus/3953688866ccb3b4f371f1a858570d6afdb6452d"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "http_response_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "http_response_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/http/response_corpus/39b19c41ba537f37511eff7727733715db432e76"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "http_response_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "http_response_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/http/response_corpus/3e3c4756d5e40b5aa250954cbac86b826e70a7ac"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "http_response_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "http_response_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/http/response_corpus/3f03265921120c6ffa61b944e213e062a5538d4b"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "http_response_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "http_response_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/http/response_corpus/3fb034e66ee5494a67acae1b4e6ff64ba92a2046"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "http_response_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "http_response_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/http/response_corpus/466059ed07a0d55d6ad5e522c7d367cbf278eaf9"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "http_response_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "http_response_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/http/response_corpus/487725eb38511c79a9340bf4560a1411061fa6fa"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "http_response_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "http_response_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/http/response_corpus/48b9b205cae8ac21512a3f26f49fd53e21ee13c5"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "http_response_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "http_response_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/http/response_corpus/4b1f1f79a0bfa3f942479dd5f8edb59a7c257c55"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "http_response_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "http_response_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/http/response_corpus/5028c56a5116a186b7343ff59567b47347a0796d"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "http_response_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "http_response_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/http/response_corpus/533f62b3f495ce704babf3ee8d840f196a714dff"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "http_response_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "http_response_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/http/response_corpus/5892cbb284771fc9761caae37b19cd6e27dbc104"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "http_response_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "http_response_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/http/response_corpus/5aeab6e4f7c2a1c09d4ac0dbdb3beac4893607ee"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "http_response_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "http_response_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/http/response_corpus/5b6292bdf009b0daecbc90b85cca30a88c36eec5"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "http_response_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "http_response_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/http/response_corpus/5c1659b77678b41faa4fa13df7772dae3238d1c0"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "http_response_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "http_response_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/http/response_corpus/5c81f61621e29ec9c6a64ac3af9b3b216141618e"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "http_response_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "http_response_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/http/response_corpus/657368df512ca6294b9df16adf935a3f374a8be2"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "http_response_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "http_response_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/http/response_corpus/7fc4520094902ce2c760d70eaad5b674d2817337"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "http_response_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "http_response_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/http/response_corpus/81f59a12b458ec3604035cb962165c604d1355e6"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "http_response_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "http_response_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/http/response_corpus/8f41c50e88ee8c17ecad3d41d63d38fb12aca0b9"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "http_response_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "http_response_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/http/response_corpus/97c16de7fe3c390a2e6c09ff5c28f17d5c67542c"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "http_response_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "http_response_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/http/response_corpus/97e4499d450c95660de86747f527e670f2012548"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "http_response_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "http_response_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/http/response_corpus/9a996857196e0998a1278994a9bab3d35526e7f1"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "http_response_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "http_response_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/http/response_corpus/9b7e00049ec356ecd84b1747e4e1941140139ae8"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "http_response_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "http_response_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/http/response_corpus/9f0c38ec455cc363369b3674a2d32bc21c206de1"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "http_response_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "http_response_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/http/response_corpus/a1dc7bc235e46eb21d91084d7b52d5ff9f45df85"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "http_response_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "http_response_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/http/response_corpus/aa3bbb876eafa8ad8ca4ff2eabc6dd94341d2441"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "http_response_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "http_response_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/http/response_corpus/ae8ba95d7dbe99926a8f5bfd80347fd6a4b616a0"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "http_response_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "http_response_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/http/response_corpus/b04fea5c041c707db0ad9c09a81672557b52cc47"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "http_response_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "http_response_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/http/response_corpus/c4acff8aa2ff886f35439f72625d05002990c940"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "http_response_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "http_response_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/http/response_corpus/c55ce9995b002e88a102ae2891a71e8bacb346c8"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "http_response_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "http_response_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/http/response_corpus/ca5a0c00b8969310acb73d15ad0d0c602f1bd0c2"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "http_response_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "http_response_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/http/response_corpus/cce734f1b263de6994f7950e0df7bf0c81449f70"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "http_response_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "http_response_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/http/response_corpus/d39c8ee11a697634a09b309460c0bbd967e7effa"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "http_response_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "http_response_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/http/response_corpus/d4c3e4cf5d035596433c30eaabbd2b2925f4b453"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "http_response_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "http_response_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/http/response_corpus/d51f7fcc089f269c7afecaaca51966bab5fde629"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "http_response_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "http_response_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/http/response_corpus/d936dad71c129cf659097dc3db64550c4dd467f4"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "http_response_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "http_response_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/http/response_corpus/e275b0466a8fb8d9e0e15856e343ddc7112ae66b"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "http_response_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "http_response_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/http/response_corpus/e5c364b205855a2991ce07482aebb2a3a6147089"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "http_response_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "http_response_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/http/response_corpus/ee2077e08c3cfccd9bd82adb574ac4fc7d429afb"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "http_response_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "http_response_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/http/response_corpus/fc5d4b9117ba9e87388174aee4f4970bdfe8d066"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "http_response_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "http_response_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/http/response_corpus/fdeb2c7daa9e7704f67e141106384e6dd0042c0b"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "http_response_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "http_response_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/http/response_corpus/request1.txt"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "http_response_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "http_response_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/http/response_corpus/request2.txt"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "http_response_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "http_response_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/http/response_corpus/request3.txt"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "http_response_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "http_response_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/http/response_corpus/request4.txt"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "http_response_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "http_response_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/http/response_corpus/request5.txt"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "http_response_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "http_response_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/http/response_corpus/response1.txt"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "http_response_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "http_response_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/http/response_corpus/response2.txt"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "http_response_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "http_response_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/http/response_corpus/response3.txt"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "http_response_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "http_response_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/http/response_corpus/response4.txt"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "http_response_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "http_response_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/http/response_corpus/response5.txt"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "http_response_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "http_response_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/http/response_corpus/response6.txt"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "http_response_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "http_response_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/http/response_corpus/toolong.txt"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "http_response_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "http_response_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/006d552e952c42b5340baaeb85c2cb80c81e78dd"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/007eb985c44b6089a34995a7d9ebf349f1c2bf18"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/03b74a08f23734691512cb12d0b38d189a8df905"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/0495693af07325fb0d52eafd2d4c4d802c6457c6"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/05454ab015cf74e9c3e8574d995517e05dd56751"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/0716d9708d321ffb6a00818614779e779925365c"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/0a9b3522a8e711e3bd53e2c2eb9d28b34a003acc"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/0ade7c2cf97f75d009975f4d720d1fa6c19f4897"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/0b1fcf0ac07e1e50cfe27316c7e1c8cc997f1318"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/0bc13548356d08009703d35e9c8d74397367bdfb"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/0ea9a160c57f2c705dce037196e360bf9be739c5"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/0f20d9c46991c0e97419e2cca07c7389f1d6bdf8"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/0f2e2e6346f70c419300b661251754d50f7ca8ea"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/108b310facc1a193833fc2971fd83081f775ea0c"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/108e5bcd69b19ad0df743641085163b84f376fe8"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/10e3ecd5624465020fdf0662a67e0f0885536cae"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/113c8c97cbb0a2b6176d75eaa9ac9baaa7ccddcc"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/11479d936dd006410a5946b6081a94d573bf8efd"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/11aa091189b78d1cc35c7ff4907ac16a73aba547"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/1227907b2ee5a9492a890beed55332e4560834c8"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/134d65130947ec69cf8df8483424b45e99cf04e3"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/13584505caa892d94982a968bbc4391ebcfe0d06"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/137f554ee0f6b903acb81ab4e1f98c11fe92b008"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/1401ea03ec78b8f20dc7be952555004d7147f0f5"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/141d45a59b073aeec4443cd7bcf20f7833ddbc95"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/15a8f2e7f94aa00b46f1b991416aa015dd633580"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/15c9c1284c27c8893559e15c9b2a50cbd5bbb56f"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/15d1a6cda48ef569b368a0c4627435bc2c80a988"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/17a29f2ac6df774585d7713091b299729738030c"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/17b815f1f72cb64481bc40263e91ce063040f739"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/182d57403d2c973a394055017d35b7621aa0aa05"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/190fbe2da448f6bdec0706c5301ad13363ae3ad9"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/1b045a24b8f1f1fd6e8234d5019952ee7713a8b7"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/1b6453892473a467d07372d45eb05abc2031647a"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/1c6463aa2dabcb4fadc8e5441d8b418535e768af"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/1dea95b5050b766274ef80847505c0e4f47f3ebb"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/1df0754d3e7970b3afe549b11ca128dcd0d4832b"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/1dfe267b623b20cd97c6e8969d8b9148af9f4a2c"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/1e5c2f367f02e47a8c160cda1cd9d91decbac441"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/20efdba13ca7a3657d071b3d56997aa3b083068a"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/215a956168f77421253e947c2436371d56aa7ea1"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/2174b9ab6bf4f7c21fe1ed56957f1776ef611959"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/232f4bced4075545bb1469d5c2360f083ec7ec65"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/26aca41ee8f199e7c0c7cf31d979952571c53fc9"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/27d84210636e9e83786be9e9b96b69f70b743b86"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/27da426a5883662d19ea78f306d7a992be52f827"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/296dcda6f7e6979e68ddef7cbc1206a355084ad3"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/29b08c03ca5a6851fa4604a984cb7ff44433a5a5"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/2a3d964ec4527ad9f02129fcbf087b67a6ea6444"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/2b04974149815b143afb17af4388d751217e54ec"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/2b3b1ad952e3acb566e32a84e2d503acde13eb53"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/2cc301a6ed7f01e2cd339f02bd0fda20c227a17e"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/2d3d5b9275553430b4cfa68114099120ad7809ee"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/2d5dbf403e0c12e2fe21b04ca3daff171c028ab7"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/2d7c769bed62004270034b976b1d940a5686106b"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/2db120231eea12d9cdc6a00f30839b3cef2046be"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/2db610e1a230409a205cf22fbad3348a54cbe703"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/2df1dd2e2f5d57e7d9d4e60a756a86e603573225"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/2e32faacd3ea4461ec7aace297b4be6904d9a389"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/2e756d91759d7e74f5b776c0d2a1935292f576d1"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/2f09b24f9f5fa0af2c29b604b4b0f97fa6163895"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/3027d901361162b38fcaf17f97ba7d9646e32495"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/30d4467ecb771ece9ed6c78a46adc299072d9db9"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/311048bbf4c4bbabcde73607d7e76915cee9312e"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/323b48969d7bf9a50aacf0912f1b5cb02119e2ab"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/33400a242baeb5c46ddb1578c28b10d32a9c3cd3"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/356a192b7913b04c54574d18c28d46e6395428ab"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/35e995c107a71caeb833bb3b79f9f54781b33fa1"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/373769c15c145472c8ec3bdde8fc84e85ec79211"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/3795d911970a1fd8416b93649051b418948e3edf"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/37d3333e1e2a384c3ba14a52682ca29f061d1ac7"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/38cd33bb390445e35b6514024b1317902cb7ba1b"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/3a90c688f44447a78efc111872b061a001f04d2b"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/3b1e7b56ad4465d126ea994d34d20dcecbb3a50a"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/3c0a8d6c31edaca124714624eb64cb8ec0cbab13"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/3cc0c9adcf3882f01409c70391c3cd30588ef34c"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/3d0d9878b812ce4634962ba3dd755c0953550200"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/3d4d5887a2fcdc5dd360b8a6f89dbce6500d8580"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/3efb5b7ff94c5b9d411c93da9a70e1cc547f4c59"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/421b7e8ea86e3c07474af16ab3ccef55d1857205"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/428d051e437dd260f2a2f7ed920d9734ca34dc90"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/42adc281578ffb1b8684b78b47aa40a16d10b6e7"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/43620ecd2e2fd58fe5650da2e9783f980f29ec07"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/43b1ffcda49477adb1632822202631990ed3a269"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/45279f85bf2f533a629073caf89403006279fab2"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/455d9bb597f08bf698454157ecd86647b5dec4e0"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/4561eb5c7e43cae048c06aaaad3d5f5218b376e9"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/46417b001eeb87c32b642499fd5e1690d5d88c7f"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/468af040024e96e9878ef33cc52755c5e7f5cbd5"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/469e5ed2547e9e55a96e96eb832c615631e3b576"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/472b07b9fcf2c2451e8781e944bf5f77cd8457c8"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/486da8aff04083c5e0fe112e733f2ae510e312a1"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/488a5ed641e340ae51992e04ce6590bdec587218"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/4a0a19218e082a343a1b17e5333409af9d98f0f5"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/4a6644a1a3d5218f4bbd60220cab79c0b7bef45e"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/4b39d4b8a9a04b9469e8fe4016322327fe540882"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/4bb0294e14946fb1f64213384097a676d3ef94f0"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/4cd66dfabbd964f8c6c4414b07cdb45dae692e19"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/4d134bc072212ace2df385dae143139da74ec0ef"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/4efa35221b2088e785048d0ff8fd99b03d5316fc"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/4fa2a4a5a2f7dc4ddbdecae3ee85c787817b4cf8"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/4fed4bf2dc6259d9de54e9fa7db4fd5a61f2535e"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/4ff800de0863adb5851fa26935159aa53b11cba7"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/4ff99a030518a132748c44bc1d836018e5b82cd0"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/531c87b9772e54e3e183ef729f0a7d5a0d584f46"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/534d66e7b0709d1e7692faae9e7f7299c92bba4b"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/548775f9d7d13339dba3001f8238b84e9a457533"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/54ec3b2d8a9b7a6d8204712eb1b90da703cf8a79"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/552cfe1d8958e6d003ec8e883c4983dd67ef255e"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/55f0c61d096a08506076489ded3b868db4086770"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/56cd60743c2cee939f5f357905bd36ec9363f441"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/56e5f35e3d08b4e17e3558cacddf9e5ed13a0159"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/580b03c49fba02bb8e399500eb66f2ff0482b22a"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/5852643fbbcf92b0181327b69b4874c6ba6fa9f4"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/58f497e5efaf9f69080f9eef63b0b9dabcfdbc0d"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/59129aacfb6cebbe2c52f30ef3424209f7252e82"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/598a287a3e56caae23ed63abc95d5f3457165eef"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/5a37a26dd2482226f534f79d321d28e7a615ab72"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/5a710dcd4c78ca1a74ceb9fbfb011f7ac86a5f7b"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/5ae7b87f5377d5ffc16fd3f69b4a4aa7be8b1184"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/5b3fe86d5a309a6ba745881bd220fe1100b271ce"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/5c38b7da113ab4535dbc22777ce8a1480c1c9d1e"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/5ca6c45a8d2e11c782806df43e7668beb4aba8f5"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/5da7b543313339f84fd52e96bacf3a73368a1d2c"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/5e12ae9117668bcc22832640cc626315940aeba8"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/5e397439a2680ed827c46704969c6711dabbda84"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/5e629dfb8b7533c7c2d173d4c3d587c88112cc29"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/5e785c7c26813577f3e30ef8f7e37ab2a9ffe39c"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/5f3394f5058822cc044b92654837625897176480"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/5fb9bcbbb30a377209eab0541d144e44e71508d7"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/6008213a61d06b4382b223768530c3452968b7b3"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/60ba4b2daa4ed4d070fec06687e249e0e6f9ee45"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/625ed64c30c8ab2f0b3bc75690f9faa4270f0041"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/6314c2b304d04dc0108a95d29a93515e85e2b0b0"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/6462d8079d2ea921617e7d073b85cfab706800d3"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/6474383282788e556aa86f57fc8650137ad264d0"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/648c3f58ecc8fb4b8c779e6b11006ab5b1986dad"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/66328e03a2ccd5e54dab23b816182786e6f518b6"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/683e9045bc95e0cb5fc16ec64b118433475ba559"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/689f13680f4682303c8aa6828b67955959dc9669"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/68c6ba7f0602a5410d1fa3c5de24fe264436b993"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/699cafde80b1e1777306f781186d1253f018ab23"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/69ab053b59e235fd6af246c5180f15bd95295113"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/69afa12510b2e653b0af7c7030832647b2d63c37"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/6b75857f86be5c51b21a97f4a61e69e8bb6cd698"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/6c75e71ecde9f073a7bad89f4831c8cde0bc1830"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/6ce5170dc4f2eee3b31a875b6a41f2444959f3dd"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/6d2859436fbbee637f0a5981ca82e8f88a1d0d28"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/6d63e39f56d1d537bab9c2830303cabab3cd9035"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/6e05a0a240fe2974e14527bbe390d294564156e2"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/6e6c9d301adb0f0ddffd79cdf3426a2de99bad48"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/6e989edf725ec64849377681ce02641c3d1870e8"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/70142f66475ae2fb33722d8d4750f386ecfefe7b"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/719edbe667ce2729ac78a22dac29263c91144029"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/71f99ca2bda6ef2e15b965479a79587f9d794be0"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/743e89b768af4bd591ea7228118550b1bfb8e7d1"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/7714a1a32872442a2eaff472685f3ea69451a732"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/7719a1c782a1ba91c031a682a0a2f8658209adbf"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/775e8ffda1f5d340dba472d06dc7c8bf8159e379"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/77de68daecd823babbb58edb1c8e14d7106e83bb"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/7957dc9aac31e6a6783fb3a6ee073688fed6cf9d"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/7ae893cbbf9b11ff411640b80985ce618907559c"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/7b20ac50954063e3ad00813acab4a98b2bfdb858"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/7b6273145fb090de1c6163586f884a1da4b5cfbf"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/7cf84b5a78281e6c6b5a9884110f3dbc6a40e310"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/7ef13b83e6bde582d9000be043e729cd3221c150"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/82059e250904b478f65daa0e647c1647ba6d6a3d"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/8207fdf4bd302d6b6b1894990b353944a8716aa7"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/831a49ad81b59025c241ac9e58bd88463fd798eb"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/84582c1dbe026475319df14c19967d1dd0bf751f"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/860d4ad0b7c026d1fcf51932b5e46500be7860a6"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/865c7cf36a4f4499a6242e51b77b58b868a7447b"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/87a2b80f9272583517c0207af176fc40ea55022c"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/887309d048beef83ad3eabf2a79a64a389ab1c9f"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/88d89860ccaf21e5f0f002303a2cd853ecbb2acb"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/88f658400b1870ddf081fb03020c3098b0b1e083"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/88f8b0984bb2f081918ad883c8f0ffacb5a8ff0a"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/89304953495f060c7abd3584d83cb1c8e6d6653b"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/8a5f6dc6873e3fd51fd866854d85258f8aa83a02"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/8a87261277c15667e2957dd52c5db6757ebc8e88"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/8aa61d8bd260942521bb1ba82cd4cce2324fdbee"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/8d8874439569824e371a0284460440175cdb8a27"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/8d952ec2e33b2a6a1c7876898719a610f5546388"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/8e6fec8a05b24f221b6e94fdfe205e5bf7709a2c"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/8e7fda77644ff91578d25243fad51a3cd6d60860"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/8ea6295ff82bb119acd44a91b463b19fedafb226"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/8ee51caaa2c2f4ee2e5b4b7ef5a89db7df1068d7"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/8ef4dd9f2d0f9d770c937d9a43413d24df83f09b"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/8efd86fb78a56a5145ed7739dcb00c78581c5375"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/8f0ba762c2fed0fc993feb91948902ac397b0919"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/8fe81e450694cac1eb4c4a5c966ffbc56ade3513"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/902ba3cda1883801594b6e1b452790cc53948fda"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/910a1528b28ebc6ff2f2a4fedb013c86de4103e2"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/92049bf3d8a0ec93c2d1633631c0082e66ca69e7"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/920a3c318f3127b9c30ab02a077555c7dfbb6edb"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/925fc05dd661aeb4a776dcbc5df3dcb2cefaf0a6"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/9367ba65affd5bf7aabf79c28e783cc5d93518e8"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/939f5049b1eefb91ccbd3fcecaed8cb21ea6b285"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/9405c2b00eaa5526f71cc78914dbd3ecaf093b6e"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/94d3598751569d2a5be258e59665cbbf0692dfbe"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/94f96d95d01e98fd2f04ce26c0913e5f9a882fb4"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/95b54a84db75abab401d282fdb04440a879a9708"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/96189202e587ec951d5795da3e03062f2fb5d708"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/9711703428704ce2827a719eddb9d54be23a0cb7"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/9734597e96eebe99b2243121a51d178a338ec46f"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/9747c85a9510011bf87c23a80b029b9f2d04c37d"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/97d170e1550eee4afc0af065b78cda302a97674c"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/98e02e7fc96479e8d10ff2cc7610be772e2d6fba"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/996156b191b619eff79b2fcbb7598518a09b06bc"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/99667fcfa6d583a742fb5450527fc86dfb78ebbf"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/9b1ead2dbeeb1a3e9a7bebcf6964c3cfbc7e8867"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/9b7669e201574bfb979d56110539a90da5aca2c0"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/9c24b456af3cb51a1ff2780c2d9cbdd7d93f6c76"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/9d0441f23ae7d5a3a5b1140497868ee6eeab656b"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/9d890bd3139a8f9a44d435ff8edfbeb5b072ded0"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/9e6a55b6b4563e652a23be9d623ca5055c356940"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/9ec88420ef0408642f6930996e35f5b9f18ec88c"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/9edd067c569315d5e93b0d14c7eac9fa6d81d3cd"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/9fbda4f714043d975389b536b4497c6d713452e5"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/9fc8cb8ab3b05e306e5e81d9d949e69f931244ea"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/a02b857f2eff73e8e188f35529dd91f8144b23b9"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/a060d5bfd1235cbbe4bcecf332fa3b03bc2282e3"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/a0931fae1d43e7887c1cabde83fdfc52eaeedba8"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/a0d4af29c6c223b48fe34d6a09b3a7466242f33c"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/a1abe8a785030d475a7350438fd23a05c382c110"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/a1fb86293eac950c2b4f5182d9e4b5d9e0982ef6"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/a2d4e3d6f5ba43c9199d5d2011678f82cfd55afc"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/a39653cb3d97c58c44013197f4d7557577700177"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/a4c74ad56ae0e94e96101a8f2ce9b1e588df5e44"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/a6b34b06b00e9226f2bd961483f9da81d8de99a8"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/a72c3b9cc71eb7f0e0e4dabcd2dcd2b997f21c07"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/a749d24bac55bc19465acc92b12244c56ca0f20d"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/a78009ff8b3f4d722ee0eb84795e857e74a58aea"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/a7ae4b16677806d78d0016c276b6722eba8eef3c"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/a806f43dd48e35e75c27814c13a2a96c12449bd1"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/a90a858013f90d2a94e0d62a7156ffd6848bf238"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/a94bfbfe16d026b52d7f73cf78fdf7d6a6c5c58b"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/a9718f029d11a9335ef596cbd42794de5b0b18b5"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/aa6e08a488d1ed00aa51f20c2477fc89e7b0a852"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/aaa038513c192fec501e4e7302156872ce2fde37"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/ac2686c095a5a1c92a1d4209a6c287778720c86d"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/ac3478d69a3c81fa62e60f5c3696165a4e5e6ac4"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/ac9231da4082430afe8f4d40127814c613648d8e"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/adc83b19e793491b1c6ea0fd8b46cd9f32e592fc"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/aff25e569bd8c93157e08cd18ebcd896438e34c9"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/affced8168ec801de89deac663f708f0c96cf1a4"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/b015dfc2f62b640d7c25adab7b38c5fcb5cb64c8"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/b021dd7cd98b63092685ea092df0dc01c8f63334"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/b17485b8bdec8809b3819a83753ca893871df403"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/b32ef51eca9c6c658e6fb75fdf96bbba066404e7"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/b3f0c7f6bb763af1be91d9e74eabfeb199dc1f1f"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/b45a1635ec526bcc890f9d735976704e516c5f19"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/b50ce51a7baa28cd298ebd05b4a3b9b70f9d4370"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/b5126721812b925426b30d283d2bb8b6969f230a"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/b57af943a3ee411bffeaa3872eec9c6fb01569a4"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/b5abf6fd22ed0f852781de35d043059d0f86f3cd"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/b6589fc6ab0dc82cf12099d1c2d40ab994e8410c"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/b6f19238d2b04c5b86a17369093dafda34f332e7"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/b858cb282617fb0956d960215c8e84d1ccf909c6"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/b9c38fad09c80db7781fefbe51039752de575ecc"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/bb407c8992800444201dccfe744dac49c0295fde"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/bc335734f73502b92d2bd3587259ce915985f0ee"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/bd113c2c8a2328e3674c680c7cff829a6c8ab924"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/be051d58015d4af1977a5dfd14ef3fd070ecc9d2"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/be461a0cd1fda052a69c3fd94f8cf5f6f86afa34"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/bef524502f8dbbc45af717ece01ec88edd7f903b"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/bf21a9e8fbc5a3846fb05b4fa0859e0917b2202f"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/c0b6a90832b78ed5f6d129d3640c612540527c85"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/c18d315f0d35849b2aae4a47cab4608204b85d76"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/c257fd6bc9e5254a733378ab4ddd39629c4a3069"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/c2bf7f49d8f2e13a60af4473b3b3451b65b3aa9a"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/c308517acf6f7088634d491a1608240f83a3ac95"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/c3badd71ef8a51b97ce93cbfe99f6778048f2128"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/c482a632702ae7f532d126e70149dda4fadc3cd7"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/c541bb86e55b98e083b141114066f9c17d853374"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/c5b50b9015b6aaedd7eb1077b1204858f837b53c"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/c62ef0dbd1350da9ea5a32e56672d385837643e7"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/c7a34d6d49e1da1ccd490350c2df3a168ed09ae8"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/c88c4bec8d440c56d3ea7abce39276f0927dbe0a"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/c92f147bfc034003ac42ed9e62a16c84102ab417"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/c96b0fe6034668edf37ef0f5f391d5107953dc06"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/cac74aa5d7aab7fce0253f00c1a025980c1f9b7a"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/caea0a0e6d8708cf682eaa446c344da56a7d5515"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/cc8a3dd2678d4b400ad630f402012b894e841b05"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/cd851bec7adad52f79777fb9347d5fd2f9486aa7"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/ce3899b62ba3efe00eb31ddad2861ffe16a30d06"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/ce8b76fdcdbf1c951afc2b115be9acc8a6358b32"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/cec87b67871fc7a59652bc3546fbbb68e4d31e28"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/cf32406111908544e504c84731147f072cdf2fbd"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/cf35dc76bf9a2052636c1ecc92942161830dcdc3"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/cf6a5e6bfe4f15b43e411dd2782e10f1670c9767"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/cfc45616f5f0e7c25df91f6984ff5f6f1648beab"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/cff891e5858ae68d08ecc8470ca6a68c9438bfa3"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/cfff4e9d08cba81b663dd1999710008342851e19"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/crash-f21867fe8b6df0b54c13e2e6e613dce871ecf0f0"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/d1db03c626fb16c3b9cd44cc38cf40ebd355a194"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/d85ca051da784c0441898c5affbf11a2ae8f56bc"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/da03f536ceaf609972aa2a699687cc6f73ac0dcd"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/da4b9237bacccdf19c0760cab7aec4a8359010b0"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/dcc45e405208d7a2db33d0b5b9da2a2f1b034957"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/dcc60d3aaa1fc4d00201a3512284fcb79b5b68ef"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/dd0567ae57bf3cc85891a1ca988c2945d9186678"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/dd890a5a32e9f0489c6c77695f2155041f00fc9a"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/df88e2baf7b76ffb2e94b9da57fd8d137f44b1ef"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/e00ee378c3f6e0b3cd89bd6e7517478d093f73dd"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/e0c124e90d068e2a70a3e148052869033453ec58"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/e0d87b1f3e54e5adc5c2205f9e14772822a25766"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/e1199df649697c570db5d6b2ea09d755eddd32b7"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/e235f6f2a8b6a22117f1baa932fb6c69799e1136"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/e3a654055a867ae62d8e68fa2c410228ac55cb6d"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/e3c680aac46b9c46392e3b2c43ecdcc1547f2023"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/e3d134b35cc25a4861d90023c95988ec6103ddd5"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/e3ff65de4b1622315c3b34b7a5e39bffb275489d"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/e4a4085cc31476f5de9047422851d8ccf86339df"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/e4e3c69da200af932c8a79fa055d7aeea28eb1d1"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/e6c3dd630428fd54834172b8fd2735fed9416da4"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/e71eb37fca2070521e1e07c503c2bcd6445b35ea"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/e760e6e22ae8cd1ea78fe28b5eb1f3d7b5fdc536"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/e95ff1142118a2ca5b84935612a8a64d55360e64"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/e9c5e2c67930513941753c2d54591c7098c82f6c"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/eb26070d17ffa908204912e75cb4313835042038"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/ebc6aee49e5ae57722df86e7fa33c420f045a449"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/ed1dc11d713e7487de18ce8317b62916959206d0"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/ede3f66106acd7796da8b3942d029fe213058286"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/eed7bd220cd511b6d42ce6553019266a22a3d56a"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/f090932162756b798b1a050b05e3d36a3437c4fc"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/f1905eaa84ba6a3593ec6ac0486a5b42893c01f1"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/f4635fbbf765ead81a261ca152df02622e182d2c"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/f46eeb1020c7c4153e742a50bc24c2c6939dab1e"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/f473451610783521d51bc08cdd920ddd97f8a71f"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/f63aa599600f6e7d648c4287905e16e8e6e479fd"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/f667dcf1c06e87db2dc49d86ea1c285e796f8f8c"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/f8d0f85975e49b959799cc52847110cc940b9db1"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/f92c47e35da42d79a48beff54b93cd28f55f05fb"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/f9a33bb8bd78d869fbafa402d9be58940ce2c318"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/fbf6f3156c1bd4bb701839bc0e26533bdccd1c9a"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/fe2ef495a1152561572949784c16bf23abb28057"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/fe5dbbcea5ce7e2988b8c69bcfdfde8904aabc1f"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/ff8fb34603c7f772768d61504954553e6bed173c"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/test1.json"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/test2.json"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/test3.json"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/test4.json"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/test5.json"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/test6.json"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/test7.json"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/test8.json"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/json/corpus/test9.json"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "json_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_response/0052f8fb6a7884ced8a6754aa13441be1f7dcd51"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_response_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_response/0c35544f40d428d103e9c5b969ad9cd16767b110"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_response_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_response/0c60ee9ed55c9af6190b132ef6636c1d2abe4540"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_response_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_response/0ecb3e69889c036a86d21eb942077dc9abd649be"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_response_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_response/1324c95dafe597fe05f9babe92fe6fbf181c1897"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_response_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_response/14eb42f7423081b455820daa2c02b358315dc0fa"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_response_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_response/1e2dd3a96d4c5142da19b2dd64014d9358504536"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_response_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_response/2277a90ab01e3f27a4a8caf34ecd9997f3ffbf19"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_response_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_response/23121c5f633db5d7c1a9f2225240754246fee513"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_response_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_response/235548307ee9f2b0855fded42a871990d9ade956"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_response_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_response/28ed3a797da3c48c309a4ef792147f3c56cfec40"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_response_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_response/2bf123dbfa1d37a04493b5662a4b3b9c147485fc"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_response_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_response/2d4c0908ecc0310ea234d10b6bdb4f4ca3c41dd1"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_response_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_response/30084b06df1cfb2bf2e1cfa8f8024c5af47a4d80"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_response_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_response/304e8cdc9122b709ec2c063a5c8c38489a788033"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_response_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_response/324d4a2aed8bc1840fee212fd38dadec80a72ea2"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_response_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_response/32d5dad0f831572fbbd32ea3de5df43e27568f34"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_response_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_response/33353a0b011901a13d010c6b165074ccdaa717ac"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_response_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_response/37dfead09389fcd9b9d24ef817a0fed13d8ff2b0"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_response_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_response/47879cc364be304754f6af15563ad6f9a538da41"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_response_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_response/49a5cef4c730ecab22712b156ddba5106f165afd"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_response_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_response/4bbbbb794a098deeacff73b774c30f12c54ceacb"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_response_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_response/4bd815b34ddfbbc45c780d1e7a97341796ee8471"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_response_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_response/4c498ce69c8476f745693deb23272930e05cad60"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_response_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_response/4fb5e3085c32e9bccac9e18343cca07017d037de"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_response_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_response/4fe5e46c1299e7f3e8a41dde3ae1bf1b60b4a43c"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_response_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_response/595b8d51971c1d15146909567e539a1bb39b1af5"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_response_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_response/670cc6bae958cb4f15e7297fe63959ac5799aa42"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_response_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_response/675f3263af7d1bbb084872f2b23f6d363227e85d"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_response_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_response/67fe0d2acc727c8a39a707b92c6cebda9bd20986"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_response_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_response/6995dd153f712ad257ab5a365e5a4b84dc676ed3"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_response_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_response/6d15065785eb8f4b5f17357a520cb4815a2cb355"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_response_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_response/706b579bfc3db01ef7216d77ce231ea477c2fae2"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_response_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_response/71ec91b3a142105bc25dfa5b84ca0bd893e1db28"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_response_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_response/73285d7a70d73b517648067520d921e4477dbbfa"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_response_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_response/747d1ed8bee4c6f0438beaf88ae76d8ef9f63da2"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_response_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_response/74c9d6b5d7d31a7c48c842311857c319fafedd64"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_response_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_response/763878a34b3adeb99a03b54d09768a4451617016"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_response_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_response/7b4b0c2555178333ba15203a930c88ef7e7500e7"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_response_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_response/7b8a91aa46e370eb61307b4998889dc89775462f"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_response_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_response/7cd11836c64f98742fa7beccec5c981ef4dd62ae"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_response_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_response/7d8f4f045e70e8a2cb45dc3c001504f5c2614b16"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_response_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_response/7e9848558fb004e14795b3ebd3e1488dcde1db8c"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_response_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_response/8707d3367be279eba1ddb5ffb990e40a3141c7d0"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_response_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_response/89734c37ee267e69a6950c6d60ee541c1be5ccff"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_response_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_response/899ef237274b4a44b5478d7ec880680a0cb7dd88"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_response_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_response/9034aaf45143996a2b14465c352ab0c6fa26b221"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_response_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_response/91e3b6a3484ab4b95cdeecc5aefe1291824060e8"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_response_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_response/95cd94c858e5e97f7df4a5eb7552e5e0d5ce1ec4"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_response_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_response/971f42d5a4d9816145ebc9dd28ba33ed3f5860b0"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_response_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_response/9849ff4673525f3c6ad567fc681b224a818da732"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_response_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_response/9db3a1854de87fd643b910aeab50553afc73e667"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_response_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_response/a10e7effe8b9a50ef55b5e0244ea4dba5c48e9f3"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_response_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_response/a147873135c6c52d4da03c260a0165bc0ab1b979"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_response_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_response/a20fa4d2633e9a401cb765470913483b848721d1"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_response_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_response/a710eead945dabbbffa213a980c75f9463a27398"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_response_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_response/a72406e3ca06d941fe8e168bbf67da88a81c947b"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_response_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_response/a8a62a7ebb7d68b211ae319e082575935c07d188"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_response_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_response/a8abd012eb59b862bf9bc1ea443d2f35a1a2e222"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_response_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_response/aab56035a3533b5d83a32a439f179eb678250113"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_response_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_response/ac174acef2c5da26fadc7270bab9c8c4e938c463"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_response_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_response/acbbd60eeb76e41ce254d0fef353b92abe69c831"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_response_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_response/b24237aa77b5f09208a7eb80b6178aeb2d53d24a"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_response_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_response/b8e1c06314e52491ba955b72e13161c74e9b1422"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_response_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_response/c1eed32e1e353737987da851ad760312ea8e557c"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_response_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_response/c4214ace2c4bab24bb356f71aedca08544baad70"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_response_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_response/c4f87a6290aee1acfc1f26083974ce94621fca64"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_response_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_response/c6fa750d7de79b2547531ed597ab7f1c4cd74193"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_response_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_response/d285d78d3ba966b4b199453d38ead1aa36a7484f"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_response_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_response/df5200f371cff3cae0e1595cd86d641725f5d1ba"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_response_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_response/dfc66cb172919102f3ba14f6816228aa46f78154"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_response_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_response/e53e789a4c175c6a2c468472f1047d0fe8db1177"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_response_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_response/e67fe6794e755ea801272980f2c272edb027f6dc"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_response_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_response/ead61e86fedf118df8e44ed70ce002be651cf291"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_response_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_response/eced8b29efbdc82eb8a1d0865c5f382f0ff78446"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_response_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_response/f107c60f00da44a2c412c5b89c733efe5f9be4aa"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_response_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_response/f58a9135d07ea9a5e3e710f6b3bf6d48d5942dfd"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_response_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_response/f70e0dfc4185374b764189b1a96f3b4b7581ce0c"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_response_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_response/f8c2c4ddd2f474b4839f13a9be862c00ab0ece77"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_response_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_response/faa1781e1444bba5b8c677bc5e2a38d023a1ec65"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_response_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_response/fb60def26b39a737e29e850194a0c2047e378900"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_response_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_response/fccda587af845f0685275960649d8f4a45272a95"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_response_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_response/timeout-3ec5d82cc22b6f35ab7d281faf1cc5e66f0e3bfb"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_response_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_response/timeout-6995dd153f712ad257ab5a365e5a4b84dc676ed3"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_response_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_response/timeout-e5609086439f47e81c775bf80a7213fb73eb028c"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_response_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/000def12957806bb0d40005cb651d35b4cde7b4e"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/0068af2acc3020f344ee84b2c8adfb90492354c3"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/009132022c3a1660b701728ac92e26baf82e8eac"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/00bf0233aa1155b34a3081e4a2b7a1c9cdf8ea1e"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/013197cfb12b59755b807501c6d6615859f9cd3f"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/018a4332eb19f2398162317cb6ad2e8cf700dfd6"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/0273d3496bf5f4594e59083ac319f8f863a15be0"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/0355002521e74dcdb3a0c633338bd02ab1d85312"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/053d8d6ceeba9453c97d0ee5374db863e6f77ad4"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/0628c29e3ae264f8fa08652435bb3e61afe60883"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/065e91578e5359b70a668164310af6f0dd40e922"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/06b4b617d5937da8a7b58aed5341dc5ef6d1bcd7"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/07216a4f5934890b89d845f6256546c2681350ce"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/08584e8308b7f52f0fe380358800d7f585cba89c"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/085a37568e99ec5855bd96affd259921515479e8"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/0903d1e9297179c18de6a3707b16f27d0d54ed67"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/0aa20a75bff4e8af10330c66d288e900146f1a39"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/0ae76e2b24ca999bd5e09e517aa4d88f5b5f58a4"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/0c3025fdfb008a6563ea2a2bb6cbc79b8ccbf8f3"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/0d219165cd317142afa36b8b5476cc022c95c4e6"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/0e053123dd6256de5aff55b0731f913de250c18e"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/0e065f98325849ac05eed515865b33dba0264cd4"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/0e4ff715d491c9f0b471c400b71804739b6d400a"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/0ec94942046cd7e00bc058204c1d046075ca9531"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/0f0e8da530eb8c924cee6985d9c3dfd93274ef8c"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/0ff365225c981d74b89499d1e708684ed4d0b570"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/113b1efff1677c1b9a24f89aec0c3ecc228ddf62"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/11697d621eab6743ba22715722d5b23830b79075"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/12463318b795c756f389bc0fb1cca9645eafef28"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/12784250cf16ec999529f601ae5c5798e853d34a"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/13122d08c1cee0dae6434605917d4cc6d8ea8cc5"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/148a1118649dd8aa9b4ed778efdf7c1611aa5d27"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/15dea2bb5fb36a3dd5172796da66a821a32918e7"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/16488fe15a7e33cb41f2b7c159c99154464b3fd3"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/1870a48a3c9c1dd9027cbd85beb503b43cff6e89"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/1900b6a9123667a79020319aa7fd54d230bc7073"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/1a000f1cbccd2ab6f7e623e015ed2e84284c9dbf"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/1c1d403f6175d52ac4430d1ef2401b549761707e"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/1c2ae0e1915e18dffc2215e9121f1afe0e4335c4"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/1c5d2eef52426db9d0842f3d57b27a219434c512"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/1d0676867c1ebce84531035fa7eb86ed00762df5"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/1d92b263fa70450b0d0aeb81bf5d2f69eefbbd99"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/1e843ed4864d6a808b671dd6769ae191ac8a13ad"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/1eb06a34ee568d584c4b33472788889bc68af3f5"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/2169c2b4d560d74a5487df68b56f3af1d648f544"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/21f8f7583e58c1c81a3ac8237b5fa58071edf8a4"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/231e348407fdcb14412c691b0b20982940160ccd"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/27b8f060e3296eaef77dcdd4c2cd11d5650604ac"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/28ed3a797da3c48c309a4ef792147f3c56cfec40"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/291fcc6e043942638fa3c865c0a1be5e4dcc0e70"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/2a7f6c1f8fdc090b24ceb90ab4f3a7b331c06c86"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/2b85f180fe56f84925b274819ce10a8972a594e7"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/2dea73d7d10ba0dcfd103f7542bdf7458e772b2b"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/2e9c19f98ef88b83ec2dea8b1b7f92b8337f757b"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/2fbd59ffb74aba392b86f4fe2ff8067b6d45cce8"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/31059c32ea28d37b7442f51b20e966665662783c"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/31f78e35feb36037864df5f8f47136f8e6e4768a"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/326d322d1aa31696a14518830e544770f12146ee"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/337df26552e0884ff133cc1be8e72020be38f457"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/33a2a0aa86956097e034b5ee16aeceacee7efc34"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/33d175d1ecb3a85be7dd93d24efc3ddda0a85ad6"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/3718a1b790db16bcfc4ec30691fab24ea7bb0b74"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/37aa3946054035b712102a62b71c94747dfd1491"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/37b697adc0708ad12e4ed7355f3f8fdf1b7919ca"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/37bf4642c5e5a806e2042cdf5ead9bf3c97b9ac1"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/37d94ca6a20303389b35404f3dfd20aaa9ff0851"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/39278604f6a1102366464bbe769ae846e542bc56"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/396b57d9a11a1b135e36ad266e155cc0c3b77d21"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/39a49db120a807fe4e80c502254a5009625c7599"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/39f04d1c6d4beefa3e3d6eae3a5317d969787055"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/3b199b80209fa0b8ffedba4381019f8729cc09d6"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/3ccf7ffb96c3e4789409db33cc12bfd8ddc24c1a"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/3d04382d1fe11ff3b717100aece7f9eff2d04b9b"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/3d4eb9f836bb40cf4c734073bcba8b73e4cc93ae"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/41dc8c55e41d32c30865f9761931ddd4c5b740f8"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/41ef7b74d212f8f7f6681edcffd0db719030d31d"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/431187b5926fa7d0823305a9f87635616ea3ef27"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/44c6da04b8378986721f7225e70a1514695c176c"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/450161236e37a1dfc0da6398c4876df82ff640ac"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/45257a176ca6a05ec65a6df430bbb6b85d0a676f"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/46d1c2f2edcc9cdc0d1698fa0c8853cb19a6e7d9"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/4764bd4297bf0c405348d2bb87b8fbc02beadcb8"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/48199bfd0e2c160f56d03e881bb5dfe276eec462"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/48e865c56e8db13640d6ecbfc0f2486eb77e07d1"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/499b003b8b98edd9dbe2668c8c6af948769d7e87"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/4a55591c4b390c5a36cecc6f1b6f5105300b546b"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/4d33f97ec69c64e14dcf205be36a6319ddb8a20d"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/4dbfb08904739928e19c2f459040b35ac410f699"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/501bd6fe1de2719cf8d2c517a071e5d883fbe766"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/5208871ea8948223b64b304336cea41ac3240244"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/5348c71be34967458403bd4b58bb2a8a744d35ee"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/54362c2f6965268d0835a992c3ba656171b8f044"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/54411aa13f6d9118028171935322bbbc74c15329"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/54c50af22d147f192918499b4b3819eb389468a4"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/55441aac903d96b36bf8a11bc804234bcf0c04da"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/56e1a7c279482a57fcbca43468df96a791ee22b4"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/57cbea7c563d5c4b6b290271b0009c3f348d92da"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/57e11c7a62f0fc807d7b51bb1ef0f0e22f43795b"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/585183c1a240df6926689fe1bd8cb434664db4d8"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/5b2ee8ca40508bf108a729dcb228191670ec34d6"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/5b47eabaf74479348fd0318f174d649dbe96e7d2"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/5ba93c9db0cff93f52b521d7420e43f6eda2784f"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/5cc827e33932ccf8c72c6a839074e856d93463d8"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/5cc89bbf687f94ff87241a8f935905e1c441de33"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/5ec6596f12462fe9f36924c262f97408b54bbba8"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/5f8f3af69295223fb04c37d28035bb75b4cbd705"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/5fd76d48b9fefecbdabd4511decc161b25db79dd"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/614cf839ccac2d896d61a0ba0ab1f42b2fabafea"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/618305cc2d3d3814d78b77ffbf421b769bd862cf"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/61dfcd913c4f0a8d005bd089c34e95d8dbbf1897"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/65a89e10aab00039680e1f7d014737b634c74d8d"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/66a273dbf5e37410efd45518a42b06a65cffe1f0"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/673ff0de0702e8098892060a5365c175d8ef18fc"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/68465c782c37bfdd98ac493b0458444bb94336e5"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/688451dee13d0be420598c6e205a3bc419173e18"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/68a1d9150e1380c219e0a1deb3993f321e000ecd"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/69f49bf7ae8886f5b4c6296fdb1c570256919604"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/6a425f414cd69ffffdbaa34d03eb43841b432e11"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/6ca9e6e85f9b007a0920b0112decbd1403d506da"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/6cd62e3d67b4154639adbe753115bfdd770edddb"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/6d4f2de4cc427417d6335ff5396ea2588509bb5b"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/6ea84030dd0b5b03e4720c244ea8b4ec65e1f236"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/710c1fc8cf7dc1386312c34de5057933fcf868b3"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/720e81dcaf83f867288a90293c5de3b088d5c556"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/72cdc8f78ab5237f96ed354264c726ac79ec429c"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/73535a4f7af7e4c6aa23556cacd63f6929ac33fe"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/73d7b933a5673a4d6f5905006ef6266dda1e4fba"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/753aea13c82d1f8841c2bd4309b1b55d0ae2ba8d"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/754428e00e8a1d0471e00bd9e8f060ab88ab640e"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/761c29151b23b4d14ce6261626641df1182f7a96"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/7658451dd805f277a5b1c3d4065d752d2d8de5f4"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/767e91cedcd9bc1bdac882acc34a53cc23cf4d02"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/77d3754bdd4ea358369c936ed36b974b4181f6ab"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/7a95295bebe6237f65deb15ffeccab22716d574d"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/7ad88b82e87fbfb3d4bddaa2f6e201a151e3a007"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/7b1010cc012e34af1d03e8845868ff0e1db3a601"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/7d3ddbd11e82807321c9a53835ea897cf43aa7f2"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/7da9c5ab5f049da297b0f4c1322edd696202d02a"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/7e265a019c02e5d089152849ac00bb005fa644f5"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/7f33bff4f740eb898b908374b0c1badd47566947"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/81f13b9b65891f2bfce77cb183a06045c461fee6"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/846a14a480ffa1ad0f6333f3ecf2be3057ce6aed"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/87373a7f89feba2d50591b433f69877044155af2"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/8833ba4c780c94fc6c3c466f849c0387acefdb20"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/8c23a5ecd20db4da2c061f3463254e9de104c8b9"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/8d883f1577ca8c334b7c6d75ccb71209d71ced13"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/8dc80bd5f5d1fea64412203e304432edcf5f52c4"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/8fc9a9ea6ad7d6d51e770076eaddacad9f970c6f"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/8fd167de17534776ef57aba2f27675789a11b8db"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/9117d3e51560813b3ce4615dced18fa0e4d0a25a"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/921c68eaa8776f7544e195ae52224355d08a2d4d"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/9293945411fca2dc81fc34b36b575a384e6d489e"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/933287d66c3ff3f0a21f2c583c763f2f65872ef8"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/933d1d91283403f0a56571f533f482e9744eb735"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/93855fc41b3e3004ca6ba85f34b985042d4c9869"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/9544f445c39470f05785b52cfc31bb73bda22659"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/97757217fde05ff4fc15c864bf29e9f560fd1c62"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/9877c0f2d40dd43878bb0209bbc4b5fa93bec55a"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/98bc5065f79dd9d20cdac14ba28f0cf39908cb5f"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/992860817f7fb0e49423607355dab973aa7ab815"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/995ee3d74bc6042fd6a8908c9df5a4cb530378d8"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/9a38c24a6e87e99a72a3a4f007b117ec191a1705"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/9aa97a0ffcdc37a8ef487355fb7271eb6891deaa"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/9b9fddc17ed7bc05a81c18f01e800a4e9efd0c8d"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/a0d4cb9a5a30bb01e8e4f68d636fb173632ed29d"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/a1e070288ec564d10a8c59779aa07fa771fa1d4f"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/a23d10723415d20f4ef1ed9b14d9dc24494856a0"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/a245750cfe4212dca7bfde918de85f64eb053232"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/a24bbe3600f4dfd61bb8415c6a291e0521e4f267"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/a25104d039a549c8d457ecea3b55369ed312f086"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/a33c4fcabe6aebe012cd01c8cb851a9ab0a12098"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/a393e1727b0decca9f193179765c3a83d7096437"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/a5507f06be4735a3a9e416ea986d52c1a6a20909"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/a5adf028c902d17dd6a7ddeadabbed2b36420313"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/a6aa1237a282ee3a93f2544bb6bb7704e565209e"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/a871185cabce7b96c9e2f6ffb40d9901c774b335"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/a89d0e67bf53e22533a635f103d1fd400969ad56"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/a8d1b4e5672a501d7a6cd14b2929297f3a82e035"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/aa614cc8d05a3a58c30a890c10b9a0c1d609b228"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/aa65320376f63805cc82b247612b2e05b87bdbee"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/abd3f6e2cc8887942de20e1c257427b825aed0ad"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/ad0653a3a63675a7ce797e69b4673866b88ace33"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/ae2ce27806f67312e0d0e29a492db9ab9cb9bf4e"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/ae4c0e671bd004165a1e7877d9c67249a165d2df"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/af75c24dff7e22948ed141c763a1309e6f540bcc"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/b0f228c6d0cbbc9f10117f344d5aae6f001d00fa"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/b2c6eab05580b85cda591093d3f05c44bf453fce"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/b35281c0aae174d1ddc8999d97b9713f8004f285"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/b484ae40795cf9730ba94d5a4ca40aa47b88eacb"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/b49c2fed1417a981ba29b32be73ee1700bea7ec9"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/b68542373c05c0ed25231d09955b2c699d37c45b"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/b6d42cbe913f7275b574a71f0768781bdb6f45b7"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/b80b6c2cae83c2097c7e4c1fb181d47cb8fd0519"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/b90ab62d8591182fd90cd21cdb893178d97f7e0e"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/ba45c93ee6b8b286798d8791ec049207c448f7cd"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/ba67e81ef0f9a14bf5a1ca228bff87c681e83a44"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/bbd1f06ddee4fbbd0e5c9c915889862e5df34f9c"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/bd982feb5dd4362e6bd9746ed216c25ce2749df4"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/be77053335e6496288fcf8b6c4d0b4abf86493ff"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/bfb53203499969fac4f4be48e1bcd9235c2fa101"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/c143576bdb5b34ad89fa3319507ae382a721f587"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/c1ac502a15c53a90a1934f4a31d30f93db36dc8a"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/c1b29883768551fa5aadc38ba6eaad8007b9b85b"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/c2331fe0660ab5e411f6d38968c706aed390d8f6"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/c32647119c244cc018bb1863853d5c7bd37090df"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/c4098733900c27861bbf74a71afcbbd93d62f8ee"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/c4f5769bf3b4f2a55c006b4cf5a3bba44b347241"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/c6ea7b2d47402a458d5d03235bb042b61e05b2e8"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/c7255dc48b42d44f6c0676d6009051b7e1aa885b"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/c7d77af55176ae0ae5e59f46e48e1e6ea108d799"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/c80827341dcdf1c21b303b82ec7e6df7eaf63f3d"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/c9501031a75c067b6602e2831f03421b87be4496"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/c98f88d962dfbc2a83e08bfbd8a87b0cc5a8b330"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/ccd33fa22b2983978f9617b3cde76ea05b683c2c"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/cd0e7701fd79879c56f680817a0d2705751b1f44"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/cd1c2b5c2684d831aab5265e9cd6f1ee045dab9b"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/cf98e8b01e7a759f28a9c5f59c896317d74ac47c"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/d1d171589e035be85dc347278f0735151a342d68"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/d243143bf9b8adf6be92a157428ec6cbfd785423"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/d2cd278979f2842ebd890f1d84712750273ad0fc"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/d2e96eb2699c7dd4a183f13d3a063a1aa9c192fd"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/d3178f8b0d26275667c27bb8533a61643213e4d8"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/d46f536ea4b601c0ff313a5eb5b47e2b55aa9eb0"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/d4be3038631eac422022ee23f43b47905a15b2b5"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/d56b30a2d1b5a2a13ae00392bcb4ca72085310d9"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/d67f85948143218d11e2fb7936a119741036045d"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/d6930ea81dfd91856a06a0c16483e47616642b4b"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/d737c10038a92add90e2ebea5c174ed249de8018"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/d758a67f018b176dfc7d29630cf8cb587f5b2a6b"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/dc7139105787f3ba67d7971d80796e9cf5786a91"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/dc8ec35f43e994b9c4ac61275d6b934990d42181"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/dd2694fe12a018bc6af6f288b5c22a030eec8049"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/de7424f44508582a953f137195533b7a0191eda7"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/de91a02040d792dfcb71a4cb5aa4c1c006201273"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/deb576067b11f6e2a3a39b0f2ef38ddae5c67b18"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/df58248c414f342c81e056b40bee12d17a08bf61"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/e076020b2826abd3a4b960fb33a35fd7d0606dd8"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/e0bcf682342967c002621acd2563a2157826d156"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/e1edca08a7654b42a64647abb0e773eddddb580b"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/e2fa528289b5971f5b40b3687a2a6f0d17348de6"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/e52af0ba8750572b98f3a8968de77811ddff0893"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/e5a0f40647f805b5001645ce2d94505e72fa64f3"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/e69762f0c6a2750c0b03503a6aec90ffc94bcb72"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/e7064f0b80f61dbc65915311032d27baa569ae2a"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/e863a4420854c36168d2b8dd39ce474ebe11cd26"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/e8993f97bb9c83f87c64cfc429095eeaccf32953"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/e9875d9a54b3ebc57df4da886cd30a39252ac666"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/e98a9d92bbbac9b1e64c0641e967adebd681b2aa"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/eb7c31f48c77b742fa29126ac78a2c06c41208e8"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/ec174492517f988010ed3ddbd003cb388f477bb6"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/ec4d6a393be7ec80ccb8c531337a7fc3ef140e66"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/ecd40909ab5e2c61841d9fb95b8aacc87651100c"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/ed17c8ddb6cc8a0b653dc87aca999d31e80c781a"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/ee0b476126bb1c2249b299323718ecef1250645e"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/ee1fb6a0b4139c07f1cf6bce850eaac9a2db29ba"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/eeac145c017ed35305f0ae69f820fc41e26e7997"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/efac7390c6e3a653d3ce93c3d6902f2f1c281ce0"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/f0f0dace93d51cd8e045aeacca89424fc836eebc"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/f3341b8cc55c0bb6e2d0a1f7f06d68e4f04057f5"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/f59ff56e341b94f2bddfd718b48ae9ab1692d720"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/f5a1824b9fd9f124df8097017607bcfa00eccfce"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/f5b92b69853a5d123bffdc6b0ab093f767ec30ad"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/f6aea4c380e41ddef2489ee581ab35e17fa3e8dd"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/f7b7254a3af7c41cb86e4b23bb93c5a6d55e2583"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/f7bdc1b174f53a49c6ef8f8cdb9b8e74e0a5d4ab"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/f98c78c028baf22f39c77faf6e70edb86ac1d927"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/fb440171bca6ff922727e9ff2a4ac40d8d7905ff"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/fc76cc4030b422e4cb5c145c3e8ed122e242acf0"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/fcab3b80624b431e464dc12d3b6da1cf538bd15e"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/fdb3a9b59798d7e851d9074db69422b1d2df38dd"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/fe5de5f387e31b029d589d9b1777fd0d6b3e47b3"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/nanopb/corpus_serverlist/ff52d938aaa10c08b2eb0830fc0066c3b57e040f"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "nanopb_fuzzer_serverlist_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/slice/percent_decode_corpus/04cb8ccc553f9b2f5e52c421aff6d1c954d3dae6"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "percent_decode_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "percent_decode_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/slice/percent_decode_corpus/0dd8f3a63745b3a2d39791559b5c1b311447b537"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "percent_decode_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "percent_decode_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/slice/percent_decode_corpus/17eeaca784409adbe43365c32ac87915d736bba3"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "percent_decode_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "percent_decode_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/slice/percent_decode_corpus/2040c1ff65f52a7ae668c2c8f324de5dacc9d695"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "percent_decode_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "percent_decode_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/slice/percent_decode_corpus/26b0d1da23027ae54db96e125e4a9e98842d77fb"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "percent_decode_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "percent_decode_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/slice/percent_decode_corpus/2a089c0db45acdb4c6ed8e7ff81ca7235792c0b9"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "percent_decode_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "percent_decode_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/slice/percent_decode_corpus/35b7b3bc3a740d5c3abca0d75b53f0e1e1ee998a"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "percent_decode_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "percent_decode_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/slice/percent_decode_corpus/36367ba1adba47a1cbc3a88707fde8cc7abdc248"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "percent_decode_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "percent_decode_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/slice/percent_decode_corpus/39c2ba51548a0beaf0d6d1164531f1447dc311b5"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "percent_decode_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "percent_decode_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/slice/percent_decode_corpus/56d08fea787c041395c6697ce26cfbc0decbe688"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "percent_decode_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "percent_decode_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/slice/percent_decode_corpus/678d981fdabb9f0d6640235cf1719dd1e1e66ae9"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "percent_decode_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "percent_decode_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/slice/percent_decode_corpus/68751961609ec010565de0aa87521dcbf0722c5d"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "percent_decode_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "percent_decode_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/slice/percent_decode_corpus/7875c06c6f03c9aa2f8e9c59f8d8957c8a32e759"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "percent_decode_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "percent_decode_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/slice/percent_decode_corpus/7b302090e090a5829b6d1dd7be30bd4e36a7e60f"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "percent_decode_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "percent_decode_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/slice/percent_decode_corpus/875e1022169c9e4c541a9ad894e69e989df22ba1"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "percent_decode_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "percent_decode_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/slice/percent_decode_corpus/8c1051ce066f5a26de9a9d133180621d0da957b4"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "percent_decode_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "percent_decode_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/slice/percent_decode_corpus/8e084e628ab83a18ac7ca7cb3506525263655c63"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "percent_decode_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "percent_decode_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/slice/percent_decode_corpus/9d316c4675f40ddccaf8f1cc7aea94170b1e4223"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "percent_decode_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "percent_decode_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/slice/percent_decode_corpus/ad1c7c11d18a7d116e2c2ef4d4c5afb1270836ae"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "percent_decode_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "percent_decode_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/slice/percent_decode_corpus/b471f94aa4facf502e622e4a248f1ba4063ae681"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "percent_decode_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "percent_decode_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/slice/percent_decode_corpus/bf52ece030f16136d46e0dc97f58d60a0d8a1f0b"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "percent_decode_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "percent_decode_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/slice/percent_decode_corpus/clusterfuzz-testcase-minimized-grpc_percent_decode_fuzzer-5652313562808320"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "percent_decode_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "percent_decode_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/slice/percent_decode_corpus/d5b2a7177339ba2b7ce2f60e5f4459bef1e72758"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "percent_decode_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "percent_decode_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/slice/percent_decode_corpus/de867b64c54a7ed773dc611fc5cd2f17c5433113"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "percent_decode_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "percent_decode_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/slice/percent_decode_corpus/e3948dbe004950591630dd5c52f4e0fcbd5e388a"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "percent_decode_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "percent_decode_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/slice/percent_decode_corpus/e7064f0b80f61dbc65915311032d27baa569ae2a"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "percent_decode_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "percent_decode_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/slice/percent_decode_corpus/xyz"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "percent_decode_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "percent_decode_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/slice/percent_encode_corpus/0d3ee7fa54e6c66103965fd4409b044ba7db6c3f"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "percent_encode_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "percent_encode_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/slice/percent_encode_corpus/2e7ccf75e27b9501e3b28cf1c50ed0c45ab7c226"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "percent_encode_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "percent_encode_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/slice/percent_encode_corpus/55bb859f3942c462b03b7cbcf22ab4a0ac9705cf"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "percent_encode_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "percent_encode_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/slice/percent_encode_corpus/56070cecd54c845b6d4334953b17b712eb000d93"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "percent_encode_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "percent_encode_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/slice/percent_encode_corpus/61f50e891bf7ff5eb7a7af206f1e25d77f8756e7"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "percent_encode_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "percent_encode_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/slice/percent_encode_corpus/6e0c60cefc704c7940e475a87dd9ae423061cb5a"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "percent_encode_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "percent_encode_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/slice/percent_encode_corpus/7271ebcc6d22a0f186f7bc3c1973a7ed1bec8d8e"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "percent_encode_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "percent_encode_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/slice/percent_encode_corpus/74c83ece3e2920a67593a9be9c82468f16cbb969"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "percent_encode_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "percent_encode_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/slice/percent_encode_corpus/98e004fd2a9f141a7a019720820080e12d637c06"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "percent_encode_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "percent_encode_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/slice/percent_encode_corpus/ba2c1e98227aa21ea3bb2ca4d0e504119717da8b"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "percent_encode_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "percent_encode_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/slice/percent_encode_corpus/c16b9fd45370d4afb5d3ebd307a6e263c25ffd45"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "percent_encode_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "percent_encode_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/slice/percent_encode_corpus/d58c3cd4eab9b6d2343abfa1c25c90a383fe0ec3"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "percent_encode_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "percent_encode_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/slice/percent_encode_corpus/e2619218ede30d2b7b8ecd601a9f0ae754b728b4"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "percent_encode_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "percent_encode_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/slice/percent_encode_corpus/f93b3653e453f0e3eea3198001be6ce46e64bd21"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "percent_encode_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "percent_encode_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/slice/percent_encode_corpus/fd41d029c7682ad3d1c40a9fd017a4c85b673a54"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "percent_encode_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "percent_encode_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/slice/percent_encode_corpus/xyz"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "percent_encode_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "percent_encode_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/01c008fa.bin"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/021ec59f.bin"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/023517819bc642abe41d8735112fcacaf018c0cc"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/02918e4ad9e8928845f232c0cb043057add3c9a9"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/0336e1ff71939de9e2007fdb4aba891e35a37488"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/033dd2f6.bin"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/0384345c.bin"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/03a304b82629155af693978c2b53439e553f6450"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/03a72675e1969f836094f1ecfec2a7b34418e306"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/03b9be1fa172dff5d1543be079b9c64fa2c9a278"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/0416afd6875d9ba55f1e5f86a6456a5445d5e576"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/052c8f28e5884bb48f0d504461272cd3a5893215"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/05551028437699c8650f5d08eb5f95ee25adf436"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/05c3a0390d0f52d241728926fa901599a47e4606"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/05efe6d81ce606557691432634e81f61e68b0b81"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/06285b50669cc16463db009ac821f99cf1ec2e24"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/06bd2f82fefb9943787d63ea359f9b77072380c2"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/0766afc7c27c06ea18d896083470d587a380de3c"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/07ad7e0ea2aaecba37f2429a64e946fc6e2556f1"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/07c96c06eddbed5a3ce050436bc805f6821cbc9b"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/081e56ce6f6b1c57adb806fbc5baa9f93f87513a"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/08492d3d0994005206d1d3213b8747d1026ae1eb"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/084e9e02b8f2ed41ff9c22fef80e522e491227c5"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/08c42ef29eff83052c5887855f2fa3e07ebe470c"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/09938e3256d06a8e168eb038d8a58b8462f7f697"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/0aa599e20761777c2cb9b41cd89e5c2e18f82d9e"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/0aa7b949.bin"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/0ab8698b211ee696f35f20a25c27e9429235fa41"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/0abd533e.bin"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/0b275a7f.bin"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/0c129f78eacfb0d0d3c89dd4e578724096a3cea0"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/0c413d2b361b2221585026d42f3046ff4135d2ff"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/0d10bb63.bin"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/0e349b8762703d080b3a696600e21d64c23a2ed3"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/0f700e05.bin"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/0ff4d220.bin"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/10724098.bin"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/108e270a272e312fc97ec23004b80fdc7bad3906"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/11516d58.bin"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/11cda3f70be4b507ea936bca93af9ce5aaab3be7"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/11e90d0f3ecbf72ad5027051d476a31b8d7e0671"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/129382aa11fa2922053fa47ba691dddb98901260"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/13501419f349b7855d2e94060bd08b28923d1f37"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/1353e447b7b10fb3eabb02863a1fc5bc9bb50460"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/1421a8e9f045ac65a0f6938fae93fece1060c41d"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/146b7d66ad932c4b623eec8004e286d3705697d3"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/14f9a0cda0d64590430218aaf6dedd9be2a3533f"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/15ae78a8543a4794a27e6c79b0d34540322b97fd"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/15afdcf2cadb93f56dbe36233d8cd7ea9d2bd6fe"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/1650b19093c56a1e86ee192bd9cd8d2266a9e353"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/16753235697083ecc45c117287f1d8ce6ad1ad1a"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/1703a8f0c3b3c9dda9eba8d3850e69536436d57a"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/17d7c718ec2597353a5dd2c78d6717a3d6aabfae"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/18d8d274aa7c163fd6d0084d5c25c8623e10c541"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/18f00b5f.bin"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/1928c455f3685f4abe7a04697f571ab864cae02e"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/1939a9021aba59ea2e49d3d0909e6fdf86ac3f9e"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/1a69d5fc.bin"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/1aa6897b6eebb8c68c972cc5025b39c7e60c17fe"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/1ba889ea1543297824e99e641e6ca8b91f45732e"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/1cf17783de9e662f3720847f2d83d86dcdcab500"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/1cfdde7a.bin"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/1d614f3d6b826f844178a77094bedb534748a362"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/1e92aaa5.bin"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/1ea5651f.bin"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/1f992057.bin"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/20fd12d3670571283dc0c5dbb3fc139a8e943790"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/21475569.bin"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/218c1b123428a07622570947e9b7cdb48c310ca5"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/21a2dcda.bin"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/22ad891a.bin"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/23c582f6e23c7bbc9ae7b039b3b4e2ccdea3d5d2"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/23f261e44d54a2736f6e288128d98db9e5015206"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/2463aea879c5ab49f8409d0e5c062c7e086b034b"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/24ed80095e58199c52997f174046272f61ce4a8d"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/25ab638f.bin"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/26048c58bd5f2a94843f6fd1e4ab0be04b232636"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/26870785fd0564f552af4e0ca418738a85b21086"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/2701d1669c2996c097a74c5255d569615357b916"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/27ac2ae2.bin"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/2814d70c.bin"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/282b6585.bin"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/29a8346696d6f0962072714b9626966c81dcef0c"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/2a688fd507072e1cfa2e3bc58652a7cd82dface3"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/2abe64b96e5e72adcf2dcc43444a69d0fb664b66"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/2ad6cedd32cd646ba8e25226c7c13a107c1d6447"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/2b14c6e618ec95754ea7e24fe6bc5a3a97df6897"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/2b40aa21723c7e67e92e74a3083df008461d591c"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/2bf69fe6b40734cc3f0abdd765757809b14b0b88"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/2c4c7e2ed6d977ec119b040b328ad09808909a70"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/2c6660ba.bin"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/2cc6d1f3ee8933518e91b8410781fa6e105b3a15"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/2e4805c3.bin"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/2f20e2decd09b6f211a5469c67efbada355e6c04"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/2f3b1cd6780fe475f76f17e9e36541963d993165"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/2fb017cd4c34f4af183d03c4a219d2bb36ee2dd6"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/30bba77d0f420c4f454011476f3c94e31c50c161"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/3224e6cd.bin"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/326ec4d5.bin"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/3292129aa7f6eba86b70fff64408f18fff895c12"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/32b11997.bin"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/32cecacca27b249bd764f852168036c5f962bd16"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/330ad4b6.bin"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/33b4cf1ac251f0ba0c014005ef8207afe1dea623"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/33e2ecd5c9bbc1f1dcab29d00195e0ab6d04642d"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/340b032d39e2b212828a2bd1a97e2b6b81dcd41b"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/34bba9e4.bin"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/374262a5acf9cde1f480e7b7254c788e1936a4de"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/37ec9df8.bin"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/38df7e63181cbd045e5af9dbee463360c8254618"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/395aea4fcfea081fc0d2733fff2d14405439fa72"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/39ea47bb.bin"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/3aa82376296ab5a33f2921d7705b75b78b683c2d"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/3b09bf453c6f93983c24c4d5481e55d66213f93a"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/3b55d09b98e3982d6f80913a792463c3974766db"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/3ca5da2f.bin"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/3d7ef8c7b05f26e914c479dedb1bef5e378d2d94"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/3dc665f93db294b9ccb8fcec94bcc2a91f3a04e7"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/3de41f3f.bin"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/3e2077a4fd2def7b11e618d46245d0aa85824317"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/3e3ae35a.bin"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/3e787760.bin"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/3efcff3d4ca529a89061c05ef9e8035f36d564b1"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/3f3069cf26f761366f947e025f7049254d555e7f"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/3fd914fc88fbf1a8804c6715100793d27fefd21d"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/3ff171516486f77dda57bec1f757da1691547b9c"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/404e234751b01dd0b51f9e7610f787253b074528"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/407607d2.bin"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/40af8d589c76d7912bec06c2ae1f2466065018e7"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/4123bd764c04385191342ea64918408140313714"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/416160124b3b64fc9355f24dd789b3d1fd097b8b"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/418f392319c44d06a018ce4c62569d527829177a"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/41b31ef0.bin"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/422708b4.bin"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/422fa704.bin"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/4271fbb36e03cee79b21a4a5a65f37ceef58a8cd"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/42b0afca.bin"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/43fc6abab9840be5ee614211f17395b5966f6070"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/44516839d35af9ccaf8a2c62f3ce6a723482445e"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/44f342a6.bin"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/4558ddeb.bin"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/459c0bf6.bin"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/468cf8bf3e31e1013c7c6d2288baac47ff90aa63"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/47563391b73b6ef4bf987014c3e631fe2555a377"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/49cb33cbb60f041e8e99dd718993acd2c3354416"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/4aa883d0.bin"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/4b7bcb4ae6c0222a1a24d1fb1a5d96519750ca5e"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/4c412cc1a775cea041fa270483d610afb72f463b"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/4d55d5ae.bin"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/4d982c41efad2242f8c06630c23c68146153b47b"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/4db3d4075ed27f2a2311f85dd1d6df028cc5d083"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/4eb269c3.bin"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/4ecfe1be695df0d2489dddb52da8bcdeb6ed779d"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/4f96a5fba4d11401eb22d4b1e365fbbb2d684f24"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/4f97bd97ab5dc6b4c0f62f8459be8a9593dc83b3"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/4ff50e49865768323f94116bd98d2314455273cc"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/508def44e4d60f237f18a40d7058e58a752a74e1"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/51a1abd1.bin"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/52b5478161de7b2eba0f7bfbc29aea985c8d9ee7"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/52ecfedca3b2b26e6999b6afc846f3dbd5d35130"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/53d18398c0d484de00afd8d583fe802d55d4da44"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/53de507f.bin"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/540ada69.bin"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/5413b531fe06923ddf2c9e3eb958769374bc2445"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/5429f0da.bin"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/5435005f.bin"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/546367bfdd2b9464fbfe5d74f55d8cd220accbab"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/54aca6c103dbdf019a2bf45506786c095e470de1"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/54d0fc6c.bin"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/552199651d942e7220141a93ec33dd8256210a18"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/55af20415ead0ddd417f37fa91a4c767b749ee34"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/55f6fb1a.bin"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/5780565e.bin"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/57918260.bin"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/5841d898d2cd804f2d6373538e341dfba8a4dfab"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/58b88a24.bin"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/59743fe120be6ae1aed1c02230ee1bb460f621ee"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/597fdab5.bin"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/59ce7091c00075943d79e857c01ad1af5f38c78e"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/59d0b24d1acd01c749fb4bd6802a5f4dd003ce75"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/59dcfde4.bin"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/5ac92c4a7fb476393f8275fe4b79a2b13e3bcad9"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/5d43ac923d7607a16e3d7bf8b838f52622871251"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/5d817877.bin"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/5db8b96291c7ee12141eafc925be845c4f5ea069"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/5e2508e15c79fbe9c2e6c1a393b490356a17efbc"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/5f758756.bin"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/5f820fa8d44229219d0b7c4724e3e40a2ace97f4"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/609706c57e848ea58d7ca14fe6cc253322f3e8ce"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/61e798bdd49b339983fea4ccfe18efe44afbd69b"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/62d05f336176a10a2c339c04d818f23b6e9a2637"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/6499e2db.bin"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/64cdbb31d5eda779d07885fa7881812db7800c05"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/65077d2946cfb822cf92c9dfc44517a34589f277"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/65099066.bin"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/652bfdce.bin"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/65d5ae42e6acb429459a1e1a5fb35f09c0f95de2"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/65fd6cb3058ee0baae854cc7859b7c0c1e1c1166"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/6652f7be83a876214affc3f230040757f7db4ea8"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/67b04816.bin"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/67ebf074c7f928c4fe32fef44e5c958cf441c93c"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/68f564fd8064233897ff704b5955b33a2e29293a"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/69891e9f.bin"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/6c0ec181e81b915071766762f5d78e9b1ccc9128"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/6c5bb78b51cf5006c92258292de19550985c00ba"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/6c66271b74a11f4e7065a6acbc86e4611e7e0dcc"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/6db42d0c5471ac697d82e882c01867b73f71c71f"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/6dc4455c.bin"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/6e050e98.bin"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/6f3bd9f33ca05bebe3811f7b3ae6ed112e1e45b9"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/6f9d75e1af7ae7010d32872da888a582a25fddb4"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/70ebe7f32c63ca8940017eb83e6db4d8b39ee03c"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/712300b98afdb5f0d15c657c13cea76841164b13"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/71ab07577909ca4b766f8ea0c6b8ec2bc395fc66"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/72296cf9e1052ced4b60e2053aba9f1a569144e9"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/72db978194609ac138bca393650740a3eae8f448"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/7342b3febb07521e39abdf4ee976d16199d51239"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/746715fe.bin"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/76294f12a5974e9f87d8f092d0df5429cf6c0466"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/769f5d079151d1b5cab388c47a74f3c297c18d58"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/7839f12a8410a73d66e191cb5183d36d09a375e8"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/7a946bf3cd91b63001f2cf3f40c515c747f2ecde"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/7b453adcb9c4bf31dbc448ff32c2bc90ebcbdf0f"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/7d25c28298fb4d0fe41209d0d14307e4aa67c59e"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/7ddfac7d7845b424bf670070781ca6ff8586c63b"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/7df75412d12894fc501bd2d8493fe9e5a753ad88"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/7f15bbce.bin"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/7ffd05db.bin"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/8138b18a9a743659befc2f2b23d23cb9c3086a09"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/8164d3c4af043c47cfd6966873bccd2353d072bf"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/81fb19dfcb3c3a18fd9e7c177356479503e75e6f"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/82dda42ddde662192ebaa96788945b7673bb486b"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/830e3f794c53f7b284eb5c635b2943db9ee9aaee"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/8338ebee.bin"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/84a3c6cf853ff318ae163231ce295171a59d5871"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/86478f200fa3602b9859597fd1ae56a04027d7e9"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/8694fdefd4ed3d3fdb30fe1d7595f6ea6f5f5054"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/86a19d13cc65790696299c819cac17b14e337647"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/86e6dbf2.bin"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/87155c97c3fc6276f7b8f13b50a50e2307b2d397"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/87e6640111fb02fa4cda7db9c1d51432b3b06212"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/88017b0894db1e6f4e3a6640ffe2876d31a54723"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/8846918f967dd6513040c6d382fcd68ff7099873"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/885fe25a0b441ef46ab176b88771c133e530cb73"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/88e1329b.bin"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/89cd90fb47bb9eb289e8126b26021ee00d572d95"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/8b186384.bin"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/8c04817a75fddd71f13779f2ad5b994f45c333a2"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/8c72c3f35e9b9fd168ad9024c953a703f33ae3c1"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/8c760938a2a72fa92b27e00e05005e2e4c429359"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/8da521d9.bin"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/8de81717.bin"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/8ec00f45afb097066f47d0bad256a8b856b1efe8"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/90224b8e.bin"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/90240c7c.bin"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/9099ac4e83f6460c80b5557c87f653e4c65aa091"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/914ed07570b6441365a3636d05850f7316c7f2a8"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/916b825da0ffc46fdb6120b1044e98ae158fce70"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/925011abb99fd56bb0f425ae5e0d92e6d341f804"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/92f1df2266f34a097e96dd22188d8633832d37b1"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/93beeba2.bin"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/93c3ffcb7e3bcb5ed7e37a5b3dfb97b43ca42718"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/947f53c0978672e59be452395670fa949a33cb4f"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/9540d3ad3fa75bfb95c0d57cefd737611c7069a5"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/954337ef.bin"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/95d25ba2e190fafa2b3ca1e1c467b9ef64868962"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/9764015f89a0b7a59f3b5359b0a037b38d6e39d7"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/97aed4bd.bin"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/984886f71bcbb9e5c224ca15165d5c21d9daf13e"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/986c9ca7db83b2cddbae2a0db2dca87f52277074"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/9953eb28aa1ed661612a4710a9d16a15de4ae353"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/99a1acc96512c1155f91afa378e2345726d307c3"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/9a176b6f7e0dc5f681a1788d8954f76fabd08cad"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/9a6963b0d0fcb0e91a31748c47c6f0e1e842fea9"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/9bf7553a.bin"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/9d2d18fce18c790035d8f67ed798703bdda0a949"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/9d7b307bf4ef07f46b2c99311b4486bf40884b1a"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/a112d484b70e778835fcd478fd651828720791e5"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/a24bf2dc.bin"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/a32be0653ccc65463445b4aaf24a7a1164d5c642"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/a357658d.bin"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/a3a2b1af.bin"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/a40c3ba87b4206142b134f67485859b7c9b7c75c"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/a5348197.bin"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/a5b529754606b96a8c801615ac12a1f6ee5c3f54"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/a5cc3762cb2b2cac316c60ddee794016057fb4ff"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/a5ccb8f124d8ddb5350b90bc0d6b96db280cb7c9"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/a7e64803.bin"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/a7fac1265a384fe9e45a9ee3d708b79c4e80505e"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/a8305e9bb4a544eaef27e8bd21b4faabf524a84e"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/a8b4049240b53947a8bc76cadf8d4ff9a802c783"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/a8d229374635fa6f2a75ca1669892e1bc244e719"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/a8f2345b2c949e9e32a434c99accf771f405eb65"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/a9463428cdc47d37efb6e3c5633d1e5e78911f16"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/a9966f7181d08f6a9ff8158736ad77a285d743a6"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/a9e22d93.bin"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/a9fc296cc61d020bc9afbdd0e7e5e3031e884176"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/aa3c8974.bin"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/aa825693.bin"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/aa8729d7.bin"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/aaafca90a7f59184f3d768a1d6f9093e8f737b8a"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/aaf049720c707d4e14e47e7eb31d6a2dda60e66a"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/ab41d96d82d2dd3f41cd495c53ea031d7979b47a"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/ac4e19c9fe290afc54bbb1e5f6cfe84a9c1f3c29"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/ad810f7f.bin"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/ae297426638eb5a0611324f403c3189515274f1b"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/aedefcd9bd7fc10b7bf60372da54c43e953523bd"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/aefcbc29f2caea5038cda4dbc927cdadd9b844c4"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/b06ce623.bin"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/b1128694.bin"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/b220d23a13d98d4815b1f7a3e4fe7dd8672b1c83"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/b28959dd.bin"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/b431df13.bin"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/b5acaa52.bin"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/b74dcd9c2780f145e09a27d2e03119576889a301"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/b7ce4a4f6eea20c0b83d9f7fa8406a0730ee0040"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/b829143b.bin"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/b887097732b9c30719f6c7ea7a7cbac531512a31"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/b924c842.bin"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/bad4f467.bin"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/bc9545cebdcb3af82406a5f0c1b286d28f9d4f5a"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/bd63e44a3b004e7ed471c2367c3efae2c58a676d"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/be9b6e78.bin"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/bf5e21c32becb5839deeb81e9174cf6478a25473"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/bfb55acd5b66521eb5bd8ce6b57b3b6895883675"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/bfcbffa9.bin"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/c004455e9d60bc2fff094e79cd0b38507023e018"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/c039ac9a5a570f8fd9064df9320890b885edf9c3"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/c1188b44.bin"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/c12835aa9f3513d3f7179ee4f9976292713f7cb9"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/c13188118af1634061b6a3947b81618891aeb6a3"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/c2d2aa1977b17d6e38f906968aa756e98dd09ffa"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/c35968bf.bin"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/c39c0192d0d4f2b24f05c25a9e669cc091bff9e9"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/c43d97f2.bin"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/c4534867.bin"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/c4a71cdd29759b51f9cc54175ad69c44b4ab6eb6"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/c4e4c7572e005e18d56eac407033da058737a5ab"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/c559f565.bin"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/c56fada76f5c198232201a608072a1a63e3d3785"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/c5ff50ae447ac7a0c8fb3363b2458824d405e64c"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/c66e84d1.bin"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/c6a1d2cc8935808b6e317a69baec1c3cb87cac94"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/c7c44b98faa21c8f0645a818a65b60d956d15952"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/c8073f5f41970fab4738215e42ec97a4383855e5"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/c81dec02.bin"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/c8812dc8a1ab1592a2d7b71300e1a0a5da6a6382"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/ca843c66c4c4807ccb1615b472c79bc459e5c6cb"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/cbb04be69714f81f5cd09e36e8ea4e69ea73d618"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/cc97ece92b72cc2a4d045e16c0e2f2021bc014f8"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/cca29902.bin"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/cdba6c45.bin"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/clusterfuzz-testcase-5417405008314368"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/clusterfuzz-testcase-5595941564317696"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/clusterfuzz-testcase-6312731374256128"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/crash-0f4b135c0242669ce425d2662168e9440f8a628d"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/crash-239cc27a23827ea53b60ccbaee0ecc64dad2bff0"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/crash-41ab0e868e84612275f77118f9e832bc94ff45c5"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/crash-73923add5066617ae08f187b79d2639b4fd96138"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/crash-7af5da2a8da23d197d9336e32da72c9ff64c15b3"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/crash-7e121dd3be057176369bea160d873040b32a03dc"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/crash-901723090ff2042ecc5a008ccd7ae0845c1681cb"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/crash-c1f66840627e3bfdedf2e4c225bc4de0c267ed37"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/crash-ccf36bef9318fe6d5e5e1560c5485cdc87d0a701"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/crash-dae0f07934a527989f23f06e630710ff6ca8c809"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/crash-e097bf07afa8e55d7dd5f5df3569e34903ccf9a7"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/crash-e34b0a9a428001cb4094a9ebca76329f578811a4"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/d0f7eebc.bin"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/d2031009d3783fcf083963fa30bb493f7f935541"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/d28155c6c92642c61dfb097f7b2eb1d6ced272c0"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/d297b3f84e3dee9f74bf1162718aff66a11a7f5c"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/d44d94764e1761cb7278ffe5cb17871abab7ed89"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/d6979f0f.bin"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/d6bed9cc3c10338a8c5f41064ff8bec0bbc267ce"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/d8a1d141a9e3876b71c7decbe6e3affccf6de397"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/d9074e68.bin"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/d95556cac07e720909aaf2ac09d876106420463f"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/d96da249094db51ea92b1413907abfd27a4f2426"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/da7e44a9.bin"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/dab172ff.bin"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/dad922e2daf84cf039f50cf8636eaa9dbd01ff83"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/db33559d4afb4c32e68525c000fde16a4c3300f5"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/dcabac1ef8b197ef39b188bcf5dc470f9749e903"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/dda9643679f8c8b796e64232a7d153e447d64991"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/df5d3cf5f05eab65ef9d385e263780ae73c42b19"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/df80b527a003e47a26099088a283228ec62a61c7"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/e021c5b9815f02ee9d1e5a003cbf3500e19db13c"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/e0d9a9a7.bin"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/e2652fbb.bin"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/e2c954e1.bin"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/e3bab014.bin"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/e7ad0c4b7d0f289c90a3988309e9e03b78f7eea3"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/e7b08e36420fa107f0aee652e62158af85a4ef15"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/e96ad9c17795e52edc810a08d4fc61fe8790002a"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/e9bbe2fe47b7b9c2683e7f17f4a33625c6ffbd8c"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/e9d96662.bin"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/eb66106b.bin"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/eba8472a.bin"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/ec4949487fa84f0cead39521b51f837af9dc784a"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/ed8da77f.bin"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/ee64e1ba4897bfd7c6baa1fb72d4c5f83b5654e4"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/f0387dfdd6b8c925d958113e669ec4a1897034b4"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/f1121b952e75463cc71137683dc2528f9cbc19b7"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/f3220426.bin"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/f3a092425c89f49b50469d522c99abbdb1b6dedf"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/f3d084cf20b92a5f026fe7cc6e5af49bde28693d"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/f4024b01.bin"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/f541d27e.bin"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/f5424a9d7bd14317b6de7b15587df28bfde8362d"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/f5c877c4.bin"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/f5f0615030439dda162e8862b6bbd09f81f14d81"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/f74b9428.bin"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/f7bf0d7bb0dd6e1866ccef9fafc3cb295db2f07f"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/f826100f.bin"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/f88ffb7f3066f2706cfcd9be077595e07834cc15"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/f8b46e92c7ceb4c2f2cdcb3452a6d8c58768eaa2"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/fa202a5f51cd49f8ea5af60c5f403f797c01c504"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/fa36b4280d9e28edd81c5e4d192d1a5c2765e5e4"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/fb3b0d80.bin"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/fb84edfa9e8cbddba26a7184e7fdc219bde556c0"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/fc162db40f87facb73cff20751e23af2e1f5296e"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/fcb1dea251d1ce74e30351f13a3f71e3debec3d2"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/fd14bea45ecaf13af0053900edb2f17b71a0bf09"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/fd26e0a6.bin"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/fd943e69304dffebf47e1e40b0849e12abeee287"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/fdf67df81857577361d319e76559c5e85a257b07"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/fe17c07ffbaa67f1165938d2578038637b93cf57"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/fe1957b9bc7c6bf9d8b6089c422d72a0f444da6e"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/fe66893c.bin"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/fe69ddfa5827dd560bb0b5d4da7d982273f17ef9"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/fe740f8c4ffd07f79456c8cee24ef556ee348f55"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/ff227015.bin"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/ff898c08.bin"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/ff902ef808e01b0b2d167c1c7e8e263d6f561941"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/hope.bin"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-0292270056246b7a4ccd2e7d0356665cef307ef2"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-03c6f209b2f144734c83d81ed452839d9e244fe9"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-082763e16153cb6b8f3f5308cd060e822f475e5a"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-098ec93ded3a20e6043d11e9cc6066351e257f8e"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-0aa52e00ddd54f8e129430852c2da95650c354b0"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-129ecb5e7b80616f36791e3580844e520f2ba7d3"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-13501419f349b7855d2e94060bd08b28923d1f37"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-14862768a1fe076896fd37e2543ddd23192a9e3c"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-1a3ebf8f8bb0b5a0109a5ef44734cc64170377f9"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-1ae0ed17a042aab8a3c3199c83a809b0243d1424"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-1b6c4b5c1949adae3efd5e3264bb32a40eea524e"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-1dc659f500e7bee41a4fee4423ade8332c162cc0"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-30408c9d13f29804168fc62a0818cc894c6375ae"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-33d8bf197de7131be78244e10fbb0da5055cf266"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-350b5da741597222c98fe86768432507850317f5"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-395aea4fcfea081fc0d2733fff2d14405439fa72"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-3991c873ba814d0cd03a67d25fff0c8fe8713aca"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-3cec540a680b108dda1e0a8e0bfb2d44e5a4a4e8"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-45cf8ac5faa9c7b15baf9281e8d7e0b4e103f0e0"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-4c6da955e4c101b81a62b2f8e934d94a62ae534b"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-51cdbfa3e97a46ceefde405e6ab087a109c26907"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-523cb1bca5ad56690c618b4ceac7fceca1113b9d"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-58f116dfba8d428a01ca596174fca63f4ac523f0"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-59f6edc7cf4aeed49b4dc024052db4846d5d7fc8"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-60a9f77951c5059616764894e1963d83d478edfe"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-63ebf780ee6c2003eba622686a4bf94c503ad96e"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-68ed2d33c9d32f73343c097303c3d5a6a3467c83"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-6d37c5e6d7efee56319b1316725fdc5aee5a52c3"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-6e980a9d12c392175b5f66683e608626ae983276"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-7233d53f94386b0339b2c2b01ef2d348f5862f1f"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-7281d9eaed0d20b0b6b5e7709c57e78fefe9c315"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-73e0a41066bc09c8e3fbd0dd7628445bcdaabb4a"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-84f22ffca68c6e1590a44aa9f6dd0cef1f680c77"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-93cd6b3f9786ee107a0e2d135b40d13f96e652ed"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-97a338fa892093ed5013a76b96b35dd112df3342"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-9a176b6f7e0dc5f681a1788d8954f76fabd08cad"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-9de2e92150e54982d4e502b18f374f8cd8fd453b"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-a1b2cfcf0997acb13a32fc5c004f57d9e9bc4275"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-a1ed26e6f82ca0e81e3f415bd8b0b8b520d3927b"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-a61a28cf78149518466b87e5463ec5c771dc504e"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-a877fe99fd0e92721d162bc252bf72a4f67ba1ea"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-aa23c18f6badd88a7bec65e8b04f7801ba624ec6"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-adaac86cf1aa1e98e95240c5f92c3708456c3624"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-b281f018cc919301131cf3ed28449cfbd24b6bbf"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-ba0016a62a8576a57f000b90c364847ef6b12dcc"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-ba17346b8e46e6a05aaa7342a959a7c5ab0f1471"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-ba2b1fde90cc70d9abae22c4c4cb051aae8aa148"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-bd9d24f5c7c915174b6ca9d1a3573e16e0edee12"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-bda43d420a3e5d5228a5f5130207a1f11fc1c81f"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-c05c239719a7beeca2c126b7e5ef7251fa615b54"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-c151762e5f37e233142059c1b269ce55434cf6a6"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-cacd0e0c5f7d4169085735400100da4d36397185"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-ccafab6afdc6474610023b47bd7b3e1b9ea4647b"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-d3c3cba3897fafec97665411ea1f94a89bb4de7b"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-d3fcd80cd6f1bb05f5e5084ebb2ee801067863fb"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-dc57e96cd02ba32fa4a99c97b6490e9879d30be5"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-ddfe613d8791b2d377e14fbdffb18b84a89d49b6"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-f3c688876395bf7a529f29f7b91532726cf5cbce"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-f412afea6b01aa53da919a41a65ffbf9885f2d65"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-f67be653815f6c2c10eea55c8009e1167ac9c20b"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-f6c1042f96e15183dcc13b9658d971cc29426d53"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-f9a2773d6502fd4b1ffa73df3c550b0da63af833"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/ssl_server_corpus/05cda1e986096f42698ee2d86ab0a4a3f6a6690b"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "ssl_server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "ssl_server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/ssl_server_corpus/0f65ef472e8308561c77ada56afd4de5932d950a"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "ssl_server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "ssl_server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/ssl_server_corpus/128915cb83e66a736f8a1833c8901eccb81e0656"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "ssl_server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "ssl_server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/ssl_server_corpus/134d3a5e7a1609a583f6282c48ef9b871e0fdc15"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "ssl_server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "ssl_server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/ssl_server_corpus/13fccd43a6b52c62851ea24e8be4f8cfe6c0103d"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "ssl_server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "ssl_server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/ssl_server_corpus/171bc6b14b94c72435d2da2e31e9682f12a3f13c"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "ssl_server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "ssl_server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/ssl_server_corpus/17dea38d21e9282ecd062466cf287ecf5b30c1cf"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "ssl_server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "ssl_server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/ssl_server_corpus/1961eb9d4dd4bf21cbcd9c45a17b1d025eb0d200"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "ssl_server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "ssl_server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/ssl_server_corpus/226ebb5cc16ac42fae3be273de533ac79759ae01"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "ssl_server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "ssl_server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/ssl_server_corpus/2333cf428cb1e2976679ac84e64873bf76c6595e"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "ssl_server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "ssl_server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/ssl_server_corpus/2885553a9e6829265d5f44ea4e24fcf7d6513436"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "ssl_server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "ssl_server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/ssl_server_corpus/28bce9a7cb21f3232239b9b71ef568137bf801f4"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "ssl_server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "ssl_server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/ssl_server_corpus/2a0286615be426d1e7fd5894aadf1a503df05a0a"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "ssl_server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "ssl_server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/ssl_server_corpus/2b4a1f3ebe223d91c042a5e86aff31e460f6cc3f"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "ssl_server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "ssl_server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/ssl_server_corpus/2cfbe809bcf53160ecc0109b2df01a8696a226fd"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "ssl_server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "ssl_server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/ssl_server_corpus/2f770de96db36ef9a71f7eb09b2e8695ac1f0655"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "ssl_server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "ssl_server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/ssl_server_corpus/30ba8ad171657470b5312232387b7da70c387219"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "ssl_server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "ssl_server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/ssl_server_corpus/36548a97a8b847e17a77d1e646c6eb5ec001d84a"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "ssl_server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "ssl_server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/ssl_server_corpus/3c442804f73cfe826a609d97c12ef87852742883"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "ssl_server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "ssl_server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/ssl_server_corpus/3dad758011b16a3771376f9af91242953be3e47b"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "ssl_server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "ssl_server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/ssl_server_corpus/43b56a1adffaf2c3c994679bf2b6fe6414e13df4"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "ssl_server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "ssl_server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/ssl_server_corpus/4446c60ab89c34e5ccc26bec18d7e7d21fe5aec1"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "ssl_server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "ssl_server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/ssl_server_corpus/44924b3866956d0668ec65750c3663279ac84a36"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "ssl_server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "ssl_server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/ssl_server_corpus/44e4370a4eafde61f8e7dc7e4542e0ad5ecf5253"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "ssl_server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "ssl_server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/ssl_server_corpus/44fb8c02117ebd75c97e517624c0abc9f9a76aa7"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "ssl_server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "ssl_server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/ssl_server_corpus/45d76dd1f0a29fce3f8d289b5177263871eb3f83"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "ssl_server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "ssl_server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/ssl_server_corpus/4fcbf18c4135352539eaf445c26f2f8a5da9b68e"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "ssl_server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "ssl_server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/ssl_server_corpus/508ca86c6f4e6ecc30c252ccf74e78256a893b17"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "ssl_server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "ssl_server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/ssl_server_corpus/515d240b860fcd1e77d4a5af291aa4a667d9b609"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "ssl_server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "ssl_server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/ssl_server_corpus/528e9738d5016f01cf59d74f20a8aa3f341ad89e"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "ssl_server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "ssl_server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/ssl_server_corpus/54b636a2bb66ccf8247b53ff76a6400e9f1355d0"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "ssl_server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "ssl_server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/ssl_server_corpus/5cc337c4b33cd703cd354804530f5b72684260d0"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "ssl_server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "ssl_server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/ssl_server_corpus/5ce3ec59111bf328044e41fcf26b3bc542df527e"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "ssl_server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "ssl_server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/ssl_server_corpus/5eaac270339f19cfce4eafa2e69d62adf100ad1c"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "ssl_server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "ssl_server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/ssl_server_corpus/6129382083353687a5c3acb3d4274b811227bf3d"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "ssl_server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "ssl_server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/ssl_server_corpus/616a25f7c4557ef9eb33d4367c6884abc336802d"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "ssl_server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "ssl_server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/ssl_server_corpus/6214e558afbfdb8451e49b62619896492f1a8972"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "ssl_server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "ssl_server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/ssl_server_corpus/6c6a6b2ce74acf8a8b90fc0b268ecc7dc992cd60"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "ssl_server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "ssl_server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/ssl_server_corpus/6f72309e1b23b824e9bbb9abf74a014b78be038e"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "ssl_server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "ssl_server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/ssl_server_corpus/7137ffad853e4dd76c6d6490f37b36e20de7ede0"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "ssl_server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "ssl_server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/ssl_server_corpus/71c9356b6b6c5a3a07033d0fa4ed417fa74a77e5"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "ssl_server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "ssl_server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/ssl_server_corpus/7414938799ed61282f41d5fb1474751ca52b2682"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "ssl_server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "ssl_server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/ssl_server_corpus/75e853eb2ff7e78efb327e114b39baff5a1dd5bb"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "ssl_server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "ssl_server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/ssl_server_corpus/7607c92952b4429e350260d8074c3c460468fd49"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "ssl_server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "ssl_server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/ssl_server_corpus/7677373c082fee56d8cdde009d9db5b117a4c8de"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "ssl_server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "ssl_server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/ssl_server_corpus/76abde5c970743f9fb8bc781e46c431dee2aa104"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "ssl_server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "ssl_server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/ssl_server_corpus/77e0b4e2066853df9d32d475b8788e3d7d19329b"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "ssl_server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "ssl_server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/ssl_server_corpus/78e66840048ddc3c75e0e4abffbb3109af0d750e"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "ssl_server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "ssl_server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/ssl_server_corpus/7dc620eb45764390c7b106362fc4922227415407"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "ssl_server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "ssl_server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/ssl_server_corpus/82ca7a52d589e9dbae37ebf1c59fac7ad876eb7c"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "ssl_server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "ssl_server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/ssl_server_corpus/8997d472f73eec84fea712638abd762818ec92ec"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "ssl_server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "ssl_server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/ssl_server_corpus/933bc3fdc56718d7ac0486c26eecddb6db1c5ba2"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "ssl_server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "ssl_server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/ssl_server_corpus/94431bda60ddc175cf86273ddc07cb41ecf45fa1"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "ssl_server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "ssl_server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/ssl_server_corpus/94c4272b2bb4fa9178eb4ae7dcf4b796fdcb22ac"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "ssl_server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "ssl_server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/ssl_server_corpus/9551c32a794250fb425005d8faf4bd24475acd41"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "ssl_server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "ssl_server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/ssl_server_corpus/9677da7c82f18cec3e0ed2e78aadd6e590271a52"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "ssl_server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "ssl_server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/ssl_server_corpus/9c2e6291aff608f3f5307a7c80db6b17107f0575"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "ssl_server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "ssl_server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/ssl_server_corpus/9c39dc04c7414ca0bb64fb942422bebe83ed8e8f"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "ssl_server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "ssl_server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/ssl_server_corpus/9cc8547d183a4f2ab7022b36376ca4a6230726c6"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "ssl_server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "ssl_server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/ssl_server_corpus/9e19e5e77789c34f99bbe1e6de198610d6765806"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "ssl_server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "ssl_server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/ssl_server_corpus/9f0853ccf6912df9fba2d5fc3a1ddece41c377ac"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "ssl_server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "ssl_server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/ssl_server_corpus/a6d521e501322f052df5a81ee622e0e4942ddcda"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "ssl_server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "ssl_server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/ssl_server_corpus/a9dc20f09890403be510357a7665a8f0db2468a4"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "ssl_server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "ssl_server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/ssl_server_corpus/ac1c60970910880558ae7a2ca2e155cfd7772e05"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "ssl_server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "ssl_server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/ssl_server_corpus/afe36d0187a155fc6e4e5c055c0ed0f3802cf696"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "ssl_server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "ssl_server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/ssl_server_corpus/b12b5fc39edc5407b4a525c414ff6b5e116eee05"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "ssl_server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "ssl_server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/ssl_server_corpus/b5b088c6e3a96f88119a940874ab04cb954797ae"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "ssl_server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "ssl_server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/ssl_server_corpus/b65ad77a43ede3394ba714238829860c4ef4bc9f"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "ssl_server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "ssl_server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/ssl_server_corpus/b6f265cad9d47e2ccd17a73a6d309d8898dc5428"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "ssl_server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "ssl_server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/ssl_server_corpus/b7ca5868bca7ae7d1952f44ca966218b26fb7207"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "ssl_server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "ssl_server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/ssl_server_corpus/bd20809eacabadb9bcc77d31e42d3359117b03f2"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "ssl_server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "ssl_server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/ssl_server_corpus/c328623c4ce12505a54cf1a7a1606e1db36e870d"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "ssl_server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "ssl_server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/ssl_server_corpus/c823e8bd5526d9fe7d51319737f51bd18bdd75e8"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "ssl_server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "ssl_server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/ssl_server_corpus/c9394095d86ff36b69d90f7122592bf51cafe7dd"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "ssl_server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "ssl_server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/ssl_server_corpus/cdbf0d2ae953bec07a67b7152785b548e55f85a4"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "ssl_server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "ssl_server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/ssl_server_corpus/cef06f9c35ee338998703555847d70c26bfc9474"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "ssl_server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "ssl_server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/ssl_server_corpus/cfb40ab8eb7031e978bed2418cdc2f0b8a8d8ec7"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "ssl_server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "ssl_server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/ssl_server_corpus/d30840c3f48f11179ef976ada30477045c6d1e98"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "ssl_server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "ssl_server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/ssl_server_corpus/d5afef69141edc7f4911243cf2deb19c912999cf"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "ssl_server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "ssl_server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/ssl_server_corpus/d5cf71396e1a04da1a7ec266957ffd2de29d6a57"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "ssl_server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "ssl_server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/ssl_server_corpus/d6dd8a2b085db5d33ef24b23502293ce1ce906a3"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "ssl_server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "ssl_server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/ssl_server_corpus/d7676dcd39b7c7cfaac513a98b56fe4ac8ea27d8"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "ssl_server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "ssl_server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/ssl_server_corpus/d8c9e9ef14abc23b36cb493283ba3e2812d9e537"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "ssl_server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "ssl_server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/ssl_server_corpus/d9edb0aa5d2fe4af26ac861770c1530a4075f919"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "ssl_server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "ssl_server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/ssl_server_corpus/da1b52041957334b9ea1371bd2993013118bc82d"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "ssl_server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "ssl_server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/ssl_server_corpus/dca7861424c8f92d3720de5c4488454cde1c39df"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "ssl_server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "ssl_server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/ssl_server_corpus/df3755e257d024ef8ab08f6d5cefcf28148ea4b1"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "ssl_server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "ssl_server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/ssl_server_corpus/e360a49faefb87d671edb99e777f528f52cac9ae"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "ssl_server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "ssl_server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/ssl_server_corpus/e5e789605744d47e5a5d433bb04db1b413bc91a8"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "ssl_server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "ssl_server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/ssl_server_corpus/e6e44a6aa0ece409450c85e43d02c57e338ce1da"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "ssl_server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "ssl_server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/ssl_server_corpus/e8ebd49ee98cf57ca7eb35b6e96ef8866270aac6"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "ssl_server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "ssl_server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/ssl_server_corpus/ea0645f46ccd233337a8389b6118db5b0289f040"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "ssl_server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "ssl_server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/ssl_server_corpus/f6f7687df6b7056d3c819c03c9268e22a956b6b5"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "ssl_server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "ssl_server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/ssl_server_corpus/f725caa73aa9467c5e934c49780fc409b36b251c"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "ssl_server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "ssl_server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/ssl_server_corpus/f8d3326a860091edd4d60725f96f429d13f3abe6"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "ssl_server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "ssl_server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/ssl_server_corpus/f9261344b4049e90e88b5af784dd29b938c5c838"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "ssl_server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "ssl_server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/ssl_server_corpus/f95b97ece3b46815204a8e6d6e94f92ec40a9672"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "ssl_server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "ssl_server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/ssl_server_corpus/f97db29497e4e3225016a6ced837e20a13622f16"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "ssl_server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "ssl_server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/security/corpus/ssl_server_corpus/ff1a900b12f19772f9a86bd5f560a754cdb18d1a"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "ssl_server_fuzzer_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "ssl_server_fuzzer_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/uri/uri_corpus/02d156dc5e6f2c11c90c2e06fcee04adf036a342"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "uri_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "uri_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/uri/uri_corpus/042dc4512fa3d391c5170cf3aa61e6a638f84342"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "uri_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "uri_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/uri/uri_corpus/0e9bbe975f2027e8c39c89f85f667530368e7d11"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "uri_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "uri_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/uri/uri_corpus/1155aa6ea7ef262a81a63692513ea395f84dad6f"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "uri_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "uri_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/uri/uri_corpus/13856a5569ffd085a4d5c07af5f8e9310835a118"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "uri_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "uri_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/uri/uri_corpus/14b57bcbf1e17b1db1de491ef2ba3768f704b7dc"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "uri_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "uri_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/uri/uri_corpus/1794310671a060eead6e5ee66ac978a18ec7e84f"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "uri_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "uri_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/uri/uri_corpus/1d30b2a79afbaf2828ff42b9a9647e942ba1ab80"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "uri_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "uri_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/uri/uri_corpus/1fcf5d9c333b70596cf5ba04d1f7affdf445b971"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "uri_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "uri_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/uri/uri_corpus/23162c8a8936e20b195404c21337ee734d02a6bc"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "uri_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "uri_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/uri/uri_corpus/23f3198b815ca60bdadcaae682b9f965dda387f1"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "uri_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "uri_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/uri/uri_corpus/2ef3893b43f1f60b77b59ce06a6bce9815d78eaf"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "uri_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "uri_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/uri/uri_corpus/356c3c129e203b5c74550b4209764d74b9caefce"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "uri_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "uri_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/uri/uri_corpus/396568fc41c8ccb31ec925b4a862e4d29ead1327"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "uri_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "uri_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/uri/uri_corpus/3b1e7526a99918006b87e499d2beb6c4ac9c3c0c"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "uri_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "uri_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/uri/uri_corpus/3b58860f3451d3e7aad99690a8d39782ca5116fc"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "uri_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "uri_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/uri/uri_corpus/41963cc10752f70c3af7e3d85868efb097a0ea9c"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "uri_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "uri_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/uri/uri_corpus/47b5228404451fc9d4071fa69192514bb4ce33c1"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "uri_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "uri_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/uri/uri_corpus/56a2da4b2e6fb795243901023ed8d0aa083d1aab"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "uri_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "uri_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/uri/uri_corpus/574c2f13858a9a6d724654bd913ede9ae3abf822"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "uri_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "uri_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/uri/uri_corpus/582f789c19033a152094cbf8565f14154a778ddb"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "uri_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "uri_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/uri/uri_corpus/636c5606fc23713a1bae88c8899c0541cfad4fd8"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "uri_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "uri_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/uri/uri_corpus/63fe493b270b17426d77a27cbf3abac5b2c2794a"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "uri_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "uri_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/uri/uri_corpus/655300a902b62662296a8e46bfb04fbcb07182cb"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "uri_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "uri_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/uri/uri_corpus/6ae3acd9d8507b61bf235748026080a4138dba58"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "uri_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "uri_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/uri/uri_corpus/6b70979a70a038ff6607d6cf85485ee95baf58e6"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "uri_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "uri_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/uri/uri_corpus/7314ab3545a7535a26e0e8aad67caea5534d68b1"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "uri_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "uri_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/uri/uri_corpus/7ff4d8b8d1ffd0d42c48bbb91e5856a9ec31aecb"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "uri_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "uri_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/uri/uri_corpus/87daa131e0973b77a232a870ed749ef29cf58e6d"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "uri_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "uri_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/uri/uri_corpus/884dcaee2908ffe5f12b65b8eba81016099c4266"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "uri_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "uri_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/uri/uri_corpus/8d7e944fd5d0ede94097fcc98b47b09a3f9c76cb"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "uri_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "uri_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/uri/uri_corpus/9671149af0b444f59bbdf71340d3441dadd8a7b4"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "uri_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "uri_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/uri/uri_corpus/96c8d266b7dc037288ef305c996608270f72e7fb"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "uri_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "uri_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/uri/uri_corpus/975536c71ade4800415a7e9c2f1b45c35a6d5ea8"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "uri_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "uri_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/uri/uri_corpus/99750aa67d30beaea8af565c829d4999aa8cb91b"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "uri_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "uri_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/uri/uri_corpus/a1140f3f8b5cffc1010221b9a4084a25fb75c1f6"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "uri_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "uri_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/uri/uri_corpus/a1f0f9b75bb354eb063d7cba4fcfa2d0b88d63de"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "uri_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "uri_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/uri/uri_corpus/a296eb3d1d436ed7df7195b10aa3c4de3896f98d"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "uri_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "uri_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/uri/uri_corpus/a8b8e66050b424f1b8c07d46f868199fb7f60e38"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "uri_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "uri_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/uri/uri_corpus/aba1472880406a318ce207ee79815b7acf087757"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "uri_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "uri_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/uri/uri_corpus/af55baf8c8855e563befdf1eefbcbd46c5ddb8d2"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "uri_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "uri_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/uri/uri_corpus/b3c0bf66c2bf5d24ef1daf4cc5a9d6d5bd0e8bfd"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "uri_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "uri_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/uri/uri_corpus/c28a47409cf5d95bb372238d01e73d8b831408e4"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "uri_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "uri_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/uri/uri_corpus/c3ef1d41888063a08700c3add1e4465aabcf8807"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "uri_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "uri_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/uri/uri_corpus/c550a76af21f9b9cc92a386d5c8998b26f8f2e4d"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "uri_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "uri_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/uri/uri_corpus/c79721406d0ab80495f186fd88e37fba98637ae9"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "uri_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "uri_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/uri/uri_corpus/ceb4e2264ba7a8d5be47d276b37ec09489e00245"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "uri_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "uri_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/uri/uri_corpus/cf4395958f5bfb46fd6f535a39657d016c75114c"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "uri_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "uri_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/uri/uri_corpus/d46668372b7e20154a89409a7430a28e642afdca"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "uri_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "uri_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/uri/uri_corpus/d6fe7412a0a1d1c733160246f3fa425f4f97682a"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "uri_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "uri_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/uri/uri_corpus/dns.txt"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "uri_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "uri_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/uri/uri_corpus/e241f29957b0e30ec11aaaf91b2339f7015fa5fd"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "uri_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "uri_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/uri/uri_corpus/ea02d9fea9bad5b89cf353a0169238f584177e71"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "uri_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "uri_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/uri/uri_corpus/ec4731dddf94ed3ea92ae4d5a71f145ab6e3f6ee"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "uri_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "uri_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/uri/uri_corpus/ed2f78646f19fc47dd85ff0877c232b71913ece2"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "uri_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "uri_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/uri/uri_corpus/f6889f4a6350fea1596a3adea5cdac02bd5d1ff3"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "uri_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "uri_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/uri/uri_corpus/f6f3bd030f0d321efe7c51ca3f057de23509af67"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "uri_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "uri_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/uri/uri_corpus/f97598cff03306af3c70400608fec47268b5075d"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "uri_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "uri_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/uri/uri_corpus/f9e1ec1fc642b575bc9955618b7065747f56b101"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "uri_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "uri_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/uri/uri_corpus/fe0630a3aeed2ec6f474f362e4c839478290d5c4"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "uri_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "uri_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/uri/uri_corpus/ipv4.txt"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "uri_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "uri_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/uri/uri_corpus/ipv6.txt"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "uri_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "uri_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
- },
+ },
{
"args": [
"test/core/uri/uri_corpus/unix.txt"
- ],
+ ],
"ci_platforms": [
"linux"
- ],
- "cpu_cost": 0.1,
+ ],
+ "cpu_cost": 0.1,
"exclude_configs": [
"tsan"
- ],
+ ],
"exclude_iomgrs": [
"uv"
- ],
- "flaky": false,
- "language": "c++",
- "name": "uri_fuzzer_test_one_entry",
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "uri_fuzzer_test_one_entry",
"platforms": [
- "mac",
+ "mac",
"linux"
- ],
+ ],
"uses_polling": false
}
]
--- /dev/null
+# Copyright 2020 The gRPC Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+"""Download and unzip the target file to the destination."""
+
+from __future__ import print_function
+
+import os
+import sys
+import zipfile
+import requests
+import tempfile
+
+
+def main():
+ if len(sys.argv) != 3:
+ print("Usage: python download_and_unzip.py [zipfile-url] [destination]")
+ sys.exit(1)
+ download_url = sys.argv[1]
+ destination = sys.argv[2]
+
+ with tempfile.TemporaryFile() as tmp_file:
+ r = requests.get(download_url)
+ if r.status_code != requests.codes.ok:
+ print("Download %s failed with [%d] \"%s\"" %
+ (download_url, r.status_code, r.text()))
+ sys.exit(1)
+ else:
+ tmp_file.write(r.content)
+ print("Successfully downloaded from %s", download_url)
+ with zipfile.ZipFile(tmp_file, 'r') as target_zip_file:
+ target_zip_file.extractall(destination)
+ print("Successfully unzip to %s" % destination)
+
+
+if __name__ == "__main__":
+ main()
self.end_headers()
p = allocate_port(self)
self.log_message('allocated port %d' % p)
- self.wfile.write(bytes('%d' % p))
+ self.wfile.write(str(p).encode('ascii'))
elif self.path[0:6] == '/drop/':
self.send_response(200)
self.send_header('Content-Type', 'text/plain')
self.send_response(200)
self.send_header('Content-Type', 'text/plain')
self.end_headers()
- self.wfile.write(bytes('%d' % _MY_VERSION))
+ self.wfile.write(str(_MY_VERSION).encode('ascii'))
elif self.path == '/dump':
# yaml module is not installed on Macs and Windows machines by default
# so we import it lazily (/dump action is only used for debugging)
'in_use': dict((k, now - v) for k, v in in_use.items())
})
mu.release()
- self.wfile.write(bytes(out))
+ self.wfile.write(out.encode('ascii'))
elif self.path == '/quitquitquit':
self.send_response(200)
self.end_headers()
if not args.skip_upload:
# BigQuery sometimes fails with large uploads, so batch 1,000 rows at a time.
- for i in range((len(bq_rows) / 1000) + 1):
- _upload_results_to_bq(bq_rows[i * 1000:(i + 1) * 1000])
+ MAX_ROWS = 1000
+ for i in range(0, len(bq_rows), MAX_ROWS):
+ _upload_results_to_bq(bq_rows[i:i + MAX_ROWS])
else:
print('Skipped upload to bigquery.')
return ['go', 'run', 'server.go'] + args
def global_env(self):
- return {}
+ return {'GO111MODULE': 'on'}
def unimplemented_test_cases(self):
return _SKIP_COMPRESSION
def unimplemented_test_cases(self):
return _SKIP_SERVER_COMPRESSION + \
_SKIP_DATA_FRAME_PADDING + \
- _SKIP_SPECIAL_STATUS_MESSAGE + \
_SKIP_GOOGLE_DEFAULT_CREDS + \
_SKIP_COMPUTE_ENGINE_CHANNEL_CREDS
out.append(
self.config.job_spec(
['test/core/iomgr/ios/CFStreamTests/build_and_run_tests.sh'],
- timeout_seconds=20 * 60,
+ timeout_seconds=60 * 60,
shortname='ios-test-cfstream-tests',
cpu_cost=1e6,
environ=_FORCE_ENVIRON_FOR_WRAPPERS))
environ={'SCHEME': 'PerfTestsPosix'}))
out.append(
self.config.job_spec(['test/cpp/ios/build_and_run_tests.sh'],
- timeout_seconds=30 * 60,
+ timeout_seconds=60 * 60,
shortname='ios-cpp-test-cronet',
cpu_cost=1e6,
environ=_FORCE_ENVIRON_FOR_WRAPPERS))
# aren't enabled automatically for all languages.
#
# TODO: Move them into _TEST_CASES when support is ready in all languages.
-_ADDITIONAL_TEST_CASES = ['path_matching', 'header_matching']
+_ADDITIONAL_TEST_CASES = [
+ 'path_matching',
+ 'header_matching',
+ 'circuit_breaking',
+]
def parse_test_cases(arg):
help='Command to launch xDS test client. {server_uri}, {stats_port} and '
'{qps} references will be replaced using str.format(). GRPC_XDS_BOOTSTRAP '
'will be set for the command')
+argp.add_argument(
+ '--client_hosts',
+ default=None,
+ help='Comma-separated list of hosts running client processes. If set, '
+ '--client_cmd is ignored and client processes are assumed to be running on '
+ 'the specified hosts.')
argp.add_argument('--zone', default='us-central1-a')
argp.add_argument('--secondary_zone',
default='us-west1-b',
if args.verbose:
logger.setLevel(logging.DEBUG)
+CLIENT_HOSTS = []
+if args.client_hosts:
+ CLIENT_HOSTS = args.client_hosts.split(',')
+
_DEFAULT_SERVICE_PORT = 80
_WAIT_FOR_BACKEND_SEC = args.wait_for_backend_sec
_WAIT_FOR_OPERATION_SEC = 1200
def get_client_stats(num_rpcs, timeout_sec):
- with grpc.insecure_channel('localhost:%d' % args.stats_port) as channel:
- stub = test_pb2_grpc.LoadBalancerStatsServiceStub(channel)
- request = messages_pb2.LoadBalancerStatsRequest()
- request.num_rpcs = num_rpcs
- request.timeout_sec = timeout_sec
- rpc_timeout = timeout_sec + _CONNECTION_TIMEOUT_SEC
- response = stub.GetClientStats(request,
- wait_for_ready=True,
- timeout=rpc_timeout)
- logger.debug('Invoked GetClientStats RPC: %s', response)
- return response
+ if CLIENT_HOSTS:
+ hosts = CLIENT_HOSTS
+ else:
+ hosts = ['localhost']
+ for host in hosts:
+ with grpc.insecure_channel('%s:%d' %
+ (host, args.stats_port)) as channel:
+ stub = test_pb2_grpc.LoadBalancerStatsServiceStub(channel)
+ request = messages_pb2.LoadBalancerStatsRequest()
+ request.num_rpcs = num_rpcs
+ request.timeout_sec = timeout_sec
+ rpc_timeout = timeout_sec + _CONNECTION_TIMEOUT_SEC
+ logger.debug('Invoking GetClientStats RPC to %s:%d:', host,
+ args.stats_port)
+ response = stub.GetClientStats(request,
+ wait_for_ready=True,
+ timeout=rpc_timeout)
+ logger.debug('Invoked GetClientStats RPC to %s: %s', host, response)
+ return response
+
+
+def get_client_accumulated_stats():
+ if CLIENT_HOSTS:
+ hosts = CLIENT_HOSTS
+ else:
+ hosts = ['localhost']
+ for host in hosts:
+ with grpc.insecure_channel('%s:%d' %
+ (host, args.stats_port)) as channel:
+ stub = test_pb2_grpc.LoadBalancerStatsServiceStub(channel)
+ request = messages_pb2.LoadBalancerAccumulatedStatsRequest()
+ logger.debug('Invoking GetClientAccumulatedStats RPC to %s:%d:',
+ host, args.stats_port)
+ response = stub.GetClientAccumulatedStats(
+ request, wait_for_ready=True, timeout=_CONNECTION_TIMEOUT_SEC)
+ logger.debug('Invoked GetClientAccumulatedStats RPC to %s: %s',
+ host, response)
+ return response
+
+
+def configure_client(rpc_types, metadata):
+ if CLIENT_HOSTS:
+ hosts = CLIENT_HOSTS
+ else:
+ hosts = ['localhost']
+ for host in hosts:
+ with grpc.insecure_channel('%s:%d' %
+ (host, args.stats_port)) as channel:
+ stub = test_pb2_grpc.XdsUpdateClientConfigureServiceStub(channel)
+ request = messages_pb2.ClientConfigureRequest()
+ request.types.extend(rpc_types)
+ for rpc_type, md_key, md_value in metadata:
+ md = request.metadata.add()
+ md.type = rpc_type
+ md.key = md_key
+ md.value = md_value
+ logger.debug(
+ 'Invoking XdsUpdateClientConfigureService RPC to %s:%d: %s',
+ host, args.stats_port, request)
+ stub.Configure(request,
+ wait_for_ready=True,
+ timeout=_CONNECTION_TIMEOUT_SEC)
+ logger.debug('Invoked XdsUpdateClientConfigureService RPC to %s',
+ host)
class RpcDistributionError(Exception):
allow_failures=False)
+def wait_until_rpcs_in_flight(rpc_type, timeout_sec, num_rpcs, threshold):
+ '''Block until the test client reaches the state with the given number
+ of RPCs being outstanding stably.
+
+ Args:
+ rpc_type: A string indicating the RPC method to check for. Either
+ 'UnaryCall' or 'EmptyCall'.
+ timeout_sec: Maximum number of seconds to wait until the desired state
+ is reached.
+ num_rpcs: Expected number of RPCs to be in-flight.
+ threshold: Number within [0,100], the tolerable percentage by which
+ the actual number of RPCs in-flight can differ from the expected number.
+ '''
+ if threshold < 0 or threshold > 100:
+ raise ValueError('Value error: Threshold should be between 0 to 100')
+ threshold_fraction = threshold / 100.0
+ start_time = time.time()
+ error_msg = None
+ logger.debug(
+ 'Waiting for %d sec until %d %s RPCs (with %d%% tolerance) in-flight' %
+ (timeout_sec, num_rpcs, rpc_type, threshold))
+ while time.time() - start_time <= timeout_sec:
+ error_msg = _check_rpcs_in_flight(rpc_type, num_rpcs, threshold,
+ threshold_fraction)
+ if error_msg:
+ time.sleep(2)
+ else:
+ break
+ # Ensure the number of outstanding RPCs is stable.
+ if not error_msg:
+ time.sleep(5)
+ error_msg = _check_rpcs_in_flight(rpc_type, num_rpcs, threshold,
+ threshold_fraction)
+ if error_msg:
+ raise Exception("Wrong number of %s RPCs in-flight: %s" %
+ (rpc_type, error_msg))
+
+
+def _check_rpcs_in_flight(rpc_type, num_rpcs, threshold, threshold_fraction):
+ error_msg = None
+ stats = get_client_accumulated_stats()
+ rpcs_started = stats.num_rpcs_started_by_method[rpc_type]
+ rpcs_succeeded = stats.num_rpcs_succeeded_by_method[rpc_type]
+ rpcs_failed = stats.num_rpcs_failed_by_method[rpc_type]
+ rpcs_in_flight = rpcs_started - rpcs_succeeded - rpcs_failed
+ if rpcs_in_flight < (num_rpcs * (1 - threshold_fraction)):
+ error_msg = ('actual(%d) < expected(%d - %d%%)' %
+ (rpcs_in_flight, num_rpcs, threshold))
+ elif rpcs_in_flight > (num_rpcs * (1 + threshold_fraction)):
+ error_msg = ('actual(%d) > expected(%d + %d%%)' %
+ (rpcs_in_flight, num_rpcs, threshold))
+ return error_msg
+
+
def compare_distributions(actual_distribution, expected_distribution,
threshold):
"""Compare if two distributions are similar.
original_backend_instances = get_instance_names(gcp, instance_group)
alternate_backend_instances = get_instance_names(gcp,
same_zone_instance_group)
- patch_backend_instances(gcp, alternate_backend_service,
- [same_zone_instance_group])
+ patch_backend_service(gcp, alternate_backend_service,
+ [same_zone_instance_group])
wait_for_healthy_backends(gcp, original_backend_service, instance_group)
wait_for_healthy_backends(gcp, alternate_backend_service,
same_zone_instance_group)
_WAIT_FOR_URL_MAP_PATCH_SEC)
finally:
patch_url_map_backend_service(gcp, original_backend_service)
- patch_backend_instances(gcp, alternate_backend_service, [])
+ patch_backend_service(gcp, alternate_backend_service, [])
def test_gentle_failover(gcp,
if num_primary_instances < min_instances_for_gentle_failover:
resize_instance_group(gcp, primary_instance_group,
min_instances_for_gentle_failover)
- patch_backend_instances(
+ patch_backend_service(
gcp, backend_service,
[primary_instance_group, secondary_instance_group])
primary_instance_names = get_instance_names(gcp, primary_instance_group)
else:
raise e
finally:
- patch_backend_instances(gcp, backend_service, [primary_instance_group])
+ patch_backend_service(gcp, backend_service, [primary_instance_group])
resize_instance_group(gcp, primary_instance_group,
num_primary_instances)
instance_names = get_instance_names(gcp, primary_instance_group)
same_zone_instance_group):
logger.info('Running test_remove_instance_group')
try:
- patch_backend_instances(gcp,
- backend_service,
- [instance_group, same_zone_instance_group],
- balancing_mode='RATE')
+ patch_backend_service(gcp,
+ backend_service,
+ [instance_group, same_zone_instance_group],
+ balancing_mode='RATE')
wait_for_healthy_backends(gcp, backend_service, instance_group)
wait_for_healthy_backends(gcp, backend_service,
same_zone_instance_group)
same_zone_instance_names, _WAIT_FOR_STATS_SEC)
remaining_instance_group = instance_group
remaining_instance_names = instance_names
- patch_backend_instances(gcp,
- backend_service, [remaining_instance_group],
- balancing_mode='RATE')
+ patch_backend_service(gcp,
+ backend_service, [remaining_instance_group],
+ balancing_mode='RATE')
wait_until_all_rpcs_go_to_given_backends(remaining_instance_names,
_WAIT_FOR_BACKEND_SEC)
finally:
- patch_backend_instances(gcp, backend_service, [instance_group])
+ patch_backend_service(gcp, backend_service, [instance_group])
wait_until_all_rpcs_go_to_given_backends(instance_names,
_WAIT_FOR_BACKEND_SEC)
'Running secondary_locality_gets_no_requests_on_partial_primary_failure'
)
try:
- patch_backend_instances(
+ patch_backend_service(
gcp, backend_service,
[primary_instance_group, secondary_instance_group])
wait_for_healthy_backends(gcp, backend_service, primary_instance_group)
else:
raise e
finally:
- patch_backend_instances(gcp, backend_service, [primary_instance_group])
+ patch_backend_service(gcp, backend_service, [primary_instance_group])
def test_secondary_locality_gets_requests_on_primary_failure(
swapped_primary_and_secondary=False):
logger.info('Running secondary_locality_gets_requests_on_primary_failure')
try:
- patch_backend_instances(
+ patch_backend_service(
gcp, backend_service,
[primary_instance_group, secondary_instance_group])
wait_for_healthy_backends(gcp, backend_service, primary_instance_group)
else:
raise e
finally:
- patch_backend_instances(gcp, backend_service, [primary_instance_group])
+ patch_backend_service(gcp, backend_service, [primary_instance_group])
def prepare_services_for_urlmap_tests(gcp, original_backend_service,
logger.info('waiting for original backends to become healthy')
wait_for_healthy_backends(gcp, original_backend_service, instance_group)
- patch_backend_instances(gcp, alternate_backend_service,
- [same_zone_instance_group])
+ patch_backend_service(gcp, alternate_backend_service,
+ [same_zone_instance_group])
logger.info('waiting for alternate to become healthy')
wait_for_healthy_backends(gcp, alternate_backend_service,
same_zone_instance_group)
break
finally:
patch_url_map_backend_service(gcp, original_backend_service)
- patch_backend_instances(gcp, alternate_backend_service, [])
+ patch_backend_service(gcp, alternate_backend_service, [])
def test_path_matching(gcp, original_backend_service, instance_group,
break
finally:
patch_url_map_backend_service(gcp, original_backend_service)
- patch_backend_instances(gcp, alternate_backend_service, [])
+ patch_backend_service(gcp, alternate_backend_service, [])
def test_header_matching(gcp, original_backend_service, instance_group,
break
finally:
patch_url_map_backend_service(gcp, original_backend_service)
- patch_backend_instances(gcp, alternate_backend_service, [])
+ patch_backend_service(gcp, alternate_backend_service, [])
+
+
+def test_circuit_breaking(gcp, original_backend_service, instance_group,
+ same_zone_instance_group):
+ '''
+ Since backend service circuit_breakers configuration cannot be unset,
+ which causes trouble for restoring validate_for_proxy flag in target
+ proxy/global forwarding rule. This test uses dedicated backend sevices.
+ The url_map and backend services undergoes the following state changes:
+
+ Before test:
+ original_backend_service -> [instance_group]
+ extra_backend_service -> []
+ more_extra_backend_service -> []
+
+ url_map -> [original_backend_service]
+
+ In test:
+ extra_backend_service (with circuit_breakers) -> [instance_group]
+ more_extra_backend_service (with circuit_breakers) -> [same_zone_instance_group]
+
+ url_map -> [extra_backend_service, more_extra_backend_service]
+
+ After test:
+ original_backend_service -> [instance_group]
+ extra_backend_service (with circuit_breakers) -> []
+ more_extra_backend_service (with circuit_breakers) -> []
+
+ url_map -> [original_backend_service]
+ '''
+ logger.info('Running test_circuit_breaking')
+ additional_backend_services = []
+ try:
+ # TODO(chengyuanzhang): Dedicated backend services created for circuit
+ # breaking test. Once the issue for unsetting backend service circuit
+ # breakers is resolved or configuring backend service circuit breakers is
+ # enabled for config validation, these dedicated backend services can be
+ # eliminated.
+ extra_backend_service_name = _BASE_BACKEND_SERVICE_NAME + '-extra' + gcp_suffix
+ more_extra_backend_service_name = _BASE_BACKEND_SERVICE_NAME + '-more-extra' + gcp_suffix
+ extra_backend_service = add_backend_service(gcp,
+ extra_backend_service_name)
+ additional_backend_services.append(extra_backend_service)
+ more_extra_backend_service = add_backend_service(
+ gcp, more_extra_backend_service_name)
+ additional_backend_services.append(more_extra_backend_service)
+ # The config validation for proxyless doesn't allow setting
+ # circuit_breakers. Disable validate validate_for_proxyless
+ # for this test. This can be removed when validation
+ # accepts circuit_breakers.
+ logger.info('disabling validate_for_proxyless in target proxy')
+ set_validate_for_proxyless(gcp, False)
+ extra_backend_service_max_requests = 500
+ more_extra_backend_service_max_requests = 1000
+ patch_backend_service(gcp,
+ extra_backend_service, [instance_group],
+ circuit_breakers={
+ 'maxRequests':
+ extra_backend_service_max_requests
+ })
+ logger.info('Waiting for extra backends to become healthy')
+ wait_for_healthy_backends(gcp, extra_backend_service, instance_group)
+ patch_backend_service(gcp,
+ more_extra_backend_service,
+ [same_zone_instance_group],
+ circuit_breakers={
+ 'maxRequests':
+ more_extra_backend_service_max_requests
+ })
+ logger.info('Waiting for more extra backend to become healthy')
+ wait_for_healthy_backends(gcp, more_extra_backend_service,
+ same_zone_instance_group)
+ extra_backend_instances = get_instance_names(gcp, instance_group)
+ more_extra_backend_instances = get_instance_names(
+ gcp, same_zone_instance_group)
+ route_rules = [
+ {
+ 'priority': 0,
+ # UnaryCall -> extra_backend_service
+ 'matchRules': [{
+ 'fullPathMatch': '/grpc.testing.TestService/UnaryCall'
+ }],
+ 'service': extra_backend_service.url
+ },
+ {
+ 'priority': 1,
+ # EmptyCall -> more_extra_backend_service
+ 'matchRules': [{
+ 'fullPathMatch': '/grpc.testing.TestService/EmptyCall'
+ }],
+ 'service': more_extra_backend_service.url
+ },
+ ]
+
+ # Make client send UNARY_CALL and EMPTY_CALL.
+ configure_client([
+ messages_pb2.ClientConfigureRequest.RpcType.UNARY_CALL,
+ messages_pb2.ClientConfigureRequest.RpcType.EMPTY_CALL
+ ], [])
+ logger.info('Patching url map with %s', route_rules)
+ patch_url_map_backend_service(gcp,
+ extra_backend_service,
+ route_rules=route_rules)
+ logger.info('Waiting for traffic to go to all backends')
+ wait_until_all_rpcs_go_to_given_backends(
+ extra_backend_instances + more_extra_backend_instances,
+ _WAIT_FOR_STATS_SEC)
+
+ # Make all calls keep-open.
+ configure_client([
+ messages_pb2.ClientConfigureRequest.RpcType.UNARY_CALL,
+ messages_pb2.ClientConfigureRequest.RpcType.EMPTY_CALL
+ ], [(messages_pb2.ClientConfigureRequest.RpcType.UNARY_CALL,
+ 'rpc-behavior', 'keep-open'),
+ (messages_pb2.ClientConfigureRequest.RpcType.EMPTY_CALL,
+ 'rpc-behavior', 'keep-open')])
+ wait_until_rpcs_in_flight(
+ 'UNARY_CALL', (_WAIT_FOR_BACKEND_SEC +
+ int(extra_backend_service_max_requests / args.qps)),
+ extra_backend_service_max_requests, 1)
+ wait_until_rpcs_in_flight(
+ 'EMPTY_CALL',
+ (_WAIT_FOR_BACKEND_SEC +
+ int(more_extra_backend_service_max_requests / args.qps)),
+ more_extra_backend_service_max_requests, 1)
+
+ # Increment circuit breakers max_requests threshold.
+ extra_backend_service_max_requests = 800
+ patch_backend_service(gcp,
+ extra_backend_service, [instance_group],
+ circuit_breakers={
+ 'maxRequests':
+ extra_backend_service_max_requests
+ })
+ wait_until_rpcs_in_flight(
+ 'UNARY_CALL', (_WAIT_FOR_BACKEND_SEC +
+ int(extra_backend_service_max_requests / args.qps)),
+ extra_backend_service_max_requests, 1)
+ finally:
+ patch_url_map_backend_service(gcp, original_backend_service)
+ patch_backend_service(gcp, original_backend_service, [instance_group])
+ for backend_service in additional_backend_services:
+ delete_backend_service(gcp, backend_service)
+ set_validate_for_proxyless(gcp, True)
+
+
+def set_validate_for_proxyless(gcp, validate_for_proxyless):
+ if not gcp.alpha_compute:
+ logger.debug(
+ 'Not setting validateForProxy because alpha is not enabled')
+ return
+ # This function deletes global_forwarding_rule and target_proxy, then
+ # recreate target_proxy with validateForProxyless=False. This is necessary
+ # because patching target_grpc_proxy isn't supported.
+ delete_global_forwarding_rule(gcp)
+ delete_target_proxy(gcp)
+ create_target_proxy(gcp, gcp.target_proxy.name, validate_for_proxyless)
+ create_global_forwarding_rule(gcp, gcp.global_forwarding_rule.name,
+ [gcp.service_port])
def get_serving_status(instance, service_port):
wait_for_global_operation(gcp, result['name'])
-def create_target_proxy(gcp, name):
+def create_target_proxy(gcp, name, validate_for_proxyless=True):
if gcp.alpha_compute:
config = {
'name': name,
'url_map': gcp.url_map.url,
- 'validate_for_proxyless': True,
+ 'validate_for_proxyless': validate_for_proxyless
}
logger.debug('Sending GCP request with body=%s', config)
result = gcp.alpha_compute.targetGrpcProxies().insert(
logger.info('Delete failed: %s', http_error)
+def delete_backend_service(gcp, backend_service):
+ try:
+ result = gcp.compute.backendServices().delete(
+ project=gcp.project, backendService=backend_service.name).execute(
+ num_retries=_GCP_API_RETRIES)
+ wait_for_global_operation(gcp, result['name'])
+ except googleapiclient.errors.HttpError as http_error:
+ logger.info('Delete failed: %s', http_error)
+
+
def delete_backend_services(gcp):
for backend_service in gcp.backend_services:
- try:
- result = gcp.compute.backendServices().delete(
- project=gcp.project,
- backendService=backend_service.name).execute(
- num_retries=_GCP_API_RETRIES)
- wait_for_global_operation(gcp, result['name'])
- except googleapiclient.errors.HttpError as http_error:
- logger.info('Delete failed: %s', http_error)
+ delete_backend_service(gcp, backend_service)
def delete_firewall(gcp):
logger.info('Delete failed: %s', http_error)
-def patch_backend_instances(gcp,
- backend_service,
- instance_groups,
- balancing_mode='UTILIZATION'):
+def patch_backend_service(gcp,
+ backend_service,
+ instance_groups,
+ balancing_mode='UTILIZATION',
+ circuit_breakers=None):
if gcp.alpha_compute:
compute_to_use = gcp.alpha_compute
else:
'balancingMode': balancing_mode,
'maxRate': 1 if balancing_mode == 'RATE' else None
} for instance_group in instance_groups],
+ 'circuitBreakers': circuit_breakers,
}
logger.debug('Sending GCP request with body=%s', config)
result = compute_to_use.backendServices().patch(
gcp_suffix = args.gcp_suffix
health_check_name = _BASE_HEALTH_CHECK_NAME + gcp_suffix
if not args.use_existing_gcp_resources:
- num_attempts = 5
+ if gcp_suffix:
+ num_attempts = 5
+ else:
+ # If not given a suffix, do not retry if already in use.
+ num_attempts = 1
for i in range(num_attempts):
try:
logger.info('Using GCP suffix %s', gcp_suffix)
startup_script)
instance_group = add_instance_group(gcp, args.zone, instance_group_name,
_INSTANCE_GROUP_SIZE)
- patch_backend_instances(gcp, backend_service, [instance_group])
+ patch_backend_service(gcp, backend_service, [instance_group])
same_zone_instance_group = add_instance_group(
gcp, args.zone, same_zone_instance_group_name, _INSTANCE_GROUP_SIZE)
secondary_zone_instance_group = add_instance_group(
bootstrap_server_features)).encode('utf-8'))
bootstrap_path = bootstrap_file.name
client_env['GRPC_XDS_BOOTSTRAP'] = bootstrap_path
+ client_env['GRPC_XDS_EXPERIMENTAL_CIRCUIT_BREAKING'] = 'true'
test_results = {}
failed_tests = []
for test_case in args.test_case:
# resources).
fail_on_failed_rpc = ''
- client_cmd_formatted = args.client_cmd.format(
- server_uri=server_uri,
- stats_port=args.stats_port,
- qps=args.qps,
- fail_on_failed_rpc=fail_on_failed_rpc,
- rpcs_to_send=rpcs_to_send,
- metadata_to_send=metadata_to_send)
- logger.debug('running client: %s', client_cmd_formatted)
- client_cmd = shlex.split(client_cmd_formatted)
try:
- client_process = subprocess.Popen(client_cmd,
- env=client_env,
- stderr=subprocess.STDOUT,
- stdout=test_log_file)
+ if not CLIENT_HOSTS:
+ client_cmd_formatted = args.client_cmd.format(
+ server_uri=server_uri,
+ stats_port=args.stats_port,
+ qps=args.qps,
+ fail_on_failed_rpc=fail_on_failed_rpc,
+ rpcs_to_send=rpcs_to_send,
+ metadata_to_send=metadata_to_send)
+ logger.debug('running client: %s', client_cmd_formatted)
+ client_cmd = shlex.split(client_cmd_formatted)
+ client_process = subprocess.Popen(client_cmd,
+ env=client_env,
+ stderr=subprocess.STDOUT,
+ stdout=test_log_file)
if test_case == 'backends_restart':
test_backends_restart(gcp, backend_service, instance_group)
elif test_case == 'change_backend_service':
test_header_matching(gcp, backend_service, instance_group,
alternate_backend_service,
same_zone_instance_group)
+ elif test_case == 'circuit_breaking':
+ test_circuit_breaking(gcp, backend_service, instance_group,
+ same_zone_instance_group)
else:
logger.error('Unknown test case: %s', test_case)
sys.exit(1)
- if client_process.poll() is not None:
+ if client_process and client_process.poll() is not None:
raise Exception(
'Client process exited prematurely with exit code %d' %
client_process.returncode)
result.state = 'FAILED'
result.message = str(e)
finally:
- if client_process and not client_process.returncode:
- client_process.terminate()
+ if client_process:
+ if client_process.returncode:
+ logger.info('Client exited with code %d' %
+ client_process.returncode)
+ else:
+ client_process.terminate()
test_log_file.close()
# Workaround for Python 3, as report_utils will invoke decode() on
# result.message, which has a default value of ''.
_BAZEL_SKYLIB_DEP_NAME = 'bazel_skylib'
_BAZEL_TOOLCHAINS_DEP_NAME = 'bazel_toolchains'
+_BAZEL_COMPDB_DEP_NAME = 'bazel_compdb'
_TWISTED_TWISTED_DEP_NAME = 'com_github_twisted_twisted'
_YAML_PYYAML_DEP_NAME = 'com_github_yaml_pyyaml'
_TWISTED_INCREMENTAL_DEP_NAME = 'com_github_twisted_incremental'
'com_google_protobuf',
'com_google_googletest',
'rules_cc',
- 'com_github_gflags_gflags',
'com_github_google_benchmark',
'com_github_cares_cares',
'com_google_absl',
'envoy_api',
_BAZEL_SKYLIB_DEP_NAME,
_BAZEL_TOOLCHAINS_DEP_NAME,
+ _BAZEL_COMPDB_DEP_NAME,
_TWISTED_TWISTED_DEP_NAME,
_YAML_PYYAML_DEP_NAME,
_TWISTED_INCREMENTAL_DEP_NAME,
'io_opencensus_cpp',
_BAZEL_SKYLIB_DEP_NAME,
_BAZEL_TOOLCHAINS_DEP_NAME,
+ _BAZEL_COMPDB_DEP_NAME,
_TWISTED_TWISTED_DEP_NAME,
_YAML_PYYAML_DEP_NAME,
_TWISTED_INCREMENTAL_DEP_NAME,
exec(bazel_file) in build_rules
for name in _GRPC_DEP_NAMES:
assert name in names_and_urls.keys()
-assert len(_GRPC_DEP_NAMES) == len(names_and_urls.keys())
+if len(_GRPC_DEP_NAMES) != len(names_and_urls.keys()):
+ assert False, "Diff: " + (str(set(_GRPC_DEP_NAMES) - set(names_and_urls)) +
+ "," +
+ str(set(names_and_urls) - set(_GRPC_DEP_NAMES)))
# There are some "bazel-only" deps that are exceptions to this sanity check,
# we don't require that there is a corresponding git module for these.
git submodule | awk '{ print $1 }' | sort > "$submodules"
cat << EOF | awk '{ print $1 }' | sort > "$want_submodules"
- df3ea785d8c30a9503321a3d35ee7d35808f190d third_party/abseil-cpp (heads/master)
+ 0f3bb466b868b523cf1dc9b2aaaed65c77b28862 third_party/abseil-cpp (heads/master)
090faecb454fbd6e6e17a75ef8146acb037118d4 third_party/benchmark (v1.5.0)
73594cde8c9a52a102c4341c244c833aa61b9c06 third_party/bloaty (remotes/origin/wide-14-g73594cd)
- 88aeb757f1a415c71fb4cbf5af936ecae4bc8179 third_party/boringssl-with-bazel (remotes/origin/master-with-bazel)
+ 29c6e0e27268f5a43e039cd2ed4e849d6b736fc1 third_party/boringssl-with-bazel (remotes/origin/master-with-bazel)
e982924acee7f7313b4baa4ee5ec000c5e373c30 third_party/cares/cares (cares-1_15_0)
9997e1137cdb59e622af13e57ca915a2f3c9f84f third_party/envoy-api (heads/master)
- 28f50e0fed19872e0fd50dd23ce2ee8cd759338e third_party/gflags (v2.2.0-5-g30dbc81)
80ed4d0bbf65d57cc267dfc63bd2584557f11f9b third_party/googleapis (common-protos-1_3_1-915-g80ed4d0bb)
c9ccac7cb7345901884aabf5d1a786cfa6e2f397 third_party/googletest (6e2f397)
15ae750151ac9341e5945eb38f8982d59fb99201 third_party/libuv (v1.34.0)
- script: tools/distrib/check_pytype.sh
- script: tools/distrib/clang_format_code.sh
- script: tools/distrib/clang_tidy_code.sh
+ # ClangTidy needs to run exclusively because it uses files under the bazel output
+ # directory and this will be removed by another bazel invocation.
+ cpu_cost: 1000
- script: tools/distrib/pylint_code.sh
- script: tools/distrib/python/check_grpcio_tools.py
- script: tools/distrib/yapf_code.sh --diff